From 9938d52ced637080e0d423bac4efcfa24ac49558 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Thu, 6 Mar 2025 19:02:40 +0200 Subject: [PATCH 1/6] Audio: ASRC: Duplicate HiFi5 version from HiFi3 version There are not functional changes, just duplicate asrc_farrow_hifi3.c to asrc_farrow_hifi5.c and update the SOF_USE_HIFI() macros and CMakeLists.txt to handle the files. The copyright texts are updated also. Signed-off-by: Seppo Ingalsuo --- src/audio/asrc/CMakeLists.txt | 2 +- src/audio/asrc/asrc_farrow_hifi3.c | 4 +- src/audio/asrc/asrc_farrow_hifi5.c | 404 +++++++++++++++++++++++++++++ zephyr/CMakeLists.txt | 1 + 4 files changed, 408 insertions(+), 3 deletions(-) create mode 100644 src/audio/asrc/asrc_farrow_hifi5.c diff --git a/src/audio/asrc/CMakeLists.txt b/src/audio/asrc/CMakeLists.txt index e87e2b1202d2..44f68d3c902c 100644 --- a/src/audio/asrc/CMakeLists.txt +++ b/src/audio/asrc/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause add_local_sources(sof asrc.c asrc_farrow.c asrc_farrow_generic.c - asrc_farrow_hifi3.c) + asrc_farrow_hifi3.c asrc_farrow_hifi5.c) if(CONFIG_IPC_MAJOR_3) add_local_sources(sof asrc_ipc3.c) diff --git a/src/audio/asrc/asrc_farrow_hifi3.c b/src/audio/asrc/asrc_farrow_hifi3.c index 0220804f696d..d4d2b192aeeb 100644 --- a/src/audio/asrc/asrc_farrow_hifi3.c +++ b/src/audio/asrc/asrc_farrow_hifi3.c @@ -1,10 +1,10 @@ // SPDX-License-Identifier: BSD-3-Clause // -// Copyright(c) 2012-2019 Intel Corporation. All rights reserved. +// Copyright(c) 2012-2025 Intel Corporation. #include -#if SOF_USE_HIFI(3, ASRC) || SOF_USE_HIFI(4, ASRC) || SOF_USE_HIFI(5, ASRC) +#if SOF_USE_HIFI(3, ASRC) || SOF_USE_HIFI(4, ASRC) #include "asrc_farrow.h" #include diff --git a/src/audio/asrc/asrc_farrow_hifi5.c b/src/audio/asrc/asrc_farrow_hifi5.c new file mode 100644 index 000000000000..6a8b7041aba4 --- /dev/null +++ b/src/audio/asrc/asrc_farrow_hifi5.c @@ -0,0 +1,404 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2012-2025 Intel Corporation. + +#include + +#if SOF_USE_MIN_HIFI(5, ASRC) + +#include "asrc_farrow.h" +#include + +LOG_MODULE_DECLARE(asrc, CONFIG_SOF_LOG_LEVEL); + +void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, + int index_output_frame) +{ + ae_f32x2 prod; + ae_f32x2 filter01 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 filter23 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f16x4 buffer0123 = AE_ZERO16(); /* Note: Init is not needed */ + ae_f32x2 *filter_p; + ae_f16x4 *buffer_p; + int n_limit; + int ch; + int n; + int i; + + /* + * Four filter bins are accumulated per iteration. + * 'n_limit' is therefore stored to reduce redundant + * calculations. Also handle possible interleaved output. + */ + n_limit = src_obj->filter_length >> 2; + if (src_obj->output_format == ASRC_IOF_INTERLEAVED) + i = src_obj->num_channels * index_output_frame; + else + i = index_output_frame; + + /* Iterate over each channel */ + for (ch = 0; ch < src_obj->num_channels; ch++) { + /* Pointer to the beginning of the impulse response */ + filter_p = (ae_f32x2 *)&src_obj->impulse_response[0]; + + /* Pointer to the buffered input data */ + buffer_p = + (ae_f16x4 *)&src_obj->ring_buffers16[ch] + [src_obj->buffer_write_position]; + + /* Allows unaligned load of 64 bit per cycle */ + ae_valign align_filter = AE_LA64_PP(filter_p); + ae_valign align_buffer = AE_LA64_PP(buffer_p); + + /* Initialise the accumulator */ + prod = AE_ZERO32(); + + /* Iterate over the filter bins */ + for (n = 0; n < n_limit; n++) { + /* Read four buffered samples at once */ + AE_LA16X4_RIP(buffer0123, align_buffer, buffer_p); + + /* Store four bins of the impulse response */ + AE_LA32X2_IP(filter01, align_filter, filter_p); + AE_LA32X2_IP(filter23, align_filter, filter_p); + + /* Multiply and accumulate + * the lower half bits in 'buffer0123' are used + */ + AE_MULAFP32X16X2RS_L(prod, filter23, buffer0123); + /* the upper half bits in 'buffer0123' are used */ + AE_MULAFP32X16X2RS_H(prod, filter01, buffer0123); + } + + /* Shift left after accumulation, because interim + * results might saturate during filtering prod = prod + * << 1; will shift after last addition + */ + + /* swap LL and HH reusing filter01 to perform + * saturated addition of both halves + */ + filter01 = AE_SEL32_LH(prod, prod); + + /* Add up the lower and upper 32 bit data of the + * 'prod' prod = AE_ADD32_HL_LH(prod, prod); fix using + * saturated addition + */ + prod = AE_ADD32S(prod, filter01); + + /* Shift with saturation */ + prod = AE_SLAI32S(prod, 1); + + /* Round 'prod' to 16 bit and store it in + * (de-)interleaved format in the output buffers + */ + AE_S16_0_X(AE_ROUND16X4F32SSYM(prod, prod), + (ae_f16 *)&output_buffers[ch][i], 0); + } +} + +void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, + int index_output_frame) +{ + ae_f32x2 prod; + ae_f32x2 buffer01 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 filter01 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 *filter_p; + ae_f32x2 *buffer_p; + int n_limit; + int ch; + int n; + int i; + + /* + * Two filter bins are accumulated per iteration. + * 'n_limit' is therefore stored to reduce redundant + * calculations. Also handle possible interleaved output. + */ + n_limit = src_obj->filter_length >> 1; + if (src_obj->output_format == ASRC_IOF_INTERLEAVED) + i = src_obj->num_channels * index_output_frame; + else + i = index_output_frame; + + /* Iterate over each channel */ + for (ch = 0; ch < src_obj->num_channels; ch++) { + /* Pointer to the beginning of the impulse response */ + filter_p = (ae_f32x2 *)&src_obj->impulse_response[0]; + + /* Pointer to the buffered input data */ + buffer_p = + (ae_f32x2 *)&src_obj->ring_buffers32[ch] + [src_obj->buffer_write_position]; + + /* Allows unaligned load of 64 bit per cycle */ + ae_valign align_filter = AE_LA64_PP(filter_p); + ae_valign align_buffer = AE_LA64_PP(buffer_p); + + /* Initialise the accumulator */ + prod = AE_ZERO32(); + + /* Iterate over the filter bins */ + for (n = 0; n < n_limit; n++) { + /* Read two buffered samples at once */ + AE_LA32X2_RIP(buffer01, align_buffer, buffer_p); + + /* Store two bins of the impulse response */ + AE_LA32X2_IP(filter01, align_filter, filter_p); + + /* Multiply and accumulate */ + AE_MULAFP32X2RS(prod, buffer01, filter01); + } + + /* Shift left after accumulation, because interim + * results might saturate during filtering prod = prod + * << 1; will shift after last addition + */ + + /* swap LL and HH reusing filter01 to perform + * saturated addition of both halves + */ + filter01 = AE_SEL32_LH(prod, prod); + + /* Add up the lower and upper 32 bit data of the + * 'prod' prod = AE_ADD32_HL_LH(prod, prod); fix using + * saturated addition + */ + prod = AE_ADD32S(prod, filter01); + + /* Shift with saturation */ + prod = AE_SLAI32S(prod, 1); + + /* Store 'prod' in (de-)interleaved format in the output + * buffers + */ + AE_S32_L_X(prod, (ae_f32 *)&output_buffers[ch][i], 0); + } +} + +/* + ALGORITHM SPECIFIC FUNCTIONS */ + +void asrc_calc_impulse_response_n4(struct asrc_farrow *src_obj) +{ + ae_f32x2 time_x2; + ae_f32x2 accum20 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 accum31 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 *filter_P; + ae_f32x2 *result_P; + ae_valign align_f; + ae_valign align_out; + int index_filter; + int index_limit; + + /* Set the pointer tot the polyphase filters */ + filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; + + /* + * Set the pointer to the impulse response. + * This is where the result is stored. + */ + result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + + /* allow unaligned load of 64 bit of polyphase filter coefficients */ + align_f = AE_LA64_PP(filter_P); + align_out = AE_ZALIGN64(); + + /* Get the current fractional time */ + time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); + time_x2 = AE_SLAI32S(time_x2, 4); + + /* + * Generates two impulse response bins per iterations. + * 'index_limit' is therefore stored to reduce redundant + * calculations. + */ + index_limit = src_obj->filter_length >> 1; + for (index_filter = 0; index_filter < index_limit; index_filter++) { + /* + * The polyphase filters lie in storage as follows + * (For N = 4, M = 64): + * [g3,0][g3,1][g2,0][g2,1] + * ...[g0,0][g0,1][g3,2][g3,3]...[g0,62][g0,63]. + * + * Since the polyphase filter coefficients are stored + * in an appropriate order, we can just load them up, + * one after another. + */ + + /* Load two coefficients of the 4th polyphase filter */ + AE_LA32X2_IP(accum31, align_f, filter_P); + + /* Load two coefficients of the 3rd polyphase filter */ + AE_LA32X2_IP(accum20, align_f, filter_P); + + /* + * Use the 'Horner's Method' to calculate the result + * in a numerically stable and efficient way: + * + * Example for one coefficient (N = 4): + * g_out,m = ((g3,m*t + g2,m)*t + g1,m)*t + g0,m + */ + AE_MULAFP32X2RS(accum20, accum31, time_x2); + + /* Load two coefficients of the second polyphase filter */ + AE_LA32X2_IP(accum31, align_f, filter_P); + /* Multiply and accumulate */ + AE_MULAFP32X2RS(accum31, accum20, time_x2); + + /* Load two coefficients of the first polyphase filter */ + AE_LA32X2_IP(accum20, align_f, filter_P); + /* Multiply and accumulate */ + AE_MULAFP32X2RS(accum20, accum31, time_x2); + + /* Store the result */ + AE_SA32X2_IP(accum20, align_out, result_P); + } + + AE_SA64POS_FP(align_out, result_P); +} + +void asrc_calc_impulse_response_n5(struct asrc_farrow *src_obj) +{ + /* + * See 'calc_impulse_response_n4' for a detailed description + * of the algorithm and data handling + */ + ae_f32x2 time_x2; + ae_f32x2 accum31 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 accum420 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 *filter_P; + ae_f32x2 *result_P; + ae_valign align_f; + ae_valign align_out; + int index_filter; + int index_limit; + + filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; + result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + + align_f = AE_LA64_PP(filter_P); + align_out = AE_ZALIGN64(); + + time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); + time_x2 = AE_SLAI32S(time_x2, 4); + + index_limit = src_obj->filter_length >> 1; + for (index_filter = 0; index_filter < index_limit; index_filter++) { + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_LA32X2_IP(accum31, align_f, filter_P); + AE_MULAFP32X2RS(accum31, accum420, time_x2); + + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_MULAFP32X2RS(accum420, accum31, time_x2); + + AE_LA32X2_IP(accum31, align_f, filter_P); + AE_MULAFP32X2RS(accum31, accum420, time_x2); + + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_MULAFP32X2RS(accum420, accum31, time_x2); + + AE_SA32X2_IP(accum420, align_out, result_P); + } + AE_SA64POS_FP(align_out, result_P); +} + +void asrc_calc_impulse_response_n6(struct asrc_farrow *src_obj) +{ + /* + * See 'calc_impulse_response_n4' for a detailed description + * of the algorithm and data handling + */ + ae_f32x2 time_x2; + ae_f32x2 accum531 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 accum420 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 *filter_P; + ae_f32x2 *result_P; + ae_valign align_f; + ae_valign align_out; + int index_filter; + int index_limit; + + filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; + result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + + align_f = AE_LA64_PP(filter_P); + align_out = AE_ZALIGN64(); + + time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); + time_x2 = AE_SLAI32S(time_x2, 4); + + index_limit = src_obj->filter_length >> 1; + for (index_filter = 0; index_filter < index_limit; index_filter++) { + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_MULAFP32X2RS(accum420, accum531, time_x2); + + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_MULAFP32X2RS(accum531, accum420, time_x2); + + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_MULAFP32X2RS(accum420, accum531, time_x2); + + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_MULAFP32X2RS(accum531, accum420, time_x2); + + AE_LA32X2_IP(accum420, align_f, filter_P); + AE_MULAFP32X2RS(accum420, accum531, time_x2); + + AE_SA32X2_IP(accum420, align_out, result_P); + } + AE_SA64POS_FP(align_out, result_P); +} + +void asrc_calc_impulse_response_n7(struct asrc_farrow *src_obj) +{ + /* + * See 'calc_impulse_response_n4' for a detailed description + * of the algorithm and data handling + */ + ae_f32x2 time_x2; + ae_f32x2 accum6420 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 accum531 = AE_ZERO32(); /* Note: Init is not needed */ + ae_f32x2 *filter_P; + ae_f32x2 *result_P; + ae_valign align_f; + ae_valign align_out; + int index_filter; + int index_limit; + + filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; + result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + + align_f = AE_LA64_PP(filter_P); + align_out = AE_ZALIGN64(); + + time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); + time_x2 = AE_SLAI32S(time_x2, 4); + + index_limit = src_obj->filter_length >> 1; + for (index_filter = 0; index_filter < index_limit; index_filter++) { + AE_LA32X2_IP(accum6420, align_f, filter_P); + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_MULAFP32X2RS(accum531, accum6420, time_x2); + + AE_LA32X2_IP(accum6420, align_f, filter_P); + AE_MULAFP32X2RS(accum6420, accum531, time_x2); + + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_MULAFP32X2RS(accum531, accum6420, time_x2); + + AE_LA32X2_IP(accum6420, align_f, filter_P); + AE_MULAFP32X2RS(accum6420, accum531, time_x2); + + AE_LA32X2_IP(accum531, align_f, filter_P); + AE_MULAFP32X2RS(accum531, accum6420, time_x2); + + AE_LA32X2_IP(accum6420, align_f, filter_P); + AE_MULAFP32X2RS(accum6420, accum531, time_x2); + + AE_SA32X2_IP(accum6420, align_out, result_P); + } + AE_SA64POS_FP(align_out, result_P); +} + +#endif /* ASRC_HIFI_5 */ diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index b387fc011de1..852d799f77a1 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -716,6 +716,7 @@ if(CONFIG_COMP_ASRC STREQUAL "m") elseif(CONFIG_COMP_ASRC) zephyr_library_sources( ${SOF_AUDIO_PATH}/asrc/asrc.c + ${SOF_AUDIO_PATH}/asrc/asrc_farrow_hifi5.c ${SOF_AUDIO_PATH}/asrc/asrc_farrow_hifi3.c ${SOF_AUDIO_PATH}/asrc/asrc_farrow.c ${SOF_AUDIO_PATH}/asrc/asrc_farrow_generic.c From 0460b3ca25cca6014e85e355eff37ef46ce3273b Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Thu, 6 Mar 2025 19:17:43 +0200 Subject: [PATCH 2/6] Audio: ASRC: Add coefficients files for HiFi5 These coefficients are re-ordered for use with new HiFi5 version of functions asrc_calc_impulse_response_n[4-7](). This patch only adds the files, nothing is changed yet. Signed-off-by: Seppo Ingalsuo --- .../asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h | 618 ++++++++++++++++++ .../asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h | 550 ++++++++++++++++ .../asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h | 506 ++++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h | 618 ++++++++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h | 466 +++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h | 466 +++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h | 562 ++++++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h | 470 +++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h | 470 +++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h | 550 ++++++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h | 506 ++++++++++++++ .../asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h | 382 +++++++++++ 12 files changed, 6164 insertions(+) create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h create mode 100644 src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h new file mode 100644 index 000000000000..778de8dfa56e --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h @@ -0,0 +1,618 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 24000 Hz to 8000 Hz */ +/* NUM_FILTERS=4, FILTER_LENGTH=128, alpha=6.200000, gamma=0.454000 */ + +__cold_rodata static const int32_t coeff24000to08000[] = { + + /* Filter #1, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-10830), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-19325), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-8706), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(17158), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(41187), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(5433), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-57507), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-85177), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(53742), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(102764), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(56825), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-81566), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-40910), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(43191), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(132068), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(122684), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(35023), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(21531), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(-20607), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-56412), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(-28687), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(84875), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(153388), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(85079), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-198613), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-152429), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(77423), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(318659), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-26903), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(-219188), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-265221), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-55019), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-45627), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(16004), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(80964), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(83822), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(-97650), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-243132), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-188414), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(74163), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(320857), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(-4716), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-436161), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(-569989), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(292318), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(469916), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(238081), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-305542), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(3428), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-103074), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-136759), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-45156), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(342026), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(348018), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(12595), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-425480), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(-178871), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(504223), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(887721), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(512609), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(-717573), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-551012), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(198162), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(961755), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(113706), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(201400), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(115814), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-100685), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-563391), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(-190843), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(456045), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(818713), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-456956), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-1233622), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(-1020591), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(215831), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(1003766), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(97129), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-1125979), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(-1574771), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-269690), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(-219149), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(49817), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(327706), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(483675), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(-385406), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-1078344), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(-901092), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(1533583), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(1697790), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(298404), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(-1679597), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-640937), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(1106673), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(2199991), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(1469926), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(353713), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(53122), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-355599), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(-510586), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(159521), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(1284520), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(1431454), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(273189), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(-2496622), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-1148947), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(1536178), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(3316675), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(-783087), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-2766581), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(-2577984), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(34050), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-219636), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(328523), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(671539), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(455239), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(-1358235), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-2033639), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(-951202), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(1203809), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(2363113), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-953893), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-4000055), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(-3912103), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(3113447), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(3898837), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(1239875), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-3039958), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-218603), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-807891), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-756009), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(-2224), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(2631188), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(1887961), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-716945), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-3109267), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(-210918), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(4333834), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(5693246), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(2072560), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(-5293214), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-3091666), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(2322327), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(6542868), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(880151), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(1105224), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(358874), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-838150), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-3059949), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(-204798), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(3314225), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(4395729), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-4059383), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-7516860), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-4691958), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(2885839), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(5504147), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-735062), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-7351776), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(-8370954), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-1470082), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(-869768), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(620664), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(1797644), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(1651041), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-3053727), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(-5765452), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(-3689804), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(9097774), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(8056110), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-501272), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(-10047020), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-1927609), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(7351404), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(11484456), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(5838619), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(1543877), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-152285), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-2007072), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(-2377760), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(2092009), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(6966627), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(6364024), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-127424), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(-12064250), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(-3431170), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(9849385), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(16521192), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(-6100793), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(-14529711), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(-11146964), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(3059490), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-667626), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(1968948), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(3348219), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(1996625), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(-7691699), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-9695566), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-3280325), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(7429429), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(9318936), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-7786997), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-21129476), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-17795597), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(17076149), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(18036447), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(2522929), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-18539360), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-1439811), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-4374392), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(-4134491), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-185988), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(13688967), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(8930617), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-5110430), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(-18240532), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(2685075), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(25435789), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(30208500), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(8011608), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-26909927), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-11976152), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(18016549), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(38981614), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(5056345), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(7681958), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(5124031), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-1687599), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-18700492), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(-2525039), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(21825461), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(37870743), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-28470273), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-50432144), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(-32720110), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(25573931), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(28567790), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-13547145), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(-58824612), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-64597690), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-8594673), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(-10910995), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-6715326), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(1653573), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(32251799), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(4871577), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(-29612069), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-50673264), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(95527010), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(134020246), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(111496535), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(33022726), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(-2840724), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(116347844), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(244337981), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(319519294), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(9058182), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(11001115), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(6613114), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(-908182), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(-45371944), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(-17020199), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(17061394), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(37099013), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-62590522), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-125985859), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(-127527137), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(-74392732), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(303533893), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(204637406), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(72635229), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(-31218589), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-6645584), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-7338726), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(-3379574), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(1862507), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(33592635), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(12488167), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-10270513), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(-20289677), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(-3539197), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(43642084), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(47036638), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(16924310), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(-69423135), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(-46017033), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(2774597), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(36162526), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(4687214), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(3633943), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(169088), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-2783863), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(-13928301), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(926804), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(12081784), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(12208082), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-17765712), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-31677983), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(-19297249), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(5057264), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(34660987), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(7654480), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-19463498), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-26510886), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-3155209), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(-1100082), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(1452075), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(2496940), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(3219751), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-6628589), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(-9810802), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(-4999762), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(21084806), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(18281519), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(1997933), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-13157294), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(-12029861), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(9119834), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(19673432), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(13313145), /* Filter:1, Coefficient: 80 */ + + /* Filter #21, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(1470988), /* Filter:4, Coefficient: 81 */ + CONVERT_COEFF(-530883), /* Filter:4, Coefficient: 82 */ + CONVERT_COEFF(-1826789), /* Filter:4, Coefficient: 83 */ + CONVERT_COEFF(-1519560), /* Filter:4, Coefficient: 84 */ + CONVERT_COEFF(2887991), /* Filter:3, Coefficient: 81 */ + CONVERT_COEFF(7345400), /* Filter:3, Coefficient: 82 */ + CONVERT_COEFF(5461142), /* Filter:3, Coefficient: 83 */ + CONVERT_COEFF(-374397), /* Filter:3, Coefficient: 84 */ + CONVERT_COEFF(-15778100), /* Filter:2, Coefficient: 81 */ + CONVERT_COEFF(-5804379), /* Filter:2, Coefficient: 82 */ + CONVERT_COEFF(7156002), /* Filter:2, Coefficient: 83 */ + CONVERT_COEFF(12632597), /* Filter:2, Coefficient: 84 */ + CONVERT_COEFF(-2347060), /* Filter:1, Coefficient: 81 */ + CONVERT_COEFF(-13766705), /* Filter:1, Coefficient: 82 */ + CONVERT_COEFF(-12757053), /* Filter:1, Coefficient: 83 */ + CONVERT_COEFF(-1966773), /* Filter:1, Coefficient: 84 */ + + /* Filter #22, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-77386), /* Filter:4, Coefficient: 85 */ + CONVERT_COEFF(1218353), /* Filter:4, Coefficient: 86 */ + CONVERT_COEFF(1379966), /* Filter:4, Coefficient: 87 */ + CONVERT_COEFF(441511), /* Filter:4, Coefficient: 88 */ + CONVERT_COEFF(-5068027), /* Filter:3, Coefficient: 85 */ + CONVERT_COEFF(-5140982), /* Filter:3, Coefficient: 86 */ + CONVERT_COEFF(-1197542), /* Filter:3, Coefficient: 87 */ + CONVERT_COEFF(3116904), /* Filter:3, Coefficient: 88 */ + CONVERT_COEFF(7480579), /* Filter:2, Coefficient: 85 */ + CONVERT_COEFF(-2749314), /* Filter:2, Coefficient: 86 */ + CONVERT_COEFF(-9360248), /* Filter:2, Coefficient: 87 */ + CONVERT_COEFF(-7716970), /* Filter:2, Coefficient: 88 */ + CONVERT_COEFF(8772201), /* Filter:1, Coefficient: 85 */ + CONVERT_COEFF(11107791), /* Filter:1, Coefficient: 86 */ + CONVERT_COEFF(4436017), /* Filter:1, Coefficient: 87 */ + CONVERT_COEFF(-4741987), /* Filter:1, Coefficient: 88 */ + + /* Filter #23, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-708796), /* Filter:4, Coefficient: 89 */ + CONVERT_COEFF(-1141122), /* Filter:4, Coefficient: 90 */ + CONVERT_COEFF(-618337), /* Filter:4, Coefficient: 91 */ + CONVERT_COEFF(314070), /* Filter:4, Coefficient: 92 */ + CONVERT_COEFF(4381539), /* Filter:3, Coefficient: 89 */ + CONVERT_COEFF(2040448), /* Filter:3, Coefficient: 90 */ + CONVERT_COEFF(-1562338), /* Filter:3, Coefficient: 91 */ + CONVERT_COEFF(-3425561), /* Filter:3, Coefficient: 92 */ + CONVERT_COEFF(-281783), /* Filter:2, Coefficient: 89 */ + CONVERT_COEFF(6309527), /* Filter:2, Coefficient: 90 */ + CONVERT_COEFF(7023993), /* Filter:2, Coefficient: 91 */ + CONVERT_COEFF(2144389), /* Filter:2, Coefficient: 92 */ + CONVERT_COEFF(-8900882), /* Filter:1, Coefficient: 89 */ + CONVERT_COEFF(-5510132), /* Filter:1, Coefficient: 90 */ + CONVERT_COEFF(1698787), /* Filter:1, Coefficient: 91 */ + CONVERT_COEFF(6542354), /* Filter:1, Coefficient: 92 */ + + /* Filter #24, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(865964), /* Filter:4, Coefficient: 93 */ + CONVERT_COEFF(658712), /* Filter:4, Coefficient: 94 */ + CONVERT_COEFF(-34808), /* Filter:4, Coefficient: 95 */ + CONVERT_COEFF(-598408), /* Filter:4, Coefficient: 96 */ + CONVERT_COEFF(-2338169), /* Filter:3, Coefficient: 93 */ + CONVERT_COEFF(422162), /* Filter:3, Coefficient: 94 */ + CONVERT_COEFF(2447614), /* Filter:3, Coefficient: 95 */ + CONVERT_COEFF(2257011), /* Filter:3, Coefficient: 96 */ + CONVERT_COEFF(-3705979), /* Filter:2, Coefficient: 93 */ + CONVERT_COEFF(-5807407), /* Filter:2, Coefficient: 94 */ + CONVERT_COEFF(-3061584), /* Filter:2, Coefficient: 95 */ + CONVERT_COEFF(1669136), /* Filter:2, Coefficient: 96 */ + CONVERT_COEFF(5575464), /* Filter:1, Coefficient: 93 */ + CONVERT_COEFF(397296), /* Filter:1, Coefficient: 94 */ + CONVERT_COEFF(-4329403), /* Filter:1, Coefficient: 95 */ + CONVERT_COEFF(-4978370), /* Filter:1, Coefficient: 96 */ + + /* Filter #25, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-608313), /* Filter:4, Coefficient: 97 */ + CONVERT_COEFF(-139661), /* Filter:4, Coefficient: 98 */ + CONVERT_COEFF(366507), /* Filter:4, Coefficient: 99 */ + CONVERT_COEFF(506515), /* Filter:4, Coefficient: 100 */ + CONVERT_COEFF(327984), /* Filter:3, Coefficient: 97 */ + CONVERT_COEFF(-1565787), /* Filter:3, Coefficient: 98 */ + CONVERT_COEFF(-1944169), /* Filter:3, Coefficient: 99 */ + CONVERT_COEFF(-743409), /* Filter:3, Coefficient: 100 */ + CONVERT_COEFF(4387464), /* Filter:2, Coefficient: 97 */ + CONVERT_COEFF(3269084), /* Filter:2, Coefficient: 98 */ + CONVERT_COEFF(-227334), /* Filter:2, Coefficient: 99 */ + CONVERT_COEFF(-3001559), /* Filter:2, Coefficient: 100 */ + CONVERT_COEFF(-1650694), /* Filter:1, Coefficient: 97 */ + CONVERT_COEFF(2456535), /* Filter:1, Coefficient: 98 */ + CONVERT_COEFF(4020324), /* Filter:1, Coefficient: 99 */ + CONVERT_COEFF(2215413), /* Filter:1, Coefficient: 100 */ + + /* Filter #26, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(227496), /* Filter:4, Coefficient: 101 */ + CONVERT_COEFF(-184800), /* Filter:4, Coefficient: 102 */ + CONVERT_COEFF(-384947), /* Filter:4, Coefficient: 103 */ + CONVERT_COEFF(-250573), /* Filter:4, Coefficient: 104 */ + CONVERT_COEFF(848717), /* Filter:3, Coefficient: 101 */ + CONVERT_COEFF(1522401), /* Filter:3, Coefficient: 102 */ + CONVERT_COEFF(897837), /* Filter:3, Coefficient: 103 */ + CONVERT_COEFF(-323140), /* Filter:3, Coefficient: 104 */ + CONVERT_COEFF(-2999081), /* Filter:2, Coefficient: 101 */ + CONVERT_COEFF(-663371), /* Filter:2, Coefficient: 102 */ + CONVERT_COEFF(1805833), /* Filter:2, Coefficient: 103 */ + CONVERT_COEFF(2461354), /* Filter:2, Coefficient: 104 */ + CONVERT_COEFF(-1023079), /* Filter:1, Coefficient: 101 */ + CONVERT_COEFF(-2946059), /* Filter:1, Coefficient: 102 */ + CONVERT_COEFF(-2271916), /* Filter:1, Coefficient: 103 */ + CONVERT_COEFF(46810), /* Filter:1, Coefficient: 104 */ + + /* Filter #27, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(56883), /* Filter:4, Coefficient: 105 */ + CONVERT_COEFF(266613), /* Filter:4, Coefficient: 106 */ + CONVERT_COEFF(231070), /* Filter:4, Coefficient: 107 */ + CONVERT_COEFF(21669), /* Filter:4, Coefficient: 108 */ + CONVERT_COEFF(-1085470), /* Filter:3, Coefficient: 105 */ + CONVERT_COEFF(-870963), /* Filter:3, Coefficient: 106 */ + CONVERT_COEFF(-16819), /* Filter:3, Coefficient: 107 */ + CONVERT_COEFF(696469), /* Filter:3, Coefficient: 108 */ + CONVERT_COEFF(1096398), /* Filter:2, Coefficient: 105 */ + CONVERT_COEFF(-881544), /* Filter:2, Coefficient: 106 */ + CONVERT_COEFF(-1827647), /* Filter:2, Coefficient: 107 */ + CONVERT_COEFF(-1190629), /* Filter:2, Coefficient: 108 */ + CONVERT_COEFF(1934524), /* Filter:1, Coefficient: 105 */ + CONVERT_COEFF(2002411), /* Filter:1, Coefficient: 106 */ + CONVERT_COEFF(516537), /* Filter:1, Coefficient: 107 */ + CONVERT_COEFF(-1096900), /* Filter:1, Coefficient: 108 */ + + /* Filter #28, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-165914), /* Filter:4, Coefficient: 109 */ + CONVERT_COEFF(-188751), /* Filter:4, Coefficient: 110 */ + CONVERT_COEFF(-60237), /* Filter:4, Coefficient: 111 */ + CONVERT_COEFF(89578), /* Filter:4, Coefficient: 112 */ + CONVERT_COEFF(737670), /* Filter:3, Coefficient: 109 */ + CONVERT_COEFF(199113), /* Filter:3, Coefficient: 110 */ + CONVERT_COEFF(-389567), /* Filter:3, Coefficient: 111 */ + CONVERT_COEFF(-560182), /* Filter:3, Coefficient: 112 */ + CONVERT_COEFF(247255), /* Filter:2, Coefficient: 109 */ + CONVERT_COEFF(1222537), /* Filter:2, Coefficient: 110 */ + CONVERT_COEFF(1068384), /* Filter:2, Coefficient: 111 */ + CONVERT_COEFF(124598), /* Filter:2, Coefficient: 112 */ + CONVERT_COEFF(-1569451), /* Filter:1, Coefficient: 109 */ + CONVERT_COEFF(-750469), /* Filter:1, Coefficient: 110 */ + CONVERT_COEFF(482448), /* Filter:1, Coefficient: 111 */ + CONVERT_COEFF(1101069), /* Filter:1, Coefficient: 112 */ + + /* Filter #29, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(139197), /* Filter:4, Coefficient: 113 */ + CONVERT_COEFF(70304), /* Filter:4, Coefficient: 114 */ + CONVERT_COEFF(-38289), /* Filter:4, Coefficient: 115 */ + CONVERT_COEFF(-93047), /* Filter:4, Coefficient: 116 */ + CONVERT_COEFF(-263233), /* Filter:3, Coefficient: 113 */ + CONVERT_COEFF(174746), /* Filter:3, Coefficient: 114 */ + CONVERT_COEFF(383750), /* Filter:3, Coefficient: 115 */ + CONVERT_COEFF(250958), /* Filter:3, Coefficient: 116 */ + CONVERT_COEFF(-721785), /* Filter:2, Coefficient: 113 */ + CONVERT_COEFF(-838118), /* Filter:2, Coefficient: 114 */ + CONVERT_COEFF(-289378), /* Filter:2, Coefficient: 115 */ + CONVERT_COEFF(357413), /* Filter:2, Coefficient: 116 */ + CONVERT_COEFF(755091), /* Filter:1, Coefficient: 113 */ + CONVERT_COEFF(-90734), /* Filter:1, Coefficient: 114 */ + CONVERT_COEFF(-683828), /* Filter:1, Coefficient: 115 */ + CONVERT_COEFF(-627769), /* Filter:1, Coefficient: 116 */ + + /* Filter #30, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(-63107), /* Filter:4, Coefficient: 117 */ + CONVERT_COEFF(8665), /* Filter:4, Coefficient: 118 */ + CONVERT_COEFF(56144), /* Filter:4, Coefficient: 119 */ + CONVERT_COEFF(48031), /* Filter:4, Coefficient: 120 */ + CONVERT_COEFF(-44424), /* Filter:3, Coefficient: 117 */ + CONVERT_COEFF(-235818), /* Filter:3, Coefficient: 118 */ + CONVERT_COEFF(-199384), /* Filter:3, Coefficient: 119 */ + CONVERT_COEFF(-19310), /* Filter:3, Coefficient: 120 */ + CONVERT_COEFF(583440), /* Filter:2, Coefficient: 117 */ + CONVERT_COEFF(312988), /* Filter:2, Coefficient: 118 */ + CONVERT_COEFF(-127566), /* Filter:2, Coefficient: 119 */ + CONVERT_COEFF(-358789), /* Filter:2, Coefficient: 120 */ + CONVERT_COEFF(-112449), /* Filter:1, Coefficient: 117 */ + CONVERT_COEFF(363474), /* Filter:1, Coefficient: 118 */ + CONVERT_COEFF(449326), /* Filter:1, Coefficient: 119 */ + CONVERT_COEFF(178527), /* Filter:1, Coefficient: 120 */ + + /* Filter #31, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(4767), /* Filter:4, Coefficient: 121 */ + CONVERT_COEFF(-30353), /* Filter:4, Coefficient: 122 */ + CONVERT_COEFF(-31778), /* Filter:4, Coefficient: 123 */ + CONVERT_COEFF(-7893), /* Filter:4, Coefficient: 124 */ + CONVERT_COEFF(128040), /* Filter:3, Coefficient: 121 */ + CONVERT_COEFF(136746), /* Filter:3, Coefficient: 122 */ + CONVERT_COEFF(38083), /* Filter:3, Coefficient: 123 */ + CONVERT_COEFF(-60147), /* Filter:3, Coefficient: 124 */ + CONVERT_COEFF(-257969), /* Filter:2, Coefficient: 121 */ + CONVERT_COEFF(8641), /* Filter:2, Coefficient: 122 */ + CONVERT_COEFF(190921), /* Filter:2, Coefficient: 123 */ + CONVERT_COEFF(174318), /* Filter:2, Coefficient: 124 */ + CONVERT_COEFF(-151547), /* Filter:1, Coefficient: 121 */ + CONVERT_COEFF(-276720), /* Filter:1, Coefficient: 122 */ + CONVERT_COEFF(-161692), /* Filter:1, Coefficient: 123 */ + CONVERT_COEFF(35536), /* Filter:1, Coefficient: 124 */ + + /* Filter #32, conversion from 24000 Hz to 8000 Hz */ + + CONVERT_COEFF(14756), /* Filter:4, Coefficient: 125 */ + CONVERT_COEFF(18247), /* Filter:4, Coefficient: 126 */ + CONVERT_COEFF(5816), /* Filter:4, Coefficient: 127 */ + CONVERT_COEFF(-573080), /* Filter:4, Coefficient: 128 */ + CONVERT_COEFF(-80967), /* Filter:3, Coefficient: 125 */ + CONVERT_COEFF(-32124), /* Filter:3, Coefficient: 126 */ + CONVERT_COEFF(24552), /* Filter:3, Coefficient: 127 */ + CONVERT_COEFF(872700), /* Filter:3, Coefficient: 128 */ + CONVERT_COEFF(32782), /* Filter:2, Coefficient: 125 */ + CONVERT_COEFF(-84503), /* Filter:2, Coefficient: 126 */ + CONVERT_COEFF(-95337), /* Filter:2, Coefficient: 127 */ + CONVERT_COEFF(-244664), /* Filter:2, Coefficient: 128 */ + CONVERT_COEFF(141820), /* Filter:1, Coefficient: 125 */ + CONVERT_COEFF(108395), /* Filter:1, Coefficient: 126 */ + CONVERT_COEFF(10015), /* Filter:1, Coefficient: 127 */ + CONVERT_COEFF(-54956), /* Filter:1, Coefficient: 128 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h new file mode 100644 index 000000000000..c6cb368ffef1 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h @@ -0,0 +1,550 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 24000 Hz to 16000 Hz */ +/* NUM_FILTERS=6, FILTER_LENGTH=80, alpha=6.800000, gamma=0.460000 */ + +__cold_rodata static const int32_t coeff24000to16000[] = { + + /* Filter #1, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-26295), /* Filter:6, Coefficient: 1 */ + CONVERT_COEFF(-6174), /* Filter:6, Coefficient: 2 */ + CONVERT_COEFF(59137), /* Filter:6, Coefficient: 3 */ + CONVERT_COEFF(-55792), /* Filter:6, Coefficient: 4 */ + CONVERT_COEFF(95136), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-90674), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(-78081), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(262291), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(20739), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(149775), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-239278), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-22446), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(-144563), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(217789), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(67657), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-521235), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-120977), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-98594), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(393503), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-206930), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(42248), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-133707), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(38413), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(241342), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-44498), /* Filter:6, Coefficient: 5 */ + CONVERT_COEFF(140021), /* Filter:6, Coefficient: 6 */ + CONVERT_COEFF(-65538), /* Filter:6, Coefficient: 7 */ + CONVERT_COEFF(-159309), /* Filter:6, Coefficient: 8 */ + CONVERT_COEFF(-143888), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(-302689), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(539007), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(-33282), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(472981), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-445555), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(-364304), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(1077686), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(409104), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(529589), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-1203596), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(246572), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-546538), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(894742), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(104473), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-1568720), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-302760), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(-155593), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(660489), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-329457), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(250380), /* Filter:6, Coefficient: 9 */ + CONVERT_COEFF(11147), /* Filter:6, Coefficient: 10 */ + CONVERT_COEFF(-380641), /* Filter:6, Coefficient: 11 */ + CONVERT_COEFF(321305), /* Filter:6, Coefficient: 12 */ + CONVERT_COEFF(-810002), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(794826), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(490903), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(-1598783), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(-425238), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(-1277747), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(1786094), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(314731), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(1691746), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-1890565), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-897425), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(3576853), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(1232437), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(1350041), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-3034301), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(596978), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-766480), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(1172797), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(160492), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-1874803), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(263297), /* Filter:6, Coefficient: 13 */ + CONVERT_COEFF(-680359), /* Filter:6, Coefficient: 14 */ + CONVERT_COEFF(215469), /* Filter:6, Coefficient: 15 */ + CONVERT_COEFF(752593), /* Filter:6, Coefficient: 16 */ + CONVERT_COEFF(693774), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(1664970), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(-2393909), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-270022), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(-2867333), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(2015640), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(2321674), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-4757264), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-1759642), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(-3621615), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(5521571), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(433087), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(3906959), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-4133829), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(-2063561), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(7454382), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(1336229), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(1573222), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(-3181847), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(419381), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-924495), /* Filter:6, Coefficient: 17 */ + CONVERT_COEFF(-243808), /* Filter:6, Coefficient: 18 */ + CONVERT_COEFF(1435511), /* Filter:6, Coefficient: 19 */ + CONVERT_COEFF(-854950), /* Filter:6, Coefficient: 20 */ + CONVERT_COEFF(3494050), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-2545027), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(-2574960), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(5494742), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(788251), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(5808654), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-5844798), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-2965912), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-7943091), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(5939150), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(5840605), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-12672998), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-3286678), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-7450030), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(10475967), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(1477617), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(4031999), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-3839814), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-2330782), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(7001267), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-1191753), /* Filter:6, Coefficient: 21 */ + CONVERT_COEFF(2084337), /* Filter:6, Coefficient: 22 */ + CONVERT_COEFF(-128069), /* Filter:6, Coefficient: 23 */ + CONVERT_COEFF(-2601191), /* Filter:6, Coefficient: 24 */ + CONVERT_COEFF(-1086047), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(-6323279), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(6516645), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(2986602), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(10152857), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(-4315876), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-9807613), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(13486977), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(2509829), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(14660956), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-15044393), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(-7085983), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-15070746), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(10141650), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(11626122), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(-22492705), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-2520134), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-7205710), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(9041722), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(2204328), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(2240070), /* Filter:6, Coefficient: 25 */ + CONVERT_COEFF(1583859), /* Filter:6, Coefficient: 26 */ + CONVERT_COEFF(-4145189), /* Filter:6, Coefficient: 27 */ + CONVERT_COEFF(1204705), /* Filter:6, Coefficient: 28 */ + CONVERT_COEFF(-10826352), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(4740217), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(10247700), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(-14202210), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(1961386), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-19034008), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(12554808), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(14736870), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(25196436), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-10843609), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-24055393), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(33134987), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(2787191), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(26962307), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(-25014527), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-15146780), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(-13501440), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(7856982), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(11265305), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-19146543), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(4445165), /* Filter:6, Coefficient: 29 */ + CONVERT_COEFF(-5022270), /* Filter:6, Coefficient: 30 */ + CONVERT_COEFF(-1998803), /* Filter:6, Coefficient: 31 */ + CONVERT_COEFF(8226514), /* Filter:6, Coefficient: 32 */ + CONVERT_COEFF(-2184106), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(20242040), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-12782630), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(-17153461), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-27924414), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(2706581), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(34610785), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-30620463), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(5074883), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-47384059), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(30833566), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(38864431), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(44598021), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-15639102), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-46416323), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(58085501), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(581006), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(24589586), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-20506417), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-16259182), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-3439899), /* Filter:6, Coefficient: 33 */ + CONVERT_COEFF(-8925448), /* Filter:6, Coefficient: 34 */ + CONVERT_COEFF(11104297), /* Filter:6, Coefficient: 35 */ + CONVERT_COEFF(6265801), /* Filter:6, Coefficient: 36 */ + CONVERT_COEFF(30279913), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(1264181), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(-44000805), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(27404677), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-22972428), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(60020710), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-13003893), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(-79732586), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-72814450), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(3812134), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(102230911), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-87524750), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(16356030), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-94361261), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(53986557), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(98938922), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(41141721), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-11448663), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(-49636394), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(60678285), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-19358245), /* Filter:6, Coefficient: 37 */ + CONVERT_COEFF(-1448253), /* Filter:6, Coefficient: 38 */ + CONVERT_COEFF(26658987), /* Filter:6, Coefficient: 39 */ + CONVERT_COEFF(1437558), /* Filter:6, Coefficient: 40 */ + CONVERT_COEFF(51523005), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-60986563), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(-58253729), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(69683724), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(76987483), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(99162074), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-138037476), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-114554861), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-100746036), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(243760389), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(161666543), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-338656732), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-174705650), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-35750635), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(498608183), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(308015331), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(26029323), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-140264601), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(104468300), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(595087393), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-20425535), /* Filter:6, Coefficient: 41 */ + CONVERT_COEFF(6567320), /* Filter:6, Coefficient: 42 */ + CONVERT_COEFF(15743139), /* Filter:6, Coefficient: 43 */ + CONVERT_COEFF(-9427264), /* Filter:6, Coefficient: 44 */ + CONVERT_COEFF(36693971), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(-76752453), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-18978257), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(58790681), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(160865448), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(112183817), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-122474297), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-52614939), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(-258230261), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(238070373), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(183898488), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(-140152136), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-427437883), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-416558699), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(122106215), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(125076115), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(520991913), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(12457163), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-124027598), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(56265475), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-7663681), /* Filter:6, Coefficient: 45 */ + CONVERT_COEFF(9874963), /* Filter:6, Coefficient: 46 */ + CONVERT_COEFF(564421), /* Filter:6, Coefficient: 47 */ + CONVERT_COEFF(-7491119), /* Filter:6, Coefficient: 48 */ + CONVERT_COEFF(-6293486), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(-36428312), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(22206365), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(14384112), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(87304224), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-5399444), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-55884369), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(33711827), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-42369119), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(106491355), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-28115935), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-58576468), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(-125087622), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(-11228768), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(89164835), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-43176336), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(37936440), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(-56171034), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(7138480), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(35072417), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(3743976), /* Filter:6, Coefficient: 49 */ + CONVERT_COEFF(3498372), /* Filter:6, Coefficient: 50 */ + CONVERT_COEFF(-4901576), /* Filter:6, Coefficient: 51 */ + CONVERT_COEFF(234077), /* Filter:6, Coefficient: 52 */ + CONVERT_COEFF(-24281078), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(3132387), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(16560249), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(-12239715), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(21599169), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(-37380560), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(5717759), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(25010112), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(53813676), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(11709605), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-47320948), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(19538940), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-39017312), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(55027501), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-3760701), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-39483388), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-26074542), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(-10215709), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(25770583), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-7934321), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(3638857), /* Filter:6, Coefficient: 53 */ + CONVERT_COEFF(-2392834), /* Filter:6, Coefficient: 54 */ + CONVERT_COEFF(-1352878), /* Filter:6, Coefficient: 55 */ + CONVERT_COEFF(2683085), /* Filter:6, Coefficient: 56 */ + CONVERT_COEFF(-5372325), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(12708978), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(-3609816), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(-7612571), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(-19441937), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-7452690), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(19552722), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-6222289), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(24367027), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(-29849864), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-549202), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(23365978), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(26883932), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(13942943), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-29246879), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(7153500), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-14873710), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(15201245), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(2157693), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-13047847), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-610388), /* Filter:6, Coefficient: 57 */ + CONVERT_COEFF(-1688412), /* Filter:6, Coefficient: 58 */ + CONVERT_COEFF(1513662), /* Filter:6, Coefficient: 59 */ + CONVERT_COEFF(349912), /* Filter:6, Coefficient: 60 */ + CONVERT_COEFF(7476439), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(1248705), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(-6509356), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(3072466), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(-11268706), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(11724570), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(1431814), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-9841071), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-13902547), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(-9448707), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(16453057), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(-2865391), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(18159363), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-16617074), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(-3757540), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(14970543), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(6319609), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(6173527), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(-8607053), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(524563), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-1364557), /* Filter:6, Coefficient: 61 */ + CONVERT_COEFF(582053), /* Filter:6, Coefficient: 62 */ + CONVERT_COEFF(658744), /* Filter:6, Coefficient: 63 */ + CONVERT_COEFF(-838099), /* Filter:6, Coefficient: 64 */ + CONVERT_COEFF(3042256), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(-4197678), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(315404), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(2919373), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(4965896), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(4379351), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-6407530), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(667422), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-10736941), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(8712511), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(2733105), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-8122284), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(-6264447), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-7478462), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(9209549), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(-6635), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(6210778), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(-4146852), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-2148993), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(4360107), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(34742), /* Filter:6, Coefficient: 65 */ + CONVERT_COEFF(585847), /* Filter:6, Coefficient: 66 */ + CONVERT_COEFF(-385112), /* Filter:6, Coefficient: 67 */ + CONVERT_COEFF(-177297), /* Filter:6, Coefficient: 68 */ + CONVERT_COEFF(-2028360), /* Filter:5, Coefficient: 65 */ + CONVERT_COEFF(-875673), /* Filter:5, Coefficient: 66 */ + CONVERT_COEFF(1992549), /* Filter:5, Coefficient: 67 */ + CONVERT_COEFF(-596942), /* Filter:5, Coefficient: 68 */ + CONVERT_COEFF(4308258), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(-3107701), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-1215261), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(2940913), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(2901374), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(4157080), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(-4574441), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(-218386), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-6756530), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(4038899), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(2447917), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(-4302235), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(-1020076), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-2560492), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(2237872), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(503503), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(376287), /* Filter:6, Coefficient: 69 */ + CONVERT_COEFF(-108531), /* Filter:6, Coefficient: 70 */ + CONVERT_COEFF(-186360), /* Filter:6, Coefficient: 71 */ + CONVERT_COEFF(184575), /* Filter:6, Coefficient: 72 */ + CONVERT_COEFF(-1027019), /* Filter:5, Coefficient: 69 */ + CONVERT_COEFF(1033388), /* Filter:5, Coefficient: 70 */ + CONVERT_COEFF(66645), /* Filter:5, Coefficient: 71 */ + CONVERT_COEFF(-722338), /* Filter:5, Coefficient: 72 */ + CONVERT_COEFF(-918864), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-1474180), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(1499478), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(87118), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(3322300), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(-1807064), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-1180769), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(1876974), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(815530), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(2473272), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(-1974352), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-499153), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(-1850371), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(717835), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(834686), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(-940634), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(7527), /* Filter:6, Coefficient: 73 */ + CONVERT_COEFF(-119787), /* Filter:6, Coefficient: 74 */ + CONVERT_COEFF(68147), /* Filter:6, Coefficient: 75 */ + CONVERT_COEFF(28404), /* Filter:6, Coefficient: 76 */ + CONVERT_COEFF(391591), /* Filter:5, Coefficient: 73 */ + CONVERT_COEFF(218433), /* Filter:5, Coefficient: 74 */ + CONVERT_COEFF(-369238), /* Filter:5, Coefficient: 75 */ + CONVERT_COEFF(93076), /* Filter:5, Coefficient: 76 */ + CONVERT_COEFF(-1021014), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(543575), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(306112), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-496977), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(-320463), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(-991740), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(753601), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(156968), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(1548719), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-552872), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(-629254), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(660050), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-13456), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(592881), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-309498), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-180123), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 24000 Hz to 16000 Hz */ + + CONVERT_COEFF(-55547), /* Filter:6, Coefficient: 77 */ + CONVERT_COEFF(19487), /* Filter:6, Coefficient: 78 */ + CONVERT_COEFF(15420), /* Filter:6, Coefficient: 79 */ + CONVERT_COEFF(-8783213), /* Filter:6, Coefficient: 80 */ + CONVERT_COEFF(151753), /* Filter:5, Coefficient: 77 */ + CONVERT_COEFF(-141825), /* Filter:5, Coefficient: 78 */ + CONVERT_COEFF(11411), /* Filter:5, Coefficient: 79 */ + CONVERT_COEFF(21748306), /* Filter:5, Coefficient: 80 */ + CONVERT_COEFF(114656), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(198467), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(-171608), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(-18242535), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-504421), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(191996), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(140005), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(5774023), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(-3503), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(-338534), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(171077), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-556806), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(261387), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(-35673), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(-106078), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(60225), /* Filter:1, Coefficient: 80 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h new file mode 100644 index 000000000000..ba4434e92866 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h @@ -0,0 +1,506 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 44100 Hz to 48000 Hz */ +/* NUM_FILTERS=7, FILTER_LENGTH=64, alpha=7.800000, gamma=0.459000 */ + +__cold_rodata static const int32_t coeff44100to48000[] = { + + /* Filter #1, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-36104), /* Filter:7, Coefficient: 1 */ + CONVERT_COEFF(50872), /* Filter:7, Coefficient: 2 */ + CONVERT_COEFF(-56564), /* Filter:7, Coefficient: 3 */ + CONVERT_COEFF(40229), /* Filter:7, Coefficient: 4 */ + CONVERT_COEFF(215090), /* Filter:6, Coefficient: 1 */ + CONVERT_COEFF(-343808), /* Filter:6, Coefficient: 2 */ + CONVERT_COEFF(497081), /* Filter:6, Coefficient: 3 */ + CONVERT_COEFF(-646143), /* Filter:6, Coefficient: 4 */ + CONVERT_COEFF(-224265), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(396780), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(-680396), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(1099778), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(-156406), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(276746), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-402187), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(483398), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(48725), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(-150519), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(376286), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-778623), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(140598), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-270647), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(433819), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-598685), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(12068), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-294), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(-40869), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(127167), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(15714), /* Filter:7, Coefficient: 5 */ + CONVERT_COEFF(-132261), /* Filter:7, Coefficient: 6 */ + CONVERT_COEFF(331265), /* Filter:7, Coefficient: 7 */ + CONVERT_COEFF(-631432), /* Filter:7, Coefficient: 8 */ + CONVERT_COEFF(739353), /* Filter:6, Coefficient: 5 */ + CONVERT_COEFF(-699893), /* Filter:6, Coefficient: 6 */ + CONVERT_COEFF(427714), /* Filter:6, Coefficient: 7 */ + CONVERT_COEFF(192832), /* Filter:6, Coefficient: 8 */ + CONVERT_COEFF(-1660521), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(2335311), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(-3050136), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(3673357), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(-443096), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(177837), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(433397), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-1512737), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(1399489), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-2253057), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(3306250), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-4459986), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(708253), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-678784), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(404012), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(233922), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-272876), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(486311), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-764527), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(1087962), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(1043073), /* Filter:7, Coefficient: 9 */ + CONVERT_COEFF(-1562022), /* Filter:7, Coefficient: 10 */ + CONVERT_COEFF(2163475), /* Filter:7, Coefficient: 11 */ + CONVERT_COEFF(-2796684), /* Filter:7, Coefficient: 12 */ + CONVERT_COEFF(-1278823), /* Filter:6, Coefficient: 9 */ + CONVERT_COEFF(2928044), /* Filter:6, Coefficient: 10 */ + CONVERT_COEFF(-5192839), /* Filter:6, Coefficient: 11 */ + CONVERT_COEFF(8050849), /* Filter:6, Coefficient: 12 */ + CONVERT_COEFF(-4010927), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(3811024), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(-2780782), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(616611), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(3159157), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(-5417939), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(8246975), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-11484454), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(5535069), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-6267047), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(6314112), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(-5281074), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-1346387), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(3013765), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-5256640), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(8006079), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-1416065), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(1685077), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-1809078), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(1685203), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(3381591), /* Filter:7, Coefficient: 13 */ + CONVERT_COEFF(-3808499), /* Filter:7, Coefficient: 14 */ + CONVERT_COEFF(3941685), /* Filter:7, Coefficient: 15 */ + CONVERT_COEFF(-3627554), /* Filter:7, Coefficient: 16 */ + CONVERT_COEFF(-11376082), /* Filter:6, Coefficient: 13 */ + CONVERT_COEFF(14914588), /* Filter:6, Coefficient: 14 */ + CONVERT_COEFF(-18269373), /* Filter:6, Coefficient: 15 */ + CONVERT_COEFF(20898922), /* Filter:6, Coefficient: 16 */ + CONVERT_COEFF(2952090), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(-8108091), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(14884712), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-23103615), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(14823547), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-17800007), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(19798175), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-20079410), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(2760719), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(1608543), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-8072426), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(16684120), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(-11077473), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(14152940), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(-16777161), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(18370557), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(-1203455), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(260933), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(1220394), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(-3273956), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(2707504), /* Filter:7, Coefficient: 17 */ + CONVERT_COEFF(-1035138), /* Filter:7, Coefficient: 18 */ + CONVERT_COEFF(-1502971), /* Filter:7, Coefficient: 19 */ + CONVERT_COEFF(4964055), /* Filter:7, Coefficient: 20 */ + CONVERT_COEFF(-22132797), /* Filter:6, Coefficient: 17 */ + CONVERT_COEFF(21206202), /* Filter:6, Coefficient: 18 */ + CONVERT_COEFF(-17313533), /* Filter:6, Coefficient: 19 */ + CONVERT_COEFF(9678851), /* Filter:6, Coefficient: 20 */ + CONVERT_COEFF(32319346), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-41778175), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(50397724), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(-56771470), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(17834747), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(-12260704), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(2654160), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(11480470), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-27229456), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(39162945), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-51563303), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(63114743), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-18262033), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(15741168), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(-10127070), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(848490), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(5868998), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-8893591), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(12142571), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(-15312249), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-9324436), /* Filter:7, Coefficient: 21 */ + CONVERT_COEFF(14453459), /* Filter:7, Coefficient: 22 */ + CONVERT_COEFF(-20084074), /* Filter:7, Coefficient: 23 */ + CONVERT_COEFF(25773112), /* Filter:7, Coefficient: 24 */ + CONVERT_COEFF(2360201), /* Filter:6, Coefficient: 21 */ + CONVERT_COEFF(-19258639), /* Filter:6, Coefficient: 22 */ + CONVERT_COEFF(41160997), /* Filter:6, Coefficient: 23 */ + CONVERT_COEFF(-67779055), /* Filter:6, Coefficient: 24 */ + CONVERT_COEFF(59198429), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(-55733258), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(44245892), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(-22473133), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(-30320143), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(53616304), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-80596906), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(109873203), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(-72116055), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(76512776), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-73937881), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(61731000), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(12472346), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-29940877), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(51324643), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(-76006737), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(18002687), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-19726749), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(19922792), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-17964334), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-30833137), /* Filter:7, Coefficient: 25 */ + CONVERT_COEFF(34190653), /* Filter:7, Coefficient: 26 */ + CONVERT_COEFF(-34055766), /* Filter:7, Coefficient: 27 */ + CONVERT_COEFF(27111184), /* Filter:7, Coefficient: 28 */ + CONVERT_COEFF(98212836), /* Filter:6, Coefficient: 25 */ + CONVERT_COEFF(-130600585), /* Filter:6, Coefficient: 26 */ + CONVERT_COEFF(161254866), /* Filter:6, Coefficient: 27 */ + CONVERT_COEFF(-182201584), /* Filter:6, Coefficient: 28 */ + CONVERT_COEFF(-11960805), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(61573102), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(-129062026), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(217007008), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(-139327475), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(165912061), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-185169687), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(189903320), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-36878749), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-4239017), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(66555533), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(-158147683), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(102957685), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-130710897), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(157290278), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-179922417), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(13153909), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-4675683), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(-8550270), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(28262612), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-6732875), /* Filter:7, Coefficient: 29 */ + CONVERT_COEFF(-33513548), /* Filter:7, Coefficient: 30 */ + CONVERT_COEFF(81968959), /* Filter:7, Coefficient: 31 */ + CONVERT_COEFF(-126044370), /* Filter:7, Coefficient: 32 */ + CONVERT_COEFF(173711794), /* Filter:6, Coefficient: 29 */ + CONVERT_COEFF(-91263367), /* Filter:6, Coefficient: 30 */ + CONVERT_COEFF(-97880606), /* Filter:6, Coefficient: 31 */ + CONVERT_COEFF(376032608), /* Filter:6, Coefficient: 32 */ + CONVERT_COEFF(-325394901), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(443482836), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-458466415), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(111467000), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-165805866), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(69571438), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(317915452), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-847016031), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(295236856), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-517257770), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(938951919), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(-618933202), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(193893264), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-187311577), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(104180214), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(1104501607), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(-57986908), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(106920163), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-209369472), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(677292439), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(86233108), /* Filter:7, Coefficient: 33 */ + CONVERT_COEFF(-35501375), /* Filter:7, Coefficient: 34 */ + CONVERT_COEFF(-5636059), /* Filter:7, Coefficient: 35 */ + CONVERT_COEFF(26510404), /* Filter:7, Coefficient: 36 */ + CONVERT_COEFF(-406938858), /* Filter:6, Coefficient: 33 */ + CONVERT_COEFF(298668575), /* Filter:6, Coefficient: 34 */ + CONVERT_COEFF(-136959173), /* Filter:6, Coefficient: 35 */ + CONVERT_COEFF(21661015), /* Filter:6, Coefficient: 36 */ + CONVERT_COEFF(296331993), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(-523052704), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(446708617), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(-290145245), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(848040024), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-256558412), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-137639539), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(223543416), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-605929650), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(936110335), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-517814517), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(297832194), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(-1104400882), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-103375582), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(186432948), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-193151946), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(677292439), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-209369472), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(106920163), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(-57986908), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-33774390), /* Filter:7, Coefficient: 37 */ + CONVERT_COEFF(34125210), /* Filter:7, Coefficient: 38 */ + CONVERT_COEFF(-30912242), /* Filter:7, Coefficient: 39 */ + CONVERT_COEFF(25943030), /* Filter:7, Coefficient: 40 */ + CONVERT_COEFF(41951855), /* Filter:6, Coefficient: 37 */ + CONVERT_COEFF(-74109079), /* Filter:6, Coefficient: 38 */ + CONVERT_COEFF(86833071), /* Filter:6, Coefficient: 39 */ + CONVERT_COEFF(-87225838), /* Filter:6, Coefficient: 40 */ + CONVERT_COEFF(168023601), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-79384353), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(16820075), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(25433754), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(-231084433), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(210602792), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-178568996), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(142372278), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-161325042), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(69605744), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(-6892281), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-34721861), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(179395431), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-156965780), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(130550114), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(-102919808), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(28262612), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-8550270), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-4675683), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(13153909), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-20303032), /* Filter:7, Coefficient: 41 */ + CONVERT_COEFF(14689217), /* Filter:7, Coefficient: 42 */ + CONVERT_COEFF(-9553062), /* Filter:7, Coefficient: 43 */ + CONVERT_COEFF(5169062), /* Filter:7, Coefficient: 44 */ + CONVERT_COEFF(79900129), /* Filter:6, Coefficient: 41 */ + CONVERT_COEFF(-68107389), /* Filter:6, Coefficient: 42 */ + CONVERT_COEFF(54242139), /* Filter:6, Coefficient: 43 */ + CONVERT_COEFF(-40072964), /* Filter:6, Coefficient: 44 */ + CONVERT_COEFF(-51687526), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(65404355), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-69552118), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(66752497), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(-106166575), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(72576377), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-43273377), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(19208349), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(60089315), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-72784419), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(75792430), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(-71757314), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(76055038), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-51427903), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(30073627), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(-12614739), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-17964334), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(19922792), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-19726749), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(18002687), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-1674444), /* Filter:7, Coefficient: 45 */ + CONVERT_COEFF(-901531), /* Filter:7, Coefficient: 46 */ + CONVERT_COEFF(2611633), /* Filter:7, Coefficient: 47 */ + CONVERT_COEFF(-3566019), /* Filter:7, Coefficient: 48 */ + CONVERT_COEFF(26858516), /* Filter:6, Coefficient: 45 */ + CONVERT_COEFF(-15420460), /* Filter:6, Coefficient: 46 */ + CONVERT_COEFF(6205578), /* Filter:6, Coefficient: 47 */ + CONVERT_COEFF(650178), /* Filter:6, Coefficient: 48 */ + CONVERT_COEFF(-59316886), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(49231067), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(-38126705), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(27261665), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(-740031), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-12258104), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(20288296), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(-24113150), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(63038805), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-51691475), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(39422440), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-27557546), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(-711004), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(10004241), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(-15638587), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(18181880), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(-15312249), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(12142571), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(-8893591), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(5868998), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(3908988), /* Filter:7, Coefficient: 49 */ + CONVERT_COEFF(-3798121), /* Filter:7, Coefficient: 50 */ + CONVERT_COEFF(3386896), /* Filter:7, Coefficient: 51 */ + CONVERT_COEFF(-2811604), /* Filter:7, Coefficient: 52 */ + CONVERT_COEFF(-5252911), /* Filter:6, Coefficient: 49 */ + CONVERT_COEFF(7879560), /* Filter:6, Coefficient: 50 */ + CONVERT_COEFF(-8908772), /* Filter:6, Coefficient: 51 */ + CONVERT_COEFF(8758751), /* Filter:6, Coefficient: 52 */ + CONVERT_COEFF(-17520204), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(9436366), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(-3238487), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(-1090753), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(24640267), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(-22815396), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(19532216), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(-15564685), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(17030626), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-8400622), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(1894708), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(2528815), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-18312401), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(16738756), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-14130963), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(11068153), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-3273956), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(1220394), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(260933), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-1203455), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(2182958), /* Filter:7, Coefficient: 53 */ + CONVERT_COEFF(-1582255), /* Filter:7, Coefficient: 54 */ + CONVERT_COEFF(1061509), /* Filter:7, Coefficient: 55 */ + CONVERT_COEFF(-646664), /* Filter:7, Coefficient: 56 */ + CONVERT_COEFF(-7836150), /* Filter:6, Coefficient: 53 */ + CONVERT_COEFF(6498637), /* Filter:6, Coefficient: 54 */ + CONVERT_COEFF(-5031961), /* Filter:6, Coefficient: 55 */ + CONVERT_COEFF(3640700), /* Filter:6, Coefficient: 56 */ + CONVERT_COEFF(3746098), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(-5030962), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(5294951), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(-4882739), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(11524851), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-7845878), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(4787215), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-2456850), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(-5106362), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(6192755), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-6190960), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(5494166), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-8005697), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(5261877), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-3021912), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(1355425), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(1685203), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-1809078), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(1685077), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-1416065), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(342806), /* Filter:7, Coefficient: 57 */ + CONVERT_COEFF(-140284), /* Filter:7, Coefficient: 58 */ + CONVERT_COEFF(20786), /* Filter:7, Coefficient: 59 */ + CONVERT_COEFF(37371), /* Filter:7, Coefficient: 60 */ + CONVERT_COEFF(-2450499), /* Filter:6, Coefficient: 57 */ + CONVERT_COEFF(1518734), /* Filter:6, Coefficient: 58 */ + CONVERT_COEFF(-850198), /* Filter:6, Coefficient: 59 */ + CONVERT_COEFF(414533), /* Filter:6, Coefficient: 60 */ + CONVERT_COEFF(4097237), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(-3177789), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(2292208), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(-1540003), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(844451), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(140882), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-633875), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(781606), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-4443987), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(3305948), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(-2261053), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(1410461), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-242505), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-396647), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(672943), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(-703923), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(1087962), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-764527), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(486311), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-272876), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 44100 Hz to 48000 Hz */ + + CONVERT_COEFF(-55188), /* Filter:7, Coefficient: 61 */ + CONVERT_COEFF(50357), /* Filter:7, Coefficient: 62 */ + CONVERT_COEFF(-35994), /* Filter:7, Coefficient: 63 */ + CONVERT_COEFF(18259534), /* Filter:7, Coefficient: 64 */ + CONVERT_COEFF(-162721), /* Filter:6, Coefficient: 61 */ + CONVERT_COEFF(40706), /* Filter:6, Coefficient: 62 */ + CONVERT_COEFF(881), /* Filter:6, Coefficient: 63 */ + CONVERT_COEFF(-52642287), /* Filter:6, Coefficient: 64 */ + CONVERT_COEFF(963380), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(-562368), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(310806), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(55998086), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(-719947), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(558884), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-376234), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-26993761), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-789225), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(384817), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(-156478), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(5955995), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(595664), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-431821), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(269381), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(-589635), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(127167), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(-40869), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-294), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(12068), /* Filter:1, Coefficient: 64 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h new file mode 100644 index 000000000000..bb0cdb8cd0d9 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h @@ -0,0 +1,618 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 8000 Hz */ +/* NUM_FILTERS=4, FILTER_LENGTH=128, alpha=5.600000, gamma=0.415500 */ + +__cold_rodata static const int32_t coeff48000to08000[] = { + + /* Filter #1, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-3301), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-3924), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-3547), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-2001), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(3989), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(-5958), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-17787), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-28475), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(65517), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(63506), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(39846), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-6206), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(88725), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(154917), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(208524), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(227017), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(592), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(3785), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(6857), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(8947), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(-34495), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-32695), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-21285), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-655), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-68868), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-135707), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-189365), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-211084), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(190319), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(87541), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-77070), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-280839), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(9255), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(7264), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(2938), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-3172), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(26209), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(53920), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(75559), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(84121), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-185467), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(-105464), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(23711), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(182957), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-483590), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(-633541), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-677765), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-575509), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-9948), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-15871), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-19318), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-18942), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(74293), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(44149), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-3655), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-61592), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(340885), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(458887), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(499081), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(433742), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(-311577), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(93646), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(580763), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(1056783), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-14049), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(-4887), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(7242), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(20103), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-118123), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(-159680), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-173513), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-150856), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(254175), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-23258), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(-355924), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-679709), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(1409874), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(1531750), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(1343813), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(821550), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(30884), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(36752), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(35500), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(26152), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(-89716), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(3439), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(113663), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(219469), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-919754), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-1005668), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(-888441), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(-555451), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(11087), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-967418), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-1932735), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-2671792), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(9393), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-12331), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-35074), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(-54036), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(296574), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(322901), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(283864), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(176829), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(-39793), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(579126), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(1185270), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(1645395), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(-2981375), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-2714977), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(-1825131), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-391039), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-64488), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(-62823), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(-47496), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-19664), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(13593), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-179927), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(-367152), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(-507125), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(1835407), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(1668894), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(1121896), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(247943), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(1377035), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(3161285), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(4587051), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(5293861), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(16678), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(55149), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(87997), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(107539), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-562646), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-508764), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-339863), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-73626), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(-821316), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-1892108), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(-2740106), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-3153045), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(5014601), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(3647017), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(1301187), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(-1690645), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(107770), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(85829), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(42999), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-15023), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(249339), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(570716), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(824034), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(947166), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-2976939), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-2156713), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-762064), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(1008723), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-4809380), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-7428596), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-8928025), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(-8822328), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-78706), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(-136113), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-174958), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-184971), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(895533), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(653455), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(241140), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(-284575), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(2850676), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(4398591), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(5291841), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(5246926), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-6880893), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(-3213125), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(1702668), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(7060108), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-160114), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-100215), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-11645), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(93176), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-836548), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-1310257), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-1601506), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-1625994), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(4124428), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(1976711), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(-935042), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-4161104), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(11836509), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(14963038), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(15527995), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(12978729), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(197453), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(282648), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(331646), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(331926), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(-1337215), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-739195), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(108785), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(1096994), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-7120987), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-9191912), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-9814753), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-8599910), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(7284205), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(-976463), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(-10624045), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-19996714), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(278128), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(173526), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(30081), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-133038), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(2079471), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(2895796), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(3397039), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(3471563), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-5414116), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(-431194), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(5865019), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(12729600), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-27165458), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-30219478), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(-27579070), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-18285419), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-292255), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(-423276), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-505071), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-523436), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(3066123), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(2198356), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(958050), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(-503489), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(19252509), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(24488239), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(27599287), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(27990266), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(-2217112), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(19807628), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(46067140), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(74113281), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-473520), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(-360852), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-200645), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-15496), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-1994632), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(-3311919), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(-4271266), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-4736706), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(25410130), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(20004573), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(12308550), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(3178633), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(101068271), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(124000002), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(140320208), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(148144605), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(168169), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(324285), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(431264), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(475348), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(-4641842), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(-4000373), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(-2903906), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(-1507432), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-6325048), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-15089017), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(-22105139), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(-26612611), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(146558923), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(135748984), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(116974214), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(92388797), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(452628), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(369409), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(240897), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(88460), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(-4920), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(1400822), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(2528987), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(3247243), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(-28200972), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(-26858406), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(-22958846), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-17191493), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(64738752), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(36982432), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(11893275), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(-8295001), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-64023), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(-194079), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(-284155), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-324136), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(3489610), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(3263104), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(2642488), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(1754510), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-10445713), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-3671194), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(2263465), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(6691197), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-22148960), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(-29166675), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-29766384), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-25142508), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-312505), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(-255992), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(-167880), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(-65312), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(754742), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-198757), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(-970391), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(-1466526), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(9227960), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(9804583), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(8647121), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(6212516), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(-17019531), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(-7348727), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(2000942), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(9509007), /* Filter:1, Coefficient: 80 */ + + /* Filter #21, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(33847), /* Filter:4, Coefficient: 81 */ + CONVERT_COEFF(114046), /* Filter:4, Coefficient: 82 */ + CONVERT_COEFF(164441), /* Filter:4, Coefficient: 83 */ + CONVERT_COEFF(180290), /* Filter:4, Coefficient: 84 */ + CONVERT_COEFF(-1646620), /* Filter:3, Coefficient: 81 */ + CONVERT_COEFF(-1524717), /* Filter:3, Coefficient: 82 */ + CONVERT_COEFF(-1161761), /* Filter:3, Coefficient: 83 */ + CONVERT_COEFF(-650773), /* Filter:3, Coefficient: 84 */ + CONVERT_COEFF(3093389), /* Filter:2, Coefficient: 81 */ + CONVERT_COEFF(-89994), /* Filter:2, Coefficient: 82 */ + CONVERT_COEFF(-2791699), /* Filter:2, Coefficient: 83 */ + CONVERT_COEFF(-4619639), /* Filter:2, Coefficient: 84 */ + CONVERT_COEFF(14188512), /* Filter:1, Coefficient: 81 */ + CONVERT_COEFF(15667833), /* Filter:1, Coefficient: 82 */ + CONVERT_COEFF(14165998), /* Filter:1, Coefficient: 83 */ + CONVERT_COEFF(10376123), /* Filter:1, Coefficient: 84 */ + + /* Filter #22, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(163170), /* Filter:4, Coefficient: 85 */ + CONVERT_COEFF(120081), /* Filter:4, Coefficient: 86 */ + CONVERT_COEFF(61686), /* Filter:4, Coefficient: 87 */ + CONVERT_COEFF(66), /* Filter:4, Coefficient: 88 */ + CONVERT_COEFF(-98000), /* Filter:3, Coefficient: 85 */ + CONVERT_COEFF(396363), /* Filter:3, Coefficient: 86 */ + CONVERT_COEFF(754499), /* Filter:3, Coefficient: 87 */ + CONVERT_COEFF(931769), /* Filter:3, Coefficient: 88 */ + CONVERT_COEFF(-5381371), /* Filter:2, Coefficient: 85 */ + CONVERT_COEFF(-5091650), /* Filter:2, Coefficient: 86 */ + CONVERT_COEFF(-3944213), /* Filter:2, Coefficient: 87 */ + CONVERT_COEFF(-2256257), /* Filter:2, Coefficient: 88 */ + CONVERT_COEFF(5285564), /* Filter:1, Coefficient: 85 */ + CONVERT_COEFF(-30634), /* Filter:1, Coefficient: 86 */ + CONVERT_COEFF(-4605459), /* Filter:1, Coefficient: 87 */ + CONVERT_COEFF(-7732849), /* Filter:1, Coefficient: 88 */ + + /* Filter #23, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-53544), /* Filter:4, Coefficient: 89 */ + CONVERT_COEFF(-90654), /* Filter:4, Coefficient: 90 */ + CONVERT_COEFF(-106725), /* Filter:4, Coefficient: 91 */ + CONVERT_COEFF(-101537), /* Filter:4, Coefficient: 92 */ + CONVERT_COEFF(920613), /* Filter:3, Coefficient: 89 */ + CONVERT_COEFF(747526), /* Filter:3, Coefficient: 90 */ + CONVERT_COEFF(464354), /* Filter:3, Coefficient: 91 */ + CONVERT_COEFF(136043), /* Filter:3, Coefficient: 92 */ + CONVERT_COEFF(-398040), /* Filter:2, Coefficient: 89 */ + CONVERT_COEFF(1278522), /* Filter:2, Coefficient: 90 */ + CONVERT_COEFF(2499600), /* Filter:2, Coefficient: 91 */ + CONVERT_COEFF(3108250), /* Filter:2, Coefficient: 92 */ + CONVERT_COEFF(-9056522), /* Filter:1, Coefficient: 89 */ + CONVERT_COEFF(-8586783), /* Filter:1, Coefficient: 90 */ + CONVERT_COEFF(-6650839), /* Filter:1, Coefficient: 91 */ + CONVERT_COEFF(-3793297), /* Filter:1, Coefficient: 92 */ + + /* Filter #24, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-78733), /* Filter:4, Coefficient: 93 */ + CONVERT_COEFF(-44705), /* Filter:4, Coefficient: 94 */ + CONVERT_COEFF(-7104), /* Filter:4, Coefficient: 95 */ + CONVERT_COEFF(26726), /* Filter:4, Coefficient: 96 */ + CONVERT_COEFF(-172582), /* Filter:3, Coefficient: 93 */ + CONVERT_COEFF(-408494), /* Filter:3, Coefficient: 94 */ + CONVERT_COEFF(-538640), /* Filter:3, Coefficient: 95 */ + CONVERT_COEFF(-553497), /* Filter:3, Coefficient: 96 */ + CONVERT_COEFF(3077680), /* Filter:2, Coefficient: 93 */ + CONVERT_COEFF(2499519), /* Filter:2, Coefficient: 94 */ + CONVERT_COEFF(1552119), /* Filter:2, Coefficient: 95 */ + CONVERT_COEFF(456990), /* Filter:2, Coefficient: 96 */ + CONVERT_COEFF(-650487), /* Filter:1, Coefficient: 93 */ + CONVERT_COEFF(2175698), /* Filter:1, Coefficient: 94 */ + CONVERT_COEFF(4221669), /* Filter:1, Coefficient: 95 */ + CONVERT_COEFF(5227614), /* Filter:1, Coefficient: 96 */ + + /* Filter #25, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(51065), /* Filter:4, Coefficient: 97 */ + CONVERT_COEFF(62685), /* Filter:4, Coefficient: 98 */ + CONVERT_COEFF(61148), /* Filter:4, Coefficient: 99 */ + CONVERT_COEFF(48532), /* Filter:4, Coefficient: 100 */ + CONVERT_COEFF(-465874), /* Filter:3, Coefficient: 97 */ + CONVERT_COEFF(-305721), /* Filter:3, Coefficient: 98 */ + CONVERT_COEFF(-112385), /* Filter:3, Coefficient: 99 */ + CONVERT_COEFF(73933), /* Filter:3, Coefficient: 100 */ + CONVERT_COEFF(-567215), /* Filter:2, Coefficient: 97 */ + CONVERT_COEFF(-1344377), /* Filter:2, Coefficient: 98 */ + CONVERT_COEFF(-1767688), /* Filter:2, Coefficient: 99 */ + CONVERT_COEFF(-1810088), /* Filter:2, Coefficient: 100 */ + CONVERT_COEFF(5157406), /* Filter:1, Coefficient: 97 */ + CONVERT_COEFF(4175038), /* Filter:1, Coefficient: 98 */ + CONVERT_COEFF(2587411), /* Filter:1, Coefficient: 99 */ + CONVERT_COEFF(768423), /* Filter:1, Coefficient: 100 */ + + /* Filter #26, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(28723), /* Filter:4, Coefficient: 101 */ + CONVERT_COEFF(6440), /* Filter:4, Coefficient: 102 */ + CONVERT_COEFF(-13774), /* Filter:4, Coefficient: 103 */ + CONVERT_COEFF(-28398), /* Filter:4, Coefficient: 104 */ + CONVERT_COEFF(219811), /* Filter:3, Coefficient: 101 */ + CONVERT_COEFF(303981), /* Filter:3, Coefficient: 102 */ + CONVERT_COEFF(319710), /* Filter:3, Coefficient: 103 */ + CONVERT_COEFF(274094), /* Filter:3, Coefficient: 104 */ + CONVERT_COEFF(-1518489), /* Filter:2, Coefficient: 101 */ + CONVERT_COEFF(-994890), /* Filter:2, Coefficient: 102 */ + CONVERT_COEFF(-369667), /* Filter:2, Coefficient: 103 */ + CONVERT_COEFF(226880), /* Filter:2, Coefficient: 104 */ + CONVERT_COEFF(-919124), /* Filter:1, Coefficient: 101 */ + CONVERT_COEFF(-2188898), /* Filter:1, Coefficient: 102 */ + CONVERT_COEFF(-2873130), /* Filter:1, Coefficient: 103 */ + CONVERT_COEFF(-2936618), /* Filter:1, Coefficient: 104 */ + + /* Filter #27, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-35477), /* Filter:4, Coefficient: 105 */ + CONVERT_COEFF(-34783), /* Filter:4, Coefficient: 106 */ + CONVERT_COEFF(-27623), /* Filter:4, Coefficient: 107 */ + CONVERT_COEFF(-16364), /* Filter:4, Coefficient: 108 */ + CONVERT_COEFF(184790), /* Filter:3, Coefficient: 105 */ + CONVERT_COEFF(75160), /* Filter:3, Coefficient: 106 */ + CONVERT_COEFF(-31027), /* Filter:3, Coefficient: 107 */ + CONVERT_COEFF(-114243), /* Filter:3, Coefficient: 108 */ + CONVERT_COEFF(689048), /* Filter:2, Coefficient: 105 */ + CONVERT_COEFF(952149), /* Filter:2, Coefficient: 106 */ + CONVERT_COEFF(998741), /* Filter:2, Coefficient: 107 */ + CONVERT_COEFF(854886), /* Filter:2, Coefficient: 108 */ + CONVERT_COEFF(-2463839), /* Filter:1, Coefficient: 105 */ + CONVERT_COEFF(-1625344), /* Filter:1, Coefficient: 106 */ + CONVERT_COEFF(-632765), /* Filter:1, Coefficient: 107 */ + CONVERT_COEFF(307301), /* Filter:1, Coefficient: 108 */ + + /* Filter #28, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-3819), /* Filter:4, Coefficient: 109 */ + CONVERT_COEFF(7377), /* Filter:4, Coefficient: 110 */ + CONVERT_COEFF(15261), /* Filter:4, Coefficient: 111 */ + CONVERT_COEFF(18835), /* Filter:4, Coefficient: 112 */ + CONVERT_COEFF(-162364), /* Filter:3, Coefficient: 109 */ + CONVERT_COEFF(-171920), /* Filter:3, Coefficient: 110 */ + CONVERT_COEFF(-147466), /* Filter:3, Coefficient: 111 */ + CONVERT_COEFF(-99442), /* Filter:3, Coefficient: 112 */ + CONVERT_COEFF(578544), /* Filter:2, Coefficient: 109 */ + CONVERT_COEFF(243498), /* Filter:2, Coefficient: 110 */ + CONVERT_COEFF(-77378), /* Filter:2, Coefficient: 111 */ + CONVERT_COEFF(-326115), /* Filter:2, Coefficient: 112 */ + CONVERT_COEFF(1031494), /* Filter:1, Coefficient: 109 */ + CONVERT_COEFF(1443736), /* Filter:1, Coefficient: 110 */ + CONVERT_COEFF(1522566), /* Filter:1, Coefficient: 111 */ + CONVERT_COEFF(1312875), /* Filter:1, Coefficient: 112 */ + + /* Filter #29, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(18119), /* Filter:4, Coefficient: 113 */ + CONVERT_COEFF(13991), /* Filter:4, Coefficient: 114 */ + CONVERT_COEFF(7872), /* Filter:4, Coefficient: 115 */ + CONVERT_COEFF(1348), /* Filter:4, Coefficient: 116 */ + CONVERT_COEFF(-41184), /* Filter:3, Coefficient: 113 */ + CONVERT_COEFF(14196), /* Filter:3, Coefficient: 114 */ + CONVERT_COEFF(56400), /* Filter:3, Coefficient: 115 */ + CONVERT_COEFF(79557), /* Filter:3, Coefficient: 116 */ + CONVERT_COEFF(-468515), /* Filter:2, Coefficient: 113 */ + CONVERT_COEFF(-496901), /* Filter:2, Coefficient: 114 */ + CONVERT_COEFF(-427126), /* Filter:2, Coefficient: 115 */ + CONVERT_COEFF(-291358), /* Filter:2, Coefficient: 116 */ + CONVERT_COEFF(906078), /* Filter:1, Coefficient: 113 */ + CONVERT_COEFF(414464), /* Filter:1, Coefficient: 114 */ + CONVERT_COEFF(-54245), /* Filter:1, Coefficient: 115 */ + CONVERT_COEFF(-417064), /* Filter:1, Coefficient: 116 */ + + /* Filter #30, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-4186), /* Filter:4, Coefficient: 117 */ + CONVERT_COEFF(-7781), /* Filter:4, Coefficient: 118 */ + CONVERT_COEFF(-9064), /* Filter:4, Coefficient: 119 */ + CONVERT_COEFF(-8214), /* Filter:4, Coefficient: 120 */ + CONVERT_COEFF(82669), /* Filter:3, Coefficient: 117 */ + CONVERT_COEFF(68978), /* Filter:3, Coefficient: 118 */ + CONVERT_COEFF(44558), /* Filter:3, Coefficient: 119 */ + CONVERT_COEFF(16546), /* Filter:3, Coefficient: 120 */ + CONVERT_COEFF(-128765), /* Filter:2, Coefficient: 117 */ + CONVERT_COEFF(23638), /* Filter:2, Coefficient: 118 */ + CONVERT_COEFF(138103), /* Filter:2, Coefficient: 119 */ + CONVERT_COEFF(200098), /* Filter:2, Coefficient: 120 */ + CONVERT_COEFF(-627465), /* Filter:1, Coefficient: 117 */ + CONVERT_COEFF(-677691), /* Filter:1, Coefficient: 118 */ + CONVERT_COEFF(-592807), /* Filter:1, Coefficient: 119 */ + CONVERT_COEFF(-419175), /* Filter:1, Coefficient: 120 */ + + /* Filter #31, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(-5833), /* Filter:4, Coefficient: 121 */ + CONVERT_COEFF(-2739), /* Filter:4, Coefficient: 122 */ + CONVERT_COEFF(251), /* Filter:4, Coefficient: 123 */ + CONVERT_COEFF(2500), /* Filter:4, Coefficient: 124 */ + CONVERT_COEFF(-8556), /* Filter:3, Coefficient: 121 */ + CONVERT_COEFF(-26141), /* Filter:3, Coefficient: 122 */ + CONVERT_COEFF(-34137), /* Filter:3, Coefficient: 123 */ + CONVERT_COEFF(-32972), /* Filter:3, Coefficient: 124 */ + CONVERT_COEFF(208777), /* Filter:2, Coefficient: 121 */ + CONVERT_COEFF(174473), /* Filter:2, Coefficient: 122 */ + CONVERT_COEFF(114277), /* Filter:2, Coefficient: 123 */ + CONVERT_COEFF(46990), /* Filter:2, Coefficient: 124 */ + CONVERT_COEFF(-210728), /* Filter:1, Coefficient: 121 */ + CONVERT_COEFF(-16339), /* Filter:1, Coefficient: 122 */ + CONVERT_COEFF(129243), /* Filter:1, Coefficient: 123 */ + CONVERT_COEFF(209618), /* Filter:1, Coefficient: 124 */ + + /* Filter #32, conversion from 48000 Hz to 8000 Hz */ + + CONVERT_COEFF(3662), /* Filter:4, Coefficient: 125 */ + CONVERT_COEFF(3707), /* Filter:4, Coefficient: 126 */ + CONVERT_COEFF(2870), /* Filter:4, Coefficient: 127 */ + CONVERT_COEFF(335927), /* Filter:4, Coefficient: 128 */ + CONVERT_COEFF(-25001), /* Filter:3, Coefficient: 125 */ + CONVERT_COEFF(-13600), /* Filter:3, Coefficient: 126 */ + CONVERT_COEFF(-2195), /* Filter:3, Coefficient: 127 */ + CONVERT_COEFF(-458842), /* Filter:3, Coefficient: 128 */ + CONVERT_COEFF(-11331), /* Filter:2, Coefficient: 125 */ + CONVERT_COEFF(-50338), /* Filter:2, Coefficient: 126 */ + CONVERT_COEFF(-66501), /* Filter:2, Coefficient: 127 */ + CONVERT_COEFF(55557), /* Filter:2, Coefficient: 128 */ + CONVERT_COEFF(226117), /* Filter:1, Coefficient: 125 */ + CONVERT_COEFF(193432), /* Filter:1, Coefficient: 126 */ + CONVERT_COEFF(133189), /* Filter:1, Coefficient: 127 */ + CONVERT_COEFF(67358), /* Filter:1, Coefficient: 128 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h new file mode 100644 index 000000000000..3ab1223bc68a --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h @@ -0,0 +1,466 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 11025 Hz */ +/* NUM_FILTERS=4, FILTER_LENGTH=96, alpha=5.700000, gamma=0.417000 */ + +__cold_rodata static const int32_t coeff48000to11025[] = { + + /* Filter #1, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-5276), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-12951), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-16487), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-12216), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(41170), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(24714), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-16130), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-68429), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(90439), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(156156), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(166381), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(85133), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-36529), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(89808), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(257736), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(391514), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(540), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(18145), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(33188), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(37139), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(-107599), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-106756), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-50319), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(54036), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-87027), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-298777), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-456335), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-457073), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(396015), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(201937), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-185458), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-658946), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(24307), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(-4499), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(-40503), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-68959), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(171682), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(249813), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(237789), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(112225), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-238997), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(174254), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(656680), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(1007920), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-1024879), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(-1067924), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-648377), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(205595), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-74494), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-48117), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(7013), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(73976), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-104001), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(-339463), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-493890), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-476173), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(1025112), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(596557), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(-220901), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(-1180767), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(1256824), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(2103513), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(2312568), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(1604844), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(126345), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(137657), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(93034), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-1731), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-247687), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(147413), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(581451), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(878980), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-1906017), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-2021581), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(-1318811), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(113142), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(21881), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-2005545), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-3742184), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(-4386660), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-118109), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(-212105), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-239586), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-174729), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(881333), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(518154), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-143352), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(-896882), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(1853939), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(3252995), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(3650862), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(2652871), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-3396385), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-779248), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(2779889), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(6048018), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-24432), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(168052), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(333676), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(400546), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-1453384), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-1543048), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-1029512), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(8151), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(350965), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-2609224), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(-5174708), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-6226971), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(7629537), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(6502907), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(2518773), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-3351884), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(322102), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(100162), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(-207102), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-497722), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(1264729), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(2286428), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(2621280), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(1995783), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(-5018466), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-1546610), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(3294826), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(7886940), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(-9170470), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(-12602533), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-11762954), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-6054156), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-657260), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-599700), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-303789), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(169268), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(453662), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-1602376), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-3496605), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-4480875), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(10370645), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(9314284), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(4342738), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-3512410), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(3330959), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(13498465), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(20611375), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(21154438), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(685660), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(1076048), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(1189612), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(947693), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-3992362), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(-1882814), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(1466176), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(5196025), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-11914041), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-17803913), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-18332740), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(-11858951), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(13330874), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-1889934), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-20501310), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(-36179493), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(378181), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(-382925), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-1125926), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-1628684), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(8192385), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(9416173), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(8242832), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(4697569), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(1316974), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(18760292), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(36372844), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(49436642), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-41896152), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(-32009702), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-4216305), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(39274782), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-1725846), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-1363486), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-620573), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(310846), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-498294), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-6096589), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-10663877), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-12993683), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(53943647), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(47812424), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(31605996), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(8506473), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(91783432), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(143507821), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(183866425), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(204194917), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(1181314), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(1758112), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(1894276), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(1570552), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(-12461531), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-9210650), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-4109186), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(1507388), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-16471793), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-37810559), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-50965956), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-53557320), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(200025358), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(172279208), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(127020431), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(73842077), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(897380), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(77192), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(-659808), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-1125092), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(6226751), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(8960398), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(9231586), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(7267416), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-45919329), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(-30871316), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-12800875), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(3635617), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(23363491), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-15432232), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(-37267226), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-41497734), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-1224338), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(-977499), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-502204), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(31518), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(3877187), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(167487), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(-2806990), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(-4344247), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(14790492), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(18905076), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(16363909), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(9303267), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(-31720872), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-14278017), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(3817177), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(16872467), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(458491), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(668294), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(632521), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(402936), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-4258557), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(-2868976), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(-834307), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(1096696), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(754906), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-6366692), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(-10107072), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(-9905933), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(21863748), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(18819227), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(10252203), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(-56657), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(84254), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(-206679), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-380298), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(-399448), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(2330787), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(2593273), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(1966425), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(807090), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-6539839), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-1656983), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(2892064), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(5683926), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(-8463246), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-12588471), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(-11859264), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(-7381325), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-283699), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-94156), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(93448), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(216583), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(-413134), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(-1281462), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-1571374), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(-1287849), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(6114153), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(4458459), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(1633571), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-1216156), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(-1289801), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(4127659), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(7210746), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(7366642), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(245013), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(185843), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(74882), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-40571), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(-627349), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(120817), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(688759), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(917942), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-3140159), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-3667371), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(-2881001), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(-1291563), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(5079392), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(1556950), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-1803822), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-3921315), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-120129), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(-143205), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(-112715), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(-49779), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(794458), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(427950), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(-8978), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(-352674), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(414286), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(1640931), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(2071182), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(1722382), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(-4335656), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(-3247151), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(-1321521), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(627989), /* Filter:1, Coefficient: 80 */ + + /* Filter #21, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(17150), /* Filter:4, Coefficient: 81 */ + CONVERT_COEFF(63819), /* Filter:4, Coefficient: 82 */ + CONVERT_COEFF(78078), /* Filter:4, Coefficient: 83 */ + CONVERT_COEFF(61882), /* Filter:4, Coefficient: 84 */ + CONVERT_COEFF(-504123), /* Filter:3, Coefficient: 81 */ + CONVERT_COEFF(-451338), /* Filter:3, Coefficient: 82 */ + CONVERT_COEFF(-256412), /* Filter:3, Coefficient: 83 */ + CONVERT_COEFF(-18431), /* Filter:3, Coefficient: 84 */ + CONVERT_COEFF(875132), /* Filter:2, Coefficient: 81 */ + CONVERT_COEFF(-76722), /* Filter:2, Coefficient: 82 */ + CONVERT_COEFF(-786703), /* Filter:2, Coefficient: 83 */ + CONVERT_COEFF(-1067401), /* Filter:2, Coefficient: 84 */ + CONVERT_COEFF(1947985), /* Filter:1, Coefficient: 81 */ + CONVERT_COEFF(2336224), /* Filter:1, Coefficient: 82 */ + CONVERT_COEFF(1872047), /* Filter:1, Coefficient: 83 */ + CONVERT_COEFF(907040), /* Filter:1, Coefficient: 84 */ + + /* Filter #22, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(27740), /* Filter:4, Coefficient: 85 */ + CONVERT_COEFF(-8034), /* Filter:4, Coefficient: 86 */ + CONVERT_COEFF(-32141), /* Filter:4, Coefficient: 87 */ + CONVERT_COEFF(-38602), /* Filter:4, Coefficient: 88 */ + CONVERT_COEFF(169685), /* Filter:3, Coefficient: 85 */ + CONVERT_COEFF(253408), /* Filter:3, Coefficient: 86 */ + CONVERT_COEFF(228111), /* Filter:3, Coefficient: 87 */ + CONVERT_COEFF(129707), /* Filter:3, Coefficient: 88 */ + CONVERT_COEFF(-922590), /* Filter:2, Coefficient: 85 */ + CONVERT_COEFF(-503998), /* Filter:2, Coefficient: 86 */ + CONVERT_COEFF(-23864), /* Filter:2, Coefficient: 87 */ + CONVERT_COEFF(335367), /* Filter:2, Coefficient: 88 */ + CONVERT_COEFF(-116914), /* Filter:1, Coefficient: 85 */ + CONVERT_COEFF(-842108), /* Filter:1, Coefficient: 86 */ + CONVERT_COEFF(-1100770), /* Filter:1, Coefficient: 87 */ + CONVERT_COEFF(-928696), /* Filter:1, Coefficient: 88 */ + + /* Filter #23, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(-29393), /* Filter:4, Coefficient: 89 */ + CONVERT_COEFF(-11914), /* Filter:4, Coefficient: 90 */ + CONVERT_COEFF(5087), /* Filter:4, Coefficient: 91 */ + CONVERT_COEFF(15234), /* Filter:4, Coefficient: 92 */ + CONVERT_COEFF(12179), /* Filter:3, Coefficient: 89 */ + CONVERT_COEFF(-76760), /* Filter:3, Coefficient: 90 */ + CONVERT_COEFF(-112173), /* Filter:3, Coefficient: 91 */ + CONVERT_COEFF(-95873), /* Filter:3, Coefficient: 92 */ + CONVERT_COEFF(480135), /* Filter:2, Coefficient: 89 */ + CONVERT_COEFF(418338), /* Filter:2, Coefficient: 90 */ + CONVERT_COEFF(230980), /* Filter:2, Coefficient: 91 */ + CONVERT_COEFF(22991), /* Filter:2, Coefficient: 92 */ + CONVERT_COEFF(-502241), /* Filter:1, Coefficient: 89 */ + CONVERT_COEFF(-39321), /* Filter:1, Coefficient: 90 */ + CONVERT_COEFF(290352), /* Filter:1, Coefficient: 91 */ + CONVERT_COEFF(414260), /* Filter:1, Coefficient: 92 */ + + /* Filter #24, conversion from 48000 Hz to 11025 Hz */ + + CONVERT_COEFF(16461), /* Filter:4, Coefficient: 93 */ + CONVERT_COEFF(10800), /* Filter:4, Coefficient: 94 */ + CONVERT_COEFF(2550), /* Filter:4, Coefficient: 95 */ + CONVERT_COEFF(-797683), /* Filter:4, Coefficient: 96 */ + CONVERT_COEFF(-49051), /* Filter:3, Coefficient: 93 */ + CONVERT_COEFF(991), /* Filter:3, Coefficient: 94 */ + CONVERT_COEFF(33364), /* Filter:3, Coefficient: 95 */ + CONVERT_COEFF(1235716), /* Filter:3, Coefficient: 96 */ + CONVERT_COEFF(-122969), /* Filter:2, Coefficient: 93 */ + CONVERT_COEFF(-172363), /* Filter:2, Coefficient: 94 */ + CONVERT_COEFF(-138918), /* Filter:2, Coefficient: 95 */ + CONVERT_COEFF(-375528), /* Filter:2, Coefficient: 96 */ + CONVERT_COEFF(356624), /* Filter:1, Coefficient: 93 */ + CONVERT_COEFF(201071), /* Filter:1, Coefficient: 94 */ + CONVERT_COEFF(40502), /* Filter:1, Coefficient: 95 */ + CONVERT_COEFF(-62504), /* Filter:1, Coefficient: 96 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h new file mode 100644 index 000000000000..89a08f8e1506 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h @@ -0,0 +1,466 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 12000 Hz */ +/* NUM_FILTERS=4, FILTER_LENGTH=96, alpha=5.700000, gamma=0.424000 */ + +__cold_rodata static const int32_t coeff48000to12000[] = { + + /* Filter #1, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(9466), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(18324), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(18675), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(6681), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(-44320), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(-15044), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(41846), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(99856), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-108866), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-168122), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(-143205), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-4840), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(18979), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-124739), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(-289576), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(-372252), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-14873), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-36092), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(-43775), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-28417), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(120645), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(74642), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-36940), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-172008), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(212485), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(406758), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(446885), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(243397), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-270550), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(47706), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(493005), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(859159), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(8921), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(53986), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(83668), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(76633), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(-259236), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-230916), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-63713), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(194231), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-181655), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(-668246), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-964705), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(-841844), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(902116), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(470138), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-375031), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-1319757), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(25833), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-53679), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-127150), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-153896), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(429216), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(506489), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(338544), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-54472), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(-229172), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(697753), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(1541275), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(1833706), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(-1890703), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-1664796), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(-514224), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(1238423), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-107640), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(6019), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(144977), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(244094), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-527257), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(-854646), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-830345), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-379134), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(1268127), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-96526), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(-1771933), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-2986182), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(2863711), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(3496880), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(2551682), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(94379), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(243618), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(120959), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-89812), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-303143), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(373317), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(1118639), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(1481524), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(1194410), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-3011832), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-1547918), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(1028425), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(3697569), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-3026789), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-5421590), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-5729809), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-3309613), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-414069), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-346290), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-95407), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(254838), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(254718), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-1017842), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-2072112), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(-2348186), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(5163786), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(4438011), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(1391449), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-2999213), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(1279200), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(6283525), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(9357238), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(8581017), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(556057), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(654070), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(461041), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(8985), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(-1547890), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(169371), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(2173059), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(3569126), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(-6896234), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-8311637), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-6031532), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(-353097), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(3488394), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(-4399594), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-11887580), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-15284742), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-543384), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-960956), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-1025319), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(-634838), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(3569496), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(1878806), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-1076651), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-4206990), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(6748994), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(12209118), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(13074826), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(7888560), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(-12059514), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-2284367), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(10842409), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(21814880), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(131905), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(1022024), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(1689633), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(1826448), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-6121966), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(-5683979), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(-2536796), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(2619817), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-2343046), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-14088848), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-22312461), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(-22299178), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(24861172), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(16527773), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-2222990), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(-25382165), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(1291803), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(187823), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-1156014), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-2289689), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(8156827), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(12037112), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(12558708), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(9041064), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-11640045), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(8421631), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(32901411), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(54414451), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-43234314), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(-45424925), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-24777921), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(19525839), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-2804099), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-2486101), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-1405857), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(99935), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(2176743), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-6112957), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-13291600), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-17077204), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(65561608), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(61534767), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(41975533), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(11356417), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(80690239), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(145621917), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(198554116), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(225828200), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(1544944), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(2466704), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(2590632), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(1922395), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(-16247012), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-11073761), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-3227323), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(4820544), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-22315217), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-50044994), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-64751780), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-63486697), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(220203456), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(183182934), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(124528682), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(59139166), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(735067), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-540990), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(-1480192), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-1812185), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(10661840), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(12763578), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(10929621), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(6261251), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-48196279), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(-24804128), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-1006930), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(16367589), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(2395365), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-34403398), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(-46984107), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-38540927), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-1504699), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(-752135), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(118595), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(782220), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(660837), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(-3907345), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(-6107752), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(-5624729), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(23479491), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(20364635), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(10388086), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(-1396259), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(-17723958), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(4911585), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(20616375), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(25014862), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(1034412), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(852013), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(377238), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-159449), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-3138072), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(63987), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(2647613), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(3737272), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(-10266950), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-13455602), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(-10821182), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(-4453036), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(18775762), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(6405039), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-6134454), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(-13930540), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-540437), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(-643355), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-474537), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(-146712), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(3175158), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(1467919), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(-516205), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(-1946005), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(2499446), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(7214349), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(8236197), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(5814958), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(-14805492), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-9671153), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(-1632211), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(5613145), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(182504), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(380962), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(391293), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(242079), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(-2350019), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(-1745607), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-551374), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(648570), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(1519255), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(-2610059), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(-4955468), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-4899346), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(9335222), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(8686809), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(4712022), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(-403519), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(22015), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(-166585), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(-252342), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-219066), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(1369416), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(1406290), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(869654), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(84471), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-2899640), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-115895), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(2186507), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(3171366), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-4412139), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(-5920243), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-4796349), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-1992494), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-102810), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(32566), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(127289), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(150143), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-582238), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-881098), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(-762309), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(-358757), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(2695169), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(1237005), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(-416702), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-1556295), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(1044258), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(3054325), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(3442737), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(2390972), /* Filter:1, Coefficient: 80 */ + + /* Filter #21, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(106283), /* Filter:4, Coefficient: 81 */ + CONVERT_COEFF(27996), /* Filter:4, Coefficient: 82 */ + CONVERT_COEFF(-44477), /* Filter:4, Coefficient: 83 */ + CONVERT_COEFF(-81857), /* Filter:4, Coefficient: 84 */ + CONVERT_COEFF(104868), /* Filter:3, Coefficient: 81 */ + CONVERT_COEFF(424671), /* Filter:3, Coefficient: 82 */ + CONVERT_COEFF(499517), /* Filter:3, Coefficient: 83 */ + CONVERT_COEFF(352818), /* Filter:3, Coefficient: 84 */ + CONVERT_COEFF(-1827601), /* Filter:2, Coefficient: 81 */ + CONVERT_COEFF(-1307300), /* Filter:2, Coefficient: 82 */ + CONVERT_COEFF(-381962), /* Filter:2, Coefficient: 83 */ + CONVERT_COEFF(479247), /* Filter:2, Coefficient: 84 */ + CONVERT_COEFF(626053), /* Filter:1, Coefficient: 81 */ + CONVERT_COEFF(-990379), /* Filter:1, Coefficient: 82 */ + CONVERT_COEFF(-1844980), /* Filter:1, Coefficient: 83 */ + CONVERT_COEFF(-1771871), /* Filter:1, Coefficient: 84 */ + + /* Filter #22, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-76222), /* Filter:4, Coefficient: 85 */ + CONVERT_COEFF(-39943), /* Filter:4, Coefficient: 86 */ + CONVERT_COEFF(4124), /* Filter:4, Coefficient: 87 */ + CONVERT_COEFF(35042), /* Filter:4, Coefficient: 88 */ + CONVERT_COEFF(96315), /* Filter:3, Coefficient: 85 */ + CONVERT_COEFF(-136873), /* Filter:3, Coefficient: 86 */ + CONVERT_COEFF(-254389), /* Filter:3, Coefficient: 87 */ + CONVERT_COEFF(-235483), /* Filter:3, Coefficient: 88 */ + CONVERT_COEFF(939561), /* Filter:2, Coefficient: 85 */ + CONVERT_COEFF(907226), /* Filter:2, Coefficient: 86 */ + CONVERT_COEFF(518385), /* Filter:2, Coefficient: 87 */ + CONVERT_COEFF(25446), /* Filter:2, Coefficient: 88 */ + CONVERT_COEFF(-1021645), /* Filter:1, Coefficient: 85 */ + CONVERT_COEFF(-61990), /* Filter:1, Coefficient: 86 */ + CONVERT_COEFF(668408), /* Filter:1, Coefficient: 87 */ + CONVERT_COEFF(936512), /* Filter:1, Coefficient: 88 */ + + /* Filter #23, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(42668), /* Filter:4, Coefficient: 89 */ + CONVERT_COEFF(29706), /* Filter:4, Coefficient: 90 */ + CONVERT_COEFF(7441), /* Filter:4, Coefficient: 91 */ + CONVERT_COEFF(-11516), /* Filter:4, Coefficient: 92 */ + CONVERT_COEFF(-123440), /* Filter:3, Coefficient: 89 */ + CONVERT_COEFF(8781), /* Filter:3, Coefficient: 90 */ + CONVERT_COEFF(98290), /* Filter:3, Coefficient: 91 */ + CONVERT_COEFF(118044), /* Filter:3, Coefficient: 92 */ + CONVERT_COEFF(-339383), /* Filter:2, Coefficient: 89 */ + CONVERT_COEFF(-459507), /* Filter:2, Coefficient: 90 */ + CONVERT_COEFF(-355164), /* Filter:2, Coefficient: 91 */ + CONVERT_COEFF(-138328), /* Filter:2, Coefficient: 92 */ + CONVERT_COEFF(761504), /* Filter:1, Coefficient: 89 */ + CONVERT_COEFF(341342), /* Filter:1, Coefficient: 90 */ + CONVERT_COEFF(-79676), /* Filter:1, Coefficient: 91 */ + CONVERT_COEFF(-329103), /* Filter:1, Coefficient: 92 */ + + /* Filter #24, conversion from 48000 Hz to 12000 Hz */ + + CONVERT_COEFF(-19411), /* Filter:4, Coefficient: 93 */ + CONVERT_COEFF(-15780), /* Filter:4, Coefficient: 94 */ + CONVERT_COEFF(-5811), /* Filter:4, Coefficient: 95 */ + CONVERT_COEFF(758261), /* Filter:4, Coefficient: 96 */ + CONVERT_COEFF(79948), /* Filter:3, Coefficient: 93 */ + CONVERT_COEFF(19085), /* Filter:3, Coefficient: 94 */ + CONVERT_COEFF(-29023), /* Filter:3, Coefficient: 95 */ + CONVERT_COEFF(-1187553), /* Filter:3, Coefficient: 96 */ + CONVERT_COEFF(62290), /* Filter:2, Coefficient: 93 */ + CONVERT_COEFF(164272), /* Filter:2, Coefficient: 94 */ + CONVERT_COEFF(156134), /* Filter:2, Coefficient: 95 */ + CONVERT_COEFF(378483), /* Filter:2, Coefficient: 96 */ + CONVERT_COEFF(-360897), /* Filter:1, Coefficient: 93 */ + CONVERT_COEFF(-238066), /* Filter:1, Coefficient: 94 */ + CONVERT_COEFF(-70489), /* Filter:1, Coefficient: 95 */ + CONVERT_COEFF(50810), /* Filter:1, Coefficient: 96 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h new file mode 100644 index 000000000000..7f972f251991 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h @@ -0,0 +1,562 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 16000 Hz */ +/* NUM_FILTERS=5, FILTER_LENGTH=96, alpha=5.700000, gamma=0.443000 */ + +__cold_rodata static const int32_t coeff48000to16000[] = { + + /* Filter #1, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(6003), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-2286), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(-11917), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(-12263), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(16701), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(40694), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(27405), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-25736), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(-56844), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(26944), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(132074), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(141901), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-147894), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-187545), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(-21075), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(277248), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(14698), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-167333), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(-289523), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(-163034), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(1010), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(18750), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(23487), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(5356), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(-75665), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-64460), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(21621), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(120266), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(-5491), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-220739), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-298783), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-96954), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(434836), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(201545), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-357476), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-796006), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(218113), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(572796), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(507886), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-103264), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-24865), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(-40246), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(-20333), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(26070), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(132288), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(13456), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(-160847), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-233861), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(286982), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(528042), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(330026), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(-261850), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-608575), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(261248), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(1195810), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(1292859), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-870589), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(-1084744), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-322241), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(1022402), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(61074), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(47049), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(-16265), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-81433), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(-100488), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(171929), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(359676), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(257462), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-794371), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(-728986), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(53574), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(1014174), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(174255), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-1469546), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(-2223834), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(-1105863), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(1845595), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(1186048), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(-793496), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(-2620309), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-86732), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-11725), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(93077), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(136905), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(-117314), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(-482097), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-490512), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-44622), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(1290134), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(433539), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-1052827), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-1945766), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(1365285), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(3245541), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(2622791), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-576159), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(-2535935), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-84562), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(3100653), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(4273125), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(64518), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(-84123), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(-189618), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(-145818), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(552271), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(783867), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(351343), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-501169), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(-1269113), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(735909), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(2545279), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(2459933), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-4050257), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-4676104), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(-1197064), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(4181701), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(1843458), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-2859084), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-6099452), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-4589449), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(40024), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(229992), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(253530), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(54594), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(-1090434), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-823146), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(245247), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(1324309), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(124819), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-2847668), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-3912612), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(-1694303), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(7014764), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(4162168), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(-3070757), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-9141382), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(1405180), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(7494249), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(8215482), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(1730865), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-235096), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(-376320), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-213387), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(172458), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(1448025), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(304353), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(-1354202), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-2164152), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(2525824), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(5399928), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(4073459), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(-1173325), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(-8346879), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(91892), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(10287607), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(13522720), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(-7725810), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(-12333767), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-6913819), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(5879577), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(488565), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(444779), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(3934), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(-538903), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-1231572), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(991042), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(2832294), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(2605690), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-6524989), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-7262601), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-1715100), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(6645311), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(5393659), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-9375299), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(-19144348), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-14082933), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(16237057), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(14362523), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(-839543), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(-18862506), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-743652), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-364983), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(412423), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(1049680), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(51807), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(-3160575), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-4453939), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-2290054), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(11124179), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(6869327), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(-4598379), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-15255006), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(4836350), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(24247448), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(27060755), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(6196430), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-24233009), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-8964202), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(18626760), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(37047113), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(1021779), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(223192), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-900926), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(-1626034), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(2394425), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(6494128), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(6785094), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(2350160), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(-15741799), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-2587077), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(17884441), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(32479337), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-26945239), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-47161583), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-32017732), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(20427044), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(26747798), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(-12522864), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-55553443), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(-63801692), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-1450725), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(-470498), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(661749), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(1177778), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(-4430794), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-9217671), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-8589764), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(-2482951), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(29620390), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(7771362), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-22319484), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-43669888), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(85909205), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(126153193), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(112402280), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(44979247), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(-10171046), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(99475669), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(223708992), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(305859586), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(729289), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(-368490), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(-1360978), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(-1582611), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(5588041), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(10764075), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(10021818), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(4102867), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(-43706637), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-22383172), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(7781413), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(29772819), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-44758225), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-112244374), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-126089107), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-85924595), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(305859586), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(223708992), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(99475669), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-10171046), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-908464), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(187247), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(989311), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(1041404), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(-3113458), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-7286202), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(-6424181), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-1920843), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(32745687), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(18147500), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-2455994), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(-15794058), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-20476276), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(31981862), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(47161892), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(26973318), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-63801692), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-55553443), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(-12522864), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(26747798), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(427927), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(-342034), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(-731079), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(-543506), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(2748904), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(4570973), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(2912804), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-421780), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-15430280), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(-4768911), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(6810261), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(11194720), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-6166649), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-27051114), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(-24261125), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(-4859188), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(37047113), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(18626760), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(-8964202), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-24233009), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-11110), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(432181), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(487097), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(181137), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(-2809542), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(-2751305), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-733429), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(1447308), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(6774473), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(-1626617), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(-7269584), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-6605985), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(14069130), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(19148004), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(9390672), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(-5379859), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(-18862506), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(-839543), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(14362523), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(16237057), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-202750), /* Filter:5, Coefficient: 65 */ + CONVERT_COEFF(-371867), /* Filter:5, Coefficient: 66 */ + CONVERT_COEFF(-238987), /* Filter:5, Coefficient: 67 */ + CONVERT_COEFF(46710), /* Filter:5, Coefficient: 68 */ + CONVERT_COEFF(2187189), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(1200707), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-491006), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(-1524430), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(-1257592), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(4047456), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(5441306), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(2592862), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-13520338), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-10296413), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(-103461), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(8341557), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(5879577), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-6913819), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(-12333767), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(-7725810), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(248164), /* Filter:5, Coefficient: 69 */ + CONVERT_COEFF(230638), /* Filter:5, Coefficient: 70 */ + CONVERT_COEFF(45115), /* Filter:5, Coefficient: 71 */ + CONVERT_COEFF(-140841), /* Filter:5, Coefficient: 72 */ + CONVERT_COEFF(-1253197), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-105103), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(916311), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(1076028), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(-1655380), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(-3925882), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-2894376), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(85264), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(9145142), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(3079217), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(-4156100), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-7015142), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(1730865), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(8215482), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(7494249), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(1405180), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-188394), /* Filter:5, Coefficient: 73 */ + CONVERT_COEFF(-86846), /* Filter:5, Coefficient: 74 */ + CONVERT_COEFF(60603), /* Filter:5, Coefficient: 75 */ + CONVERT_COEFF(134904), /* Filter:5, Coefficient: 76 */ + CONVERT_COEFF(409479), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(-438001), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(-802163), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-501779), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(2455894), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(2573565), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(769517), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(-1256461), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-4187065), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(1191611), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(4674610), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(4053062), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-4589449), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(-6099452), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-2859084), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(1843458), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(94077), /* Filter:5, Coefficient: 77 */ + CONVERT_COEFF(-9066), /* Filter:5, Coefficient: 78 */ + CONVERT_COEFF(-84702), /* Filter:5, Coefficient: 79 */ + CONVERT_COEFF(-81382), /* Filter:5, Coefficient: 80 */ + CONVERT_COEFF(112941), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(522408), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(461411), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(70472), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-1959787), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-1077960), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(418428), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(1294567), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(580341), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(-2620598), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(-3246544), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-1368066), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(4273125), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(3100653), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(-84562), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(-2535935), /* Filter:1, Coefficient: 80 */ + + /* Filter #21, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-17797), /* Filter:5, Coefficient: 81 */ + CONVERT_COEFF(45404), /* Filter:5, Coefficient: 82 */ + CONVERT_COEFF(60538), /* Filter:5, Coefficient: 83 */ + CONVERT_COEFF(26766), /* Filter:5, Coefficient: 84 */ + CONVERT_COEFF(-290075), /* Filter:4, Coefficient: 81 */ + CONVERT_COEFF(-357062), /* Filter:4, Coefficient: 82 */ + CONVERT_COEFF(-144107), /* Filter:4, Coefficient: 83 */ + CONVERT_COEFF(126933), /* Filter:4, Coefficient: 84 */ + CONVERT_COEFF(1030932), /* Filter:3, Coefficient: 81 */ + CONVERT_COEFF(67431), /* Filter:3, Coefficient: 82 */ + CONVERT_COEFF(-727987), /* Filter:3, Coefficient: 83 */ + CONVERT_COEFF(-804281), /* Filter:3, Coefficient: 84 */ + CONVERT_COEFF(1103742), /* Filter:2, Coefficient: 81 */ + CONVERT_COEFF(2223786), /* Filter:2, Coefficient: 82 */ + CONVERT_COEFF(1471128), /* Filter:2, Coefficient: 83 */ + CONVERT_COEFF(-172596), /* Filter:2, Coefficient: 84 */ + CONVERT_COEFF(-2620309), /* Filter:1, Coefficient: 81 */ + CONVERT_COEFF(-793496), /* Filter:1, Coefficient: 82 */ + CONVERT_COEFF(1186048), /* Filter:1, Coefficient: 83 */ + CONVERT_COEFF(1845595), /* Filter:1, Coefficient: 84 */ + + /* Filter #22, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-19212), /* Filter:5, Coefficient: 85 */ + CONVERT_COEFF(-39619), /* Filter:5, Coefficient: 86 */ + CONVERT_COEFF(-25052), /* Filter:5, Coefficient: 87 */ + CONVERT_COEFF(4714), /* Filter:5, Coefficient: 88 */ + CONVERT_COEFF(239663), /* Filter:4, Coefficient: 85 */ + CONVERT_COEFF(146928), /* Filter:4, Coefficient: 86 */ + CONVERT_COEFF(-31586), /* Filter:4, Coefficient: 87 */ + CONVERT_COEFF(-139998), /* Filter:4, Coefficient: 88 */ + CONVERT_COEFF(-272737), /* Filter:3, Coefficient: 85 */ + CONVERT_COEFF(326716), /* Filter:3, Coefficient: 86 */ + CONVERT_COEFF(533127), /* Filter:3, Coefficient: 87 */ + CONVERT_COEFF(294587), /* Filter:3, Coefficient: 88 */ + CONVERT_COEFF(-1292361), /* Filter:2, Coefficient: 85 */ + CONVERT_COEFF(-1196542), /* Filter:2, Coefficient: 86 */ + CONVERT_COEFF(-262345), /* Filter:2, Coefficient: 87 */ + CONVERT_COEFF(608020), /* Filter:2, Coefficient: 88 */ + CONVERT_COEFF(1022402), /* Filter:1, Coefficient: 85 */ + CONVERT_COEFF(-322241), /* Filter:1, Coefficient: 86 */ + CONVERT_COEFF(-1084744), /* Filter:1, Coefficient: 87 */ + CONVERT_COEFF(-870589), /* Filter:1, Coefficient: 88 */ + + /* Filter #23, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(22982), /* Filter:5, Coefficient: 89 */ + CONVERT_COEFF(18703), /* Filter:5, Coefficient: 90 */ + CONVERT_COEFF(1310), /* Filter:5, Coefficient: 91 */ + CONVERT_COEFF(-11946), /* Filter:5, Coefficient: 92 */ + CONVERT_COEFF(-114763), /* Filter:4, Coefficient: 89 */ + CONVERT_COEFF(-10932), /* Filter:4, Coefficient: 90 */ + CONVERT_COEFF(70685), /* Filter:4, Coefficient: 91 */ + CONVERT_COEFF(74147), /* Filter:4, Coefficient: 92 */ + CONVERT_COEFF(-93308), /* Filter:3, Coefficient: 89 */ + CONVERT_COEFF(-300945), /* Filter:3, Coefficient: 90 */ + CONVERT_COEFF(-225549), /* Filter:3, Coefficient: 91 */ + CONVERT_COEFF(-8488), /* Filter:3, Coefficient: 92 */ + CONVERT_COEFF(796245), /* Filter:2, Coefficient: 89 */ + CONVERT_COEFF(358093), /* Filter:2, Coefficient: 90 */ + CONVERT_COEFF(-201126), /* Filter:2, Coefficient: 91 */ + CONVERT_COEFF(-434862), /* Filter:2, Coefficient: 92 */ + CONVERT_COEFF(-103264), /* Filter:1, Coefficient: 89 */ + CONVERT_COEFF(507886), /* Filter:1, Coefficient: 90 */ + CONVERT_COEFF(572796), /* Filter:1, Coefficient: 91 */ + CONVERT_COEFF(218113), /* Filter:1, Coefficient: 92 */ + + /* Filter #24, conversion from 48000 Hz to 16000 Hz */ + + CONVERT_COEFF(-11816), /* Filter:5, Coefficient: 93 */ + CONVERT_COEFF(-2391), /* Filter:5, Coefficient: 94 */ + CONVERT_COEFF(5852), /* Filter:5, Coefficient: 95 */ + CONVERT_COEFF(2789237), /* Filter:5, Coefficient: 96 */ + CONVERT_COEFF(20271), /* Filter:4, Coefficient: 93 */ + CONVERT_COEFF(-31141), /* Filter:4, Coefficient: 94 */ + CONVERT_COEFF(-40353), /* Filter:4, Coefficient: 95 */ + CONVERT_COEFF(-5145454), /* Filter:4, Coefficient: 96 */ + CONVERT_COEFF(142594), /* Filter:3, Coefficient: 93 */ + CONVERT_COEFF(134883), /* Filter:3, Coefficient: 94 */ + CONVERT_COEFF(29007), /* Filter:3, Coefficient: 95 */ + CONVERT_COEFF(2574030), /* Filter:3, Coefficient: 96 */ + CONVERT_COEFF(-277542), /* Filter:2, Coefficient: 93 */ + CONVERT_COEFF(20836), /* Filter:2, Coefficient: 94 */ + CONVERT_COEFF(187526), /* Filter:2, Coefficient: 95 */ + CONVERT_COEFF(-232512), /* Filter:2, Coefficient: 96 */ + CONVERT_COEFF(-163034), /* Filter:1, Coefficient: 93 */ + CONVERT_COEFF(-289523), /* Filter:1, Coefficient: 94 */ + CONVERT_COEFF(-167333), /* Filter:1, Coefficient: 95 */ + CONVERT_COEFF(14698), /* Filter:1, Coefficient: 96 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h new file mode 100644 index 000000000000..a367a5aaeb12 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h @@ -0,0 +1,470 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 22050 Hz */ +/* NUM_FILTERS=5, FILTER_LENGTH=80, alpha=6.900000, gamma=0.440000 */ + +__cold_rodata static const int32_t coeff48000to22050[] = { + + /* Filter #1, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(7662), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-17184), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(-22717), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(18493), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(26582), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(59229), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-23847), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-124610), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(-47392), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(71132), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(144232), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-51617), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-97554), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-81873), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(168609), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(294217), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-7478), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-118181), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(-86878), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(179401), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(50021), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(-716), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(-81566), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(-50232), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(-31457), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(195123), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(176350), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-200655), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(-305430), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-114428), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(443237), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(491935), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-107851), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-611698), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-258982), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(827677), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(315885), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(-78832), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-610555), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-331518), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(93705), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(135899), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(-50936), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(-230545), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(-407292), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(40422), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(637092), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(360246), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(-369778), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-1017042), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-134226), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(1419254), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(1008537), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(-574204), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-1940858), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(-505832), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(737212), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(1062392), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-352536), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-1841477), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-76801), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(275249), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(286242), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-192062), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(-683487), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(-963806), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(323515), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(1549537), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(1160591), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(-1248908), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-2484661), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(65823), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(2484992), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(2450305), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(-1828062), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(-4678056), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(-798359), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(2086950), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(2599807), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(-1103167), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-515072), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-77740), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(637488), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(520979), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(579066), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(-1719643), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-1913093), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(1028444), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(3467676), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(2238991), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-3179440), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-5124630), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-677091), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(5922919), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(4937918), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-4589554), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(-4357955), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-1503387), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(4861173), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(5344084), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-497338), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(-1009488), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(-19056), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(1296890), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(3210464), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(772866), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-3684403), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-3455526), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(793879), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(7290357), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(3834155), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(-6951870), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-9665238), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-459773), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(12380065), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(8936328), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-2820697), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-8978993), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-2385048), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(10125784), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(889191), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(-1077548), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(-1876055), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(109024), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(2472912), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(6129880), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(938394), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(-7290689), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-9648642), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(2539229), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(14225977), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(6351241), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(-10107211), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-18425284), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(684847), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(24410695), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(9951675), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-6442120), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(-17275963), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-3302824), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(2503811), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(1622255), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-2108058), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(-3706384), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-6226493), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(5152980), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(11810681), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(1756465), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(-14169848), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-18068824), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(6045860), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(28349964), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(15712903), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-21218811), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-35403029), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(3599978), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(20277588), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(18098088), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-14414412), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-34069195), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-43231), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(4988198), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(4446245), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(-2462458), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-14505985), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-13737342), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(8767251), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(27475802), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(12429936), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-29867986), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-41267927), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(9703094), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(50670832), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(31896562), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(-48962542), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-87373984), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(-4069199), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(44482662), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(37762356), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(-39254890), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-8050820), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-4999058), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(4105217), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(9073725), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(15338177), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(-19743794), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-39156404), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-18221320), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(75644534), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(74121388), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(-12477230), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-103703844), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(4474816), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(169430567), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(238526201), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(112848617), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-91913076), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-4506400), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(214304195), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(405304801), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(4173646), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(-4920958), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-8020196), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(-2482049), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(22486980), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(39548952), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(16825069), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-17561438), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(-105059398), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-14951358), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(73361822), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(77292504), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-112603327), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-238487201), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-169572730), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(-4590557), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(405304801), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(214304195), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-4506400), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(-91913076), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(4418383), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(4986040), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(-25488), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(-3695594), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(-26497283), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-6227664), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(14635866), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(13055417), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(11676560), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-41128822), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-31313215), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(11383073), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(87419323), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(49090442), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(-31848996), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-50742654), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(-39254890), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(37762356), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(44482662), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(-4069199), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-2115328), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(1610445), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(2503111), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(117640), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(-3354395), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(-11619407), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(-3795045), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(6834164), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(28805923), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(7109971), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-17815824), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(-14850789), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-3681316), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(35411365), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(21287118), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-15681405), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-34069195), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(-14414412), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(18098088), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(20277588), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-1871020), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(-1081544), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(883235), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(1296873), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(6559989), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-1807040), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(-6018602), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-1736019), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(5784968), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(14451451), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(3098823), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(-9531104), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-24446956), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(-728979), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(18430270), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(10144287), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-3302824), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-17275963), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(-6442120), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(9951675), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-14486), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(-1007116), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(-499607), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(518015), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(3750042), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(3262673), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-1214266), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-3107008), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-7325337), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(3551588), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(7434859), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(1083621), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-8921035), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-12401028), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(437331), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(9670117), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(10125784), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-2385048), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(-8978993), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-2820697), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(637690), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(-75416), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(-514050), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(-193261), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(-639301), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(2025342), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(1480378), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-777830), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-5090473), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(-3382465), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(2113958), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(3558926), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(4609140), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-4932011), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(-5934824), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(666961), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(5344084), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(4861173), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-1503387), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(-4357955), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(284900), /* Filter:5, Coefficient: 65 */ + CONVERT_COEFF(275450), /* Filter:5, Coefficient: 66 */ + CONVERT_COEFF(-75748), /* Filter:5, Coefficient: 67 */ + CONVERT_COEFF(-230175), /* Filter:5, Coefficient: 68 */ + CONVERT_COEFF(-1466138), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(-138526), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(988361), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(561735), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(202115), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(-2487174), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(-1348983), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(1116387), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(4682079), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(1837378), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(-2448933), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(-2491052), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(-1103167), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(2599807), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(2086950), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(-798359), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-51484), /* Filter:5, Coefficient: 69 */ + CONVERT_COEFF(135388), /* Filter:5, Coefficient: 70 */ + CONVERT_COEFF(93830), /* Filter:5, Coefficient: 71 */ + CONVERT_COEFF(-49843), /* Filter:5, Coefficient: 72 */ + CONVERT_COEFF(-431830), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-583157), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(31866), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(400739), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(1470096), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(-80799), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-1028729), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(-410822), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(502162), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(1943488), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(577848), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-1008802), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(-1841477), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(-352536), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(1062392), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(737212), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-81469), /* Filter:5, Coefficient: 73 */ + CONVERT_COEFF(-912), /* Filter:5, Coefficient: 74 */ + CONVERT_COEFF(49880), /* Filter:5, Coefficient: 75 */ + CONVERT_COEFF(18545), /* Filter:5, Coefficient: 76 */ + CONVERT_COEFF(149914), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(-191736), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(-168399), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(50437), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(482726), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(466197), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(-99774), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(-314278), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(-830203), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(258176), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(613009), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(108811), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-331518), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(-610555), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-78832), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(315885), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 22050 Hz */ + + CONVERT_COEFF(-22620), /* Filter:5, Coefficient: 77 */ + CONVERT_COEFF(-17175), /* Filter:5, Coefficient: 78 */ + CONVERT_COEFF(7621), /* Filter:5, Coefficient: 79 */ + CONVERT_COEFF(1139618), /* Filter:5, Coefficient: 80 */ + CONVERT_COEFF(114508), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(9531), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(-57126), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(-2091381), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-63466), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(145663), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(78240), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(1014579), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(-294701), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(-169322), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(81968), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-55338), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(179401), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(-86878), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(-118181), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(-7478), /* Filter:1, Coefficient: 80 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h new file mode 100644 index 000000000000..e74514d294ae --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h @@ -0,0 +1,470 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 24000 Hz */ +/* NUM_FILTERS=5, FILTER_LENGTH=80, alpha=7.500000, gamma=0.440000 */ + +__cold_rodata static const int32_t coeff48000to24000[] = { + + /* Filter #1, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-13838), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-4878), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(27346), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(15920), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(25265), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-42584), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-60777), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(71524), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(47328), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(43014), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-104992), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-127217), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-2834), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(111653), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(50477), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-231338), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-41434), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(14488), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(121697), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(33752), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-45854), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(-42865), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(63570), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(93651), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(137676), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-84397), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(-270825), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(41689), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(165291), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(305244), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-174342), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-598509), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-207390), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(350931), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(536033), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-368031), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-237368), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(-187652), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(341275), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(495730), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-67575), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(-172357), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(37425), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(273544), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(458722), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(112302), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(-667913), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-436742), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(41098), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(983891), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(349373), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(-1364077), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-1063316), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(121078), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(1731952), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(580588), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-335483), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(-966591), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(78327), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(1529224), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(52090), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(-376509), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(-224228), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(441602), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(820085), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(970404), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-788941), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-1699573), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-1101019), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(1549721), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(2252110), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-1267504), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(-2355777), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-1892010), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(2600412), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(3840272), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(582559), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-2002140), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(-1750602), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(2088832), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(489839), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-411054), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(-834753), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(216224), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(413580), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(2524893), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(467752), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-3237432), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-3710975), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(204721), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(5200041), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(1907427), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-2010349), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-6224958), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(95035), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(8541845), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(3403760), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-1414199), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-5320802), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(-392742), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(1207772), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(208047), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(-1512464), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(-902856), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(-1964673), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(3514611), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(4069138), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-2943356), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(-6229468), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(-5181060), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(6118238), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(9448813), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(3529031), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-9961767), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(-8961434), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(9386380), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(7035593), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(3578394), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-7842078), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-8128913), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(1605200), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(1860328), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(-1299691), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(-2995019), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(-6587556), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(1071316), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(9078533), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(2520726), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-4069677), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-14153956), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-708399), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(18265964), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(15841264), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-5580394), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(-23206259), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-2651769), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(6860332), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(13650089), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(-3152739), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-19289299), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(374618), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(4104773), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(1423065), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(-4786018), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-10790451), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(-8135144), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(10552917), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(15849886), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(8867184), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-20196992), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(-20805992), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(17591439), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(29398714), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(16316208), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-31955417), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(-36235851), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(-4149557), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(23701422), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(15790875), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-24995516), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-4380083), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(4154074), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(8675375), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(314997), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-6457951), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-25205239), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-5222436), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(33153210), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(36619130), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-6512823), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-55966649), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-22123969), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(27200860), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(63486136), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(-8378210), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-101100781), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(-32577317), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(20405426), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(56329747), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(-4562349), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-11223389), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-9182954), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(5881106), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(14830455), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(32686336), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(-17828627), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-56842565), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-29576137), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(75895153), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(107387729), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(3315284), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-129456983), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-44707785), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(159981825), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(284418268), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(144185861), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-94322531), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-41673825), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(198691815), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(435480713), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(5793826), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(-9270194), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-11239929), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(350438), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(33611108), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(54752705), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(12202297), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-34504953), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(-132194211), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-1313049), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(106654220), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(79294325), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-144007288), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-284533495), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-160261654), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(44620548), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(435480713), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(198691815), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-41673825), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(-94322531), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(8697892), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(4139411), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(-4400335), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(-4782540), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(-29508465), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(8636575), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(24014024), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(3272779), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-19581710), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(-57247113), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-9049303), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(36450428), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(101282205), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(8546018), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(-63545873), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-27357901), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(-4562349), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(56329747), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(20405426), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(-32577317), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(1438893), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(4107485), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(363683), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(-3000681), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(-16278067), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(-8279099), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(9318126), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(9464322), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(19409638), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-19986418), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-21274397), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(7861648), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(36215318), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(32067664), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(-16258232), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-29464286), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-24995516), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(15790875), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(23701422), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(-4149557), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-1293262), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(1866746), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(1602403), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(-908649), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(-3897952), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-8522376), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(177415), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(6565670), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(18743832), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(224054), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-14211714), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(-4803433), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(2584064), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(23233877), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(5641875), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(-15842519), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-19289299), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(-3152739), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(13650089), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(6860332), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-1512218), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(212504), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(1209017), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(213290), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(1976159), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(-4356506), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-2866105), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(2379900), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(9257256), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(6616934), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(-4879764), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(-6512863), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-9434058), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(8947402), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(9993781), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(-3508647), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(-8128913), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-7842078), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(3578394), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(7035593), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-836606), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(-409479), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(491682), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(441038), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(2873370), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(-885436), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-2375971), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-64342), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(1595238), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(5317156), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(469755), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-3719261), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(-8559856), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-115583), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(6232362), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(2027557), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(-392742), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(-5320802), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-1414199), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(3403760), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(-225715), /* Filter:5, Coefficient: 65 */ + CONVERT_COEFF(-376564), /* Filter:5, Coefficient: 66 */ + CONVERT_COEFF(53103), /* Filter:5, Coefficient: 67 */ + CONVERT_COEFF(273883), /* Filter:5, Coefficient: 68 */ + CONVERT_COEFF(1688791), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(534773), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-1030744), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(-657535), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(-1461589), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(2203284), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(1673250), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(-1033553), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-3840853), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-2612954), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(1889068), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(2363811), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(2088832), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-1750602), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(-2002140), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(582559), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(36846), /* Filter:5, Coefficient: 69 */ + CONVERT_COEFF(-172746), /* Filter:5, Coefficient: 70 */ + CONVERT_COEFF(-67313), /* Filter:5, Coefficient: 71 */ + CONVERT_COEFF(93968), /* Filter:5, Coefficient: 72 */ + CONVERT_COEFF(519728), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(577634), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(-189254), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(-416848), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(-1430962), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(286656), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(1012557), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(88679), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(-576512), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(-1736423), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(-124869), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(1065395), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(1529224), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(78327), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(-966591), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(-335483), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(63497), /* Filter:5, Coefficient: 73 */ + CONVERT_COEFF(-43069), /* Filter:5, Coefficient: 74 */ + CONVERT_COEFF(-45864), /* Filter:5, Coefficient: 75 */ + CONVERT_COEFF(16027), /* Filter:5, Coefficient: 76 */ + CONVERT_COEFF(16898), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(256277), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(45646), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-135456), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(-605787), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(-205368), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(303359), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(183044), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(370923), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(-536759), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(-352848), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(207503), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(495730), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(341275), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(-187652), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-237368), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 24000 Hz */ + + CONVERT_COEFF(27375), /* Filter:5, Coefficient: 77 */ + CONVERT_COEFF(-4922), /* Filter:5, Coefficient: 78 */ + CONVERT_COEFF(-13857), /* Filter:5, Coefficient: 79 */ + CONVERT_COEFF(-763703), /* Filter:5, Coefficient: 80 */ + CONVERT_COEFF(-48618), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(62211), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(30113), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(1343965), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-123289), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-114093), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(40096), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(-641120), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(232473), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(-50406), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(-112271), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(102292), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(33752), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(121697), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(14488), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(-41434), /* Filter:1, Coefficient: 80 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h new file mode 100644 index 000000000000..1d02d5885466 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h @@ -0,0 +1,550 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 32000 Hz */ +/* NUM_FILTERS=6, FILTER_LENGTH=80, alpha=8.000000, gamma=0.452000 */ + +__cold_rodata static const int32_t coeff48000to32000[] = { + + /* Filter #1, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-11561), /* Filter:6, Coefficient: 1 */ + CONVERT_COEFF(15747), /* Filter:6, Coefficient: 2 */ + CONVERT_COEFF(5105), /* Filter:6, Coefficient: 3 */ + CONVERT_COEFF(-38743), /* Filter:6, Coefficient: 4 */ + CONVERT_COEFF(9801), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-57987), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(55855), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(57347), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(46237), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-16129), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-97341), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(155756), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(9592), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(90049), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-143614), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-53049), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-56068), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(83510), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(61872), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-268865), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-22379), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-24379), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(90814), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(-27309), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(32278), /* Filter:6, Coefficient: 5 */ + CONVERT_COEFF(39046), /* Filter:6, Coefficient: 6 */ + CONVERT_COEFF(-95870), /* Filter:6, Coefficient: 7 */ + CONVERT_COEFF(23105), /* Filter:6, Coefficient: 8 */ + CONVERT_COEFF(-175841), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(72860), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(247915), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(-361409), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(35097), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-344433), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(268897), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(365707), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(365130), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-248936), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-457784), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(858658), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(128732), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(422344), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-623551), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(-218850), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-174868), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(210533), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(151417), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-508987), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(138684), /* Filter:6, Coefficient: 9 */ + CONVERT_COEFF(-160549), /* Filter:6, Coefficient: 10 */ + CONVERT_COEFF(-79806), /* Filter:6, Coefficient: 11 */ + CONVERT_COEFF(315837), /* Filter:6, Coefficient: 12 */ + CONVERT_COEFF(-88230), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(670200), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(-440690), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(-669306), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(-792638), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(86409), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(1208069), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-1151663), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(41857), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-1469440), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(1160033), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(1367901), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(1266645), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(-690167), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-1490906), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(2295682), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(158227), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(724561), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(-839003), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-482312), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-143037), /* Filter:6, Coefficient: 13 */ + CONVERT_COEFF(-351812), /* Filter:6, Coefficient: 14 */ + CONVERT_COEFF(494431), /* Filter:6, Coefficient: 15 */ + CONVERT_COEFF(110738), /* Filter:6, Coefficient: 16 */ + CONVERT_COEFF(1230829), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(-10053), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(-1802066), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(1456443), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(-910652), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(2480789), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-641633), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(-3110197), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-2897785), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(246665), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(4107125), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(-3569996), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(473707), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-3847887), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(2297303), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(3846674), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(1676174), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-570776), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(-2053116), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(2402095), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-790086), /* Filter:6, Coefficient: 17 */ + CONVERT_COEFF(463549), /* Filter:6, Coefficient: 18 */ + CONVERT_COEFF(736606), /* Filter:6, Coefficient: 19 */ + CONVERT_COEFF(-1203048), /* Filter:6, Coefficient: 20 */ + CONVERT_COEFF(1420579), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(-3164667), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(474626), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(3997758), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(3363870), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(1795377), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-6095509), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(2170913), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-3143459), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(7478803), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(-1291163), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-9390934), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(-6253867), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-704435), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(9301477), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-6005932), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(1135780), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-4267272), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(1601388), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(4727524), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-85369), /* Filter:6, Coefficient: 21 */ + CONVERT_COEFF(1689090), /* Filter:6, Coefficient: 22 */ + CONVERT_COEFF(-1153692), /* Filter:6, Coefficient: 23 */ + CONVERT_COEFF(-1392092), /* Filter:6, Coefficient: 24 */ + CONVERT_COEFF(-3695078), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(-2619412), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(6934895), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(-1671143), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(6715445), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(-8010806), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(-3066771), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(13022550), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(8830976), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(6179129), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-16519290), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(3931355), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-8288130), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(14331732), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(596302), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(-19674765), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-5703839), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(-2226042), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(9343886), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-3864751), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(2561676), /* Filter:6, Coefficient: 25 */ + CONVERT_COEFF(-41718), /* Filter:6, Coefficient: 26 */ + CONVERT_COEFF(-3351923), /* Filter:6, Coefficient: 27 */ + CONVERT_COEFF(2484217), /* Filter:6, Coefficient: 28 */ + CONVERT_COEFF(-7983534), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(8090613), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(4635953), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(-14057177), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(-5546048), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-13215426), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(17029298), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(5073548), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(19154324), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(-19288118), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-11295504), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(33812123), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(13651643), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(16170479), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(-29933479), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(407469), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(-9649047), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(12189269), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(3905181), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-19010870), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(2646463), /* Filter:6, Coefficient: 29 */ + CONVERT_COEFF(-5183436), /* Filter:6, Coefficient: 30 */ + CONVERT_COEFF(113142), /* Filter:6, Coefficient: 31 */ + CONVERT_COEFF(6922098), /* Filter:6, Coefficient: 32 */ + CONVERT_COEFF(4012768), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(15785061), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-16561721), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(-9670889), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-26242846), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(12222374), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(26293489), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-35302032), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(-9629387), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-38047097), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(40551122), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(22142931), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(39448271), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-29337586), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(-31488442), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(62886474), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(8709491), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(18945155), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-25616062), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(-6708613), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-4854058), /* Filter:6, Coefficient: 33 */ + CONVERT_COEFF(-6493349), /* Filter:6, Coefficient: 34 */ + CONVERT_COEFF(10955382), /* Filter:6, Coefficient: 35 */ + CONVERT_COEFF(3639331), /* Filter:6, Coefficient: 36 */ + CONVERT_COEFF(29320297), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(-6238872), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(-37929537), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(31607052), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-10922848), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(57004450), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-23682378), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(-69775212), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-71937950), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(20998625), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(89787906), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-97112393), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(-2929444), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-86584128), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(69191980), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(80706313), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(40270809), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-21053631), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(-42367788), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(65956939), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-17266601), /* Filter:6, Coefficient: 37 */ + CONVERT_COEFF(231253), /* Filter:6, Coefficient: 38 */ + CONVERT_COEFF(21704927), /* Filter:6, Coefficient: 39 */ + CONVERT_COEFF(-2600806), /* Filter:6, Coefficient: 40 */ + CONVERT_COEFF(41975839), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(-59844606), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(-44992655), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(73711853), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(81790468), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(86455952), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-138195163), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-113308335), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(-81580682), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(240735052), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(145279809), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-321141069), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-178457029), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-14491810), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(488414096), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(292747412), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(15022342), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(-138518549), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(114569679), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(586792923), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-20066125), /* Filter:6, Coefficient: 41 */ + CONVERT_COEFF(5767713), /* Filter:6, Coefficient: 42 */ + CONVERT_COEFF(15089402), /* Filter:6, Coefficient: 43 */ + CONVERT_COEFF(-7757981), /* Filter:6, Coefficient: 44 */ + CONVERT_COEFF(38637120), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(-70881813), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-22766795), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(54397391), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(145358829), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(111916983), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(-108596377), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-60427595), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(-248537116), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(217233738), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(188328936), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(-122913915), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-407818384), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(-414365665), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(101272401), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(136295795), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(516212737), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(23787556), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(-126544125), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(46784418), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-8119365), /* Filter:6, Coefficient: 45 */ + CONVERT_COEFF(8416921), /* Filter:6, Coefficient: 46 */ + CONVERT_COEFF(2011547), /* Filter:6, Coefficient: 47 */ + CONVERT_COEFF(-7011741), /* Filter:6, Coefficient: 48 */ + CONVERT_COEFF(239202), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(-36066145), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(15579621), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(18206458), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(78881593), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(7227261), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-55803497), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(21803835), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-57723218), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(99822925), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-9284004), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-64228804), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(-112035461), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(-30308183), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(88786923), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-24912829), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(46379080), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(-52379260), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(-3286550), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(38004833), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(2029399), /* Filter:6, Coefficient: 49 */ + CONVERT_COEFF(4158325), /* Filter:6, Coefficient: 50 */ + CONVERT_COEFF(-3721541), /* Filter:6, Coefficient: 51 */ + CONVERT_COEFF(-1133029), /* Filter:6, Coefficient: 52 */ + CONVERT_COEFF(-20392589), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(-2906434), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(16751891), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(-6818425), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(28980439), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(-30983025), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(-5048118), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(25896772), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(39777989), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(25764575), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(-43217126), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(4190043), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(-50106572), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(44996435), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(12663590), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(-40495107), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-18138626), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(-17850332), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(23180027), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(608735), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(3433587), /* Filter:6, Coefficient: 53 */ + CONVERT_COEFF(-1029758), /* Filter:6, Coefficient: 54 */ + CONVERT_COEFF(-2029714), /* Filter:6, Coefficient: 55 */ + CONVERT_COEFF(1907010), /* Filter:6, Coefficient: 56 */ + CONVERT_COEFF(-8939750), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(10066060), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(1203126), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(-8271006), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(-10289050), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-13908366), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(15437261), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(1959317), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(30176511), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(-19720665), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-11906392), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(21431694), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(12685188), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(23538156), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-22526671), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(-5324400), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-17751380), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(9315300), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(8260899), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-11561731), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(463533), /* Filter:6, Coefficient: 57 */ + CONVERT_COEFF(-1687787), /* Filter:6, Coefficient: 58 */ + CONVERT_COEFF(600074), /* Filter:6, Coefficient: 59 */ + CONVERT_COEFF(911501), /* Filter:6, Coefficient: 60 */ + CONVERT_COEFF(3698444), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(4136678), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(-5065760), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(-233174), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(-12705057), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(5580298), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(6376293), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(-7669533), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-2881357), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(-14454865), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(10115126), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(5126005), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(19856482), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-6933075), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(-10972601), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(11128930), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(140888), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(8573112), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(-4785738), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-3732684), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-950577), /* Filter:6, Coefficient: 61 */ + CONVERT_COEFF(-130034), /* Filter:6, Coefficient: 62 */ + CONVERT_COEFF(756094), /* Filter:6, Coefficient: 63 */ + CONVERT_COEFF(-329642), /* Filter:6, Coefficient: 64 */ + CONVERT_COEFF(3849839), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(-1976633), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(-1672857), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(2337162), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(-439082), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(5830744), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-2898810), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(-2565926), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(-10239291), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(1875733), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(6351912), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-4786768), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(1978448), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-9164115), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(3532591), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(4618733), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(5531160), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(-269508), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-3833892), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(2235084), /* Filter:1, Coefficient: 64 */ + + /* Filter #17, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-346938), /* Filter:6, Coefficient: 65 */ + CONVERT_COEFF(420998), /* Filter:6, Coefficient: 66 */ + CONVERT_COEFF(2948), /* Filter:6, Coefficient: 67 */ + CONVERT_COEFF(-283734), /* Filter:6, Coefficient: 68 */ + CONVERT_COEFF(-118556), /* Filter:5, Coefficient: 65 */ + CONVERT_COEFF(-1556054), /* Filter:5, Coefficient: 66 */ + CONVERT_COEFF(938534), /* Filter:5, Coefficient: 67 */ + CONVERT_COEFF(530259), /* Filter:5, Coefficient: 68 */ + CONVERT_COEFF(3449180), /* Filter:4, Coefficient: 65 */ + CONVERT_COEFF(-99308), /* Filter:4, Coefficient: 66 */ + CONVERT_COEFF(-2308321), /* Filter:4, Coefficient: 67 */ + CONVERT_COEFF(1316267), /* Filter:4, Coefficient: 68 */ + CONVERT_COEFF(-1879552), /* Filter:3, Coefficient: 65 */ + CONVERT_COEFF(4332349), /* Filter:3, Coefficient: 66 */ + CONVERT_COEFF(-1033406), /* Filter:3, Coefficient: 67 */ + CONVERT_COEFF(-2361476), /* Filter:3, Coefficient: 68 */ + CONVERT_COEFF(-4953240), /* Filter:2, Coefficient: 65 */ + CONVERT_COEFF(-565926), /* Filter:2, Coefficient: 66 */ + CONVERT_COEFF(3678031), /* Filter:2, Coefficient: 67 */ + CONVERT_COEFF(-1548139), /* Filter:2, Coefficient: 68 */ + CONVERT_COEFF(1508675), /* Filter:1, Coefficient: 65 */ + CONVERT_COEFF(-2340479), /* Filter:1, Coefficient: 66 */ + CONVERT_COEFF(191583), /* Filter:1, Coefficient: 67 */ + CONVERT_COEFF(1469400), /* Filter:1, Coefficient: 68 */ + + /* Filter #18, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(154632), /* Filter:6, Coefficient: 69 */ + CONVERT_COEFF(97677), /* Filter:6, Coefficient: 70 */ + CONVERT_COEFF(-151006), /* Filter:6, Coefficient: 71 */ + CONVERT_COEFF(22864), /* Filter:6, Coefficient: 72 */ + CONVERT_COEFF(-909572), /* Filter:5, Coefficient: 69 */ + CONVERT_COEFF(153482), /* Filter:5, Coefficient: 70 */ + CONVERT_COEFF(491289), /* Filter:5, Coefficient: 71 */ + CONVERT_COEFF(-360835), /* Filter:5, Coefficient: 72 */ + CONVERT_COEFF(817805), /* Filter:4, Coefficient: 69 */ + CONVERT_COEFF(-1291146), /* Filter:4, Coefficient: 70 */ + CONVERT_COEFF(169841), /* Filter:4, Coefficient: 71 */ + CONVERT_COEFF(707188), /* Filter:4, Coefficient: 72 */ + CONVERT_COEFF(1928437), /* Filter:3, Coefficient: 69 */ + CONVERT_COEFF(514414), /* Filter:3, Coefficient: 70 */ + CONVERT_COEFF(-1484055), /* Filter:3, Coefficient: 71 */ + CONVERT_COEFF(448482), /* Filter:3, Coefficient: 72 */ + CONVERT_COEFF(-1615722), /* Filter:2, Coefficient: 69 */ + CONVERT_COEFF(1829243), /* Filter:2, Coefficient: 70 */ + CONVERT_COEFF(84371), /* Filter:2, Coefficient: 71 */ + CONVERT_COEFF(-1162547), /* Filter:2, Coefficient: 72 */ + CONVERT_COEFF(-877441), /* Filter:1, Coefficient: 69 */ + CONVERT_COEFF(-501872), /* Filter:1, Coefficient: 70 */ + CONVERT_COEFF(801814), /* Filter:1, Coefficient: 71 */ + CONVERT_COEFF(-87747), /* Filter:1, Coefficient: 72 */ + + /* Filter #19, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(77476), /* Filter:6, Coefficient: 73 */ + CONVERT_COEFF(-55647), /* Filter:6, Coefficient: 74 */ + CONVERT_COEFF(-12425), /* Filter:6, Coefficient: 75 */ + CONVERT_COEFF(36432), /* Filter:6, Coefficient: 76 */ + CONVERT_COEFF(-98904), /* Filter:5, Coefficient: 73 */ + CONVERT_COEFF(262255), /* Filter:5, Coefficient: 74 */ + CONVERT_COEFF(-86370), /* Filter:5, Coefficient: 75 */ + CONVERT_COEFF(-93036), /* Filter:5, Coefficient: 76 */ + CONVERT_COEFF(-474181), /* Filter:4, Coefficient: 73 */ + CONVERT_COEFF(-161908), /* Filter:4, Coefficient: 74 */ + CONVERT_COEFF(348709), /* Filter:4, Coefficient: 75 */ + CONVERT_COEFF(-94475), /* Filter:4, Coefficient: 76 */ + CONVERT_COEFF(655915), /* Filter:3, Coefficient: 73 */ + CONVERT_COEFF(-589182), /* Filter:3, Coefficient: 74 */ + CONVERT_COEFF(-68486), /* Filter:3, Coefficient: 75 */ + CONVERT_COEFF(343484), /* Filter:3, Coefficient: 76 */ + CONVERT_COEFF(527672), /* Filter:2, Coefficient: 73 */ + CONVERT_COEFF(407424), /* Filter:2, Coefficient: 74 */ + CONVERT_COEFF(-485562), /* Filter:2, Coefficient: 75 */ + CONVERT_COEFF(16521), /* Filter:2, Coefficient: 76 */ + CONVERT_COEFF(-432603), /* Filter:1, Coefficient: 73 */ + CONVERT_COEFF(255380), /* Filter:1, Coefficient: 74 */ + CONVERT_COEFF(118325), /* Filter:1, Coefficient: 75 */ + CONVERT_COEFF(-185814), /* Filter:1, Coefficient: 76 */ + + /* Filter #20, conversion from 48000 Hz to 32000 Hz */ + + CONVERT_COEFF(-14137), /* Filter:6, Coefficient: 77 */ + CONVERT_COEFF(-9206), /* Filter:6, Coefficient: 78 */ + CONVERT_COEFF(11763), /* Filter:6, Coefficient: 79 */ + CONVERT_COEFF(-1554661), /* Filter:6, Coefficient: 80 */ + CONVERT_COEFF(94324), /* Filter:5, Coefficient: 77 */ + CONVERT_COEFF(-8059), /* Filter:5, Coefficient: 78 */ + CONVERT_COEFF(-36850), /* Filter:5, Coefficient: 79 */ + CONVERT_COEFF(3952809), /* Filter:5, Coefficient: 80 */ + CONVERT_COEFF(-126700), /* Filter:4, Coefficient: 77 */ + CONVERT_COEFF(110024), /* Filter:4, Coefficient: 78 */ + CONVERT_COEFF(-3318), /* Filter:4, Coefficient: 79 */ + CONVERT_COEFF(-3431485), /* Filter:4, Coefficient: 80 */ + CONVERT_COEFF(-132999), /* Filter:3, Coefficient: 77 */ + CONVERT_COEFF(-93296), /* Filter:3, Coefficient: 78 */ + CONVERT_COEFF(98915), /* Filter:3, Coefficient: 79 */ + CONVERT_COEFF(1107272), /* Filter:3, Coefficient: 80 */ + CONVERT_COEFF(229610), /* Filter:2, Coefficient: 77 */ + CONVERT_COEFF(-109871), /* Filter:2, Coefficient: 78 */ + CONVERT_COEFF(-44438), /* Filter:2, Coefficient: 79 */ + CONVERT_COEFF(-62812), /* Filter:2, Coefficient: 80 */ + CONVERT_COEFF(23112), /* Filter:1, Coefficient: 77 */ + CONVERT_COEFF(73212), /* Filter:1, Coefficient: 78 */ + CONVERT_COEFF(-37195), /* Filter:1, Coefficient: 79 */ + CONVERT_COEFF(-11124), /* Filter:1, Coefficient: 80 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h new file mode 100644 index 000000000000..ad487d58af14 --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h @@ -0,0 +1,506 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 44100 Hz */ +/* NUM_FILTERS=7, FILTER_LENGTH=64, alpha=8.150000, gamma=0.456000 */ + +__cold_rodata static const int32_t coeff48000to44100[] = { + + /* Filter #1, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-34608), /* Filter:7, Coefficient: 1 */ + CONVERT_COEFF(58942), /* Filter:7, Coefficient: 2 */ + CONVERT_COEFF(-85115), /* Filter:7, Coefficient: 3 */ + CONVERT_COEFF(96633), /* Filter:7, Coefficient: 4 */ + CONVERT_COEFF(69866), /* Filter:6, Coefficient: 1 */ + CONVERT_COEFF(-157606), /* Filter:6, Coefficient: 2 */ + CONVERT_COEFF(299637), /* Filter:6, Coefficient: 3 */ + CONVERT_COEFF(-469979), /* Filter:6, Coefficient: 4 */ + CONVERT_COEFF(61623), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(-49681), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(-50870), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(302189), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(-66312), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(181693), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(-384955), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(630700), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(-133695), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(219785), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(-230581), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(36535), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-1792), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(-79997), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(271909), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(-561039), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(33030), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(-71885), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(101248), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(-78725), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-67867), /* Filter:7, Coefficient: 5 */ + CONVERT_COEFF(-28521), /* Filter:7, Coefficient: 6 */ + CONVERT_COEFF(207221), /* Filter:7, Coefficient: 7 */ + CONVERT_COEFF(-452333), /* Filter:7, Coefficient: 8 */ + CONVERT_COEFF(592244), /* Filter:6, Coefficient: 5 */ + CONVERT_COEFF(-540223), /* Filter:6, Coefficient: 6 */ + CONVERT_COEFF(168968), /* Filter:6, Coefficient: 7 */ + CONVERT_COEFF(620325), /* Filter:6, Coefficient: 8 */ + CONVERT_COEFF(-730836), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(1274818), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(-1742595), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(1816487), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(-786525), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(641498), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(29205), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-1344095), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(483560), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(-1352248), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(2396129), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(-3194402), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(844568), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(-919927), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(530444), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(525026), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-43685), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(291450), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(-633133), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(956210), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(703127), /* Filter:7, Coefficient: 9 */ + CONVERT_COEFF(-853001), /* Filter:7, Coefficient: 10 */ + CONVERT_COEFF(769748), /* Filter:7, Coefficient: 11 */ + CONVERT_COEFF(-339193), /* Filter:7, Coefficient: 12 */ + CONVERT_COEFF(-1794792), /* Filter:6, Coefficient: 9 */ + CONVERT_COEFF(3115259), /* Filter:6, Coefficient: 10 */ + CONVERT_COEFF(-4115635), /* Filter:6, Coefficient: 11 */ + CONVERT_COEFF(4175773), /* Filter:6, Coefficient: 12 */ + CONVERT_COEFF(-1127711), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(-592357), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(3316547), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(-6552082), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(3171756), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(-5026421), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(6078263), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(-5335178), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(3130331), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(-1578560), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-1791676), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(6684486), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-2241194), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(4271071), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-5884188), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(6087444), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(-1072749), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(768744), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(104733), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-1522163), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-475432), /* Filter:7, Coefficient: 13 */ + CONVERT_COEFF(1576583), /* Filter:7, Coefficient: 14 */ + CONVERT_COEFF(-2703138), /* Filter:7, Coefficient: 15 */ + CONVERT_COEFF(3453146), /* Filter:7, Coefficient: 16 */ + CONVERT_COEFF(-2703131), /* Filter:6, Coefficient: 13 */ + CONVERT_COEFF(-602943), /* Filter:6, Coefficient: 14 */ + CONVERT_COEFF(5477993), /* Filter:6, Coefficient: 15 */ + CONVERT_COEFF(-10918971), /* Filter:6, Coefficient: 16 */ + CONVERT_COEFF(9289206), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(-10150369), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(7770551), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-1353879), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(1998375), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(4084791), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-12023857), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(19736881), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-11958163), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(15672295), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-15501757), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(9501580), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(-3932030), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-1045712), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(8383285), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(-16438405), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(3198988), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-4582047), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(4952446), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(-3644365), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-3371842), /* Filter:7, Coefficient: 17 */ + CONVERT_COEFF(2097989), /* Filter:7, Coefficient: 18 */ + CONVERT_COEFF(462769), /* Filter:7, Coefficient: 19 */ + CONVERT_COEFF(-3989397), /* Filter:7, Coefficient: 20 */ + CONVERT_COEFF(15222797), /* Filter:6, Coefficient: 17 */ + CONVERT_COEFF(-16309530), /* Filter:6, Coefficient: 18 */ + CONVERT_COEFF(12321848), /* Filter:6, Coefficient: 19 */ + CONVERT_COEFF(-2389147), /* Filter:6, Coefficient: 20 */ + CONVERT_COEFF(-8743201), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(20620478), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(-30859164), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(35112554), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(-24216328), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(22270762), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-11641126), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(-7783920), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(2945332), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(-20300949), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(38527510), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-51525628), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(22503598), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-23386679), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(16406368), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-579401), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(335976), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(4676188), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-10331423), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(14886324), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(7681853), /* Filter:7, Coefficient: 21 */ + CONVERT_COEFF(-10332684), /* Filter:7, Coefficient: 22 */ + CONVERT_COEFF(10556529), /* Filter:7, Coefficient: 23 */ + CONVERT_COEFF(-7162197), /* Filter:7, Coefficient: 24 */ + CONVERT_COEFF(-12649004), /* Filter:6, Coefficient: 21 */ + CONVERT_COEFF(29813575), /* Filter:6, Coefficient: 22 */ + CONVERT_COEFF(-44081375), /* Filter:6, Coefficient: 23 */ + CONVERT_COEFF(49138162), /* Filter:6, Coefficient: 24 */ + CONVERT_COEFF(-29258606), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(10919084), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(19020907), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(-55343811), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(33051579), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(-57937612), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(73731473), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-71049212), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(52464541), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(-35835631), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(-221654), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(51953451), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(-22361334), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(47518499), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(-67260276), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(72617965), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-16268114), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(12660525), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-3194146), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(-11448189), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-380917), /* Filter:7, Coefficient: 25 */ + CONVERT_COEFF(11434339), /* Filter:7, Coefficient: 26 */ + CONVERT_COEFF(-23628219), /* Filter:7, Coefficient: 27 */ + CONVERT_COEFF(32030513), /* Filter:7, Coefficient: 28 */ + CONVERT_COEFF(-38782554), /* Filter:6, Coefficient: 25 */ + CONVERT_COEFF(8866692), /* Filter:6, Coefficient: 26 */ + CONVERT_COEFF(40253511), /* Filter:6, Coefficient: 27 */ + CONVERT_COEFF(-100091024), /* Filter:6, Coefficient: 28 */ + CONVERT_COEFF(88284037), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(-104388358), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(88441513), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(-26445221), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(42410154), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(14925059), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-96386403), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(187893880), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-109003806), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(154763074), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-167878153), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(123866455), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(-55449878), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(10901411), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(60443544), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-151195441), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(28705285), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-44216319), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(52284288), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-46468489), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-27579775), /* Filter:7, Coefficient: 29 */ + CONVERT_COEFF(944226), /* Filter:7, Coefficient: 30 */ + CONVERT_COEFF(39504750), /* Filter:7, Coefficient: 31 */ + CONVERT_COEFF(-55450763), /* Filter:7, Coefficient: 32 */ + CONVERT_COEFF(146139326), /* Filter:6, Coefficient: 29 */ + CONVERT_COEFF(-125193602), /* Filter:6, Coefficient: 30 */ + CONVERT_COEFF(-8119725), /* Filter:6, Coefficient: 31 */ + CONVERT_COEFF(167052942), /* Filter:6, Coefficient: 32 */ + CONVERT_COEFF(-89102768), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(248694534), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(-331843959), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(152869295), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-262248494), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(259694722), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(54567300), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(-585088494), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(6010978), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(-266538025), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(769027860), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(-550799263), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(246363387), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-319948913), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(300954467), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(871436613), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(19590070), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(39171518), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-163170521), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(660899842), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(38104285), /* Filter:7, Coefficient: 33 */ + CONVERT_COEFF(1432784), /* Filter:7, Coefficient: 34 */ + CONVERT_COEFF(-27672195), /* Filter:7, Coefficient: 35 */ + CONVERT_COEFF(31921116), /* Filter:7, Coefficient: 36 */ + CONVERT_COEFF(-224528201), /* Filter:6, Coefficient: 33 */ + CONVERT_COEFF(117817853), /* Filter:6, Coefficient: 34 */ + CONVERT_COEFF(19821501), /* Filter:6, Coefficient: 35 */ + CONVERT_COEFF(-91903193), /* Filter:6, Coefficient: 36 */ + CONVERT_COEFF(215108034), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(-360908796), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(227085039), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(-46451389), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(566423159), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(-22644330), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-290592428), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(278076526), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(-547493323), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(767195769), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(-267778001), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(8458989), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(-871689336), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-300550035), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(319555239), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-246162036), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(660899842), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(-163170521), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(39171518), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(19590070), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-23433614), /* Filter:7, Coefficient: 37 */ + CONVERT_COEFF(11233560), /* Filter:7, Coefficient: 38 */ + CONVERT_COEFF(-223441), /* Filter:7, Coefficient: 39 */ + CONVERT_COEFF(-7253420), /* Filter:7, Coefficient: 40 */ + CONVERT_COEFF(101002885), /* Filter:6, Coefficient: 37 */ + CONVERT_COEFF(-76882874), /* Filter:6, Coefficient: 38 */ + CONVERT_COEFF(40567202), /* Filter:6, Coefficient: 39 */ + CONVERT_COEFF(-5841992), /* Filter:6, Coefficient: 40 */ + CONVERT_COEFF(-64257112), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(110837148), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(-110758392), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(82493642), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(-187504747), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(85554391), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(-397767), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-55476805), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(121745909), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(-166662052), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(154450910), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-109358640), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(151201064), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(-60582140), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-10716025), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(55283389), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-46468489), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(52284288), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-44216319), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(28705285), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(10580704), /* Filter:7, Coefficient: 41 */ + CONVERT_COEFF(-10304561), /* Filter:7, Coefficient: 42 */ + CONVERT_COEFF(7623908), /* Filter:7, Coefficient: 43 */ + CONVERT_COEFF(-3924457), /* Filter:7, Coefficient: 44 */ + CONVERT_COEFF(-19382377), /* Filter:6, Coefficient: 41 */ + CONVERT_COEFF(32139774), /* Filter:6, Coefficient: 42 */ + CONVERT_COEFF(-33292678), /* Filter:6, Coefficient: 43 */ + CONVERT_COEFF(26137219), /* Filter:6, Coefficient: 44 */ + CONVERT_COEFF(-42829268), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(4984408), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(22596297), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(-36478796), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(79727899), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(-77180699), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(56875188), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-29072432), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(52664560), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-1000453), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(-35199577), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(52081162), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-72507573), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(67216590), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-47532278), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(22412200), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-11448189), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(-3194146), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(12660525), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(-16268114), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(408527), /* Filter:7, Coefficient: 45 */ + CONVERT_COEFF(2131760), /* Filter:7, Coefficient: 46 */ + CONVERT_COEFF(-3383382), /* Filter:7, Coefficient: 47 */ + CONVERT_COEFF(3446766), /* Filter:7, Coefficient: 48 */ + CONVERT_COEFF(-14928192), /* Filter:6, Coefficient: 45 */ + CONVERT_COEFF(3604808), /* Filter:6, Coefficient: 46 */ + CONVERT_COEFF(5060056), /* Filter:6, Coefficient: 47 */ + CONVERT_COEFF(-9794928), /* Filter:6, Coefficient: 48 */ + CONVERT_COEFF(37496027), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(-29308651), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(16712649), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(-4136967), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(2701198), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(16300851), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(-25550339), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(25786949), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-51410197), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(38626003), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-20524157), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(3201416), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(514571), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(-16347016), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(23344971), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(-22483689), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(14886324), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(-10331423), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(4676188), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(335976), /* Filter:1, Coefficient: 48 */ + + /* Filter #13, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-2686276), /* Filter:7, Coefficient: 49 */ + CONVERT_COEFF(1556907), /* Filter:7, Coefficient: 50 */ + CONVERT_COEFF(-458759), /* Filter:7, Coefficient: 51 */ + CONVERT_COEFF(-349838), /* Filter:7, Coefficient: 52 */ + CONVERT_COEFF(10698922), /* Filter:6, Coefficient: 49 */ + CONVERT_COEFF(-8800439), /* Filter:6, Coefficient: 50 */ + CONVERT_COEFF(5504157), /* Filter:6, Coefficient: 51 */ + CONVERT_COEFF(-2104680), /* Filter:6, Coefficient: 52 */ + CONVERT_COEFF(-5353271), /* Filter:5, Coefficient: 49 */ + CONVERT_COEFF(10426821), /* Filter:5, Coefficient: 50 */ + CONVERT_COEFF(-11299744), /* Filter:5, Coefficient: 51 */ + CONVERT_COEFF(9194215), /* Filter:5, Coefficient: 52 */ + CONVERT_COEFF(-19783847), /* Filter:4, Coefficient: 49 */ + CONVERT_COEFF(11038509), /* Filter:4, Coefficient: 50 */ + CONVERT_COEFF(-2643603), /* Filter:4, Coefficient: 51 */ + CONVERT_COEFF(-3406265), /* Filter:4, Coefficient: 52 */ + CONVERT_COEFF(9283532), /* Filter:3, Coefficient: 49 */ + CONVERT_COEFF(-15360523), /* Filter:3, Coefficient: 50 */ + CONVERT_COEFF(15614973), /* Filter:3, Coefficient: 51 */ + CONVERT_COEFF(-11968720), /* Filter:3, Coefficient: 52 */ + CONVERT_COEFF(16437903), /* Filter:2, Coefficient: 49 */ + CONVERT_COEFF(-8395909), /* Filter:2, Coefficient: 50 */ + CONVERT_COEFF(1064109), /* Filter:2, Coefficient: 51 */ + CONVERT_COEFF(3914091), /* Filter:2, Coefficient: 52 */ + CONVERT_COEFF(-3644365), /* Filter:1, Coefficient: 49 */ + CONVERT_COEFF(4952446), /* Filter:1, Coefficient: 50 */ + CONVERT_COEFF(-4582047), /* Filter:1, Coefficient: 51 */ + CONVERT_COEFF(3198988), /* Filter:1, Coefficient: 52 */ + + /* Filter #14, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(773994), /* Filter:7, Coefficient: 53 */ + CONVERT_COEFF(-852306), /* Filter:7, Coefficient: 54 */ + CONVERT_COEFF(699704), /* Filter:7, Coefficient: 55 */ + CONVERT_COEFF(-448245), /* Filter:7, Coefficient: 56 */ + CONVERT_COEFF(-520111), /* Filter:6, Coefficient: 53 */ + CONVERT_COEFF(2004349), /* Filter:6, Coefficient: 54 */ + CONVERT_COEFF(-2415951), /* Filter:6, Coefficient: 55 */ + CONVERT_COEFF(2082258), /* Filter:6, Coefficient: 56 */ + CONVERT_COEFF(-5690292), /* Filter:5, Coefficient: 53 */ + CONVERT_COEFF(2181982), /* Filter:5, Coefficient: 54 */ + CONVERT_COEFF(439695), /* Filter:5, Coefficient: 55 */ + CONVERT_COEFF(-1855684), /* Filter:5, Coefficient: 56 */ + CONVERT_COEFF(6401526), /* Filter:4, Coefficient: 53 */ + CONVERT_COEFF(-6690447), /* Filter:4, Coefficient: 54 */ + CONVERT_COEFF(5225196), /* Filter:4, Coefficient: 55 */ + CONVERT_COEFF(-3082950), /* Filter:4, Coefficient: 56 */ + CONVERT_COEFF(6735661), /* Filter:3, Coefficient: 53 */ + CONVERT_COEFF(-1855964), /* Filter:3, Coefficient: 54 */ + CONVERT_COEFF(-1521598), /* Filter:3, Coefficient: 55 */ + CONVERT_COEFF(3091258), /* Filter:3, Coefficient: 56 */ + CONVERT_COEFF(-6073880), /* Filter:2, Coefficient: 53 */ + CONVERT_COEFF(5876421), /* Filter:2, Coefficient: 54 */ + CONVERT_COEFF(-4268572), /* Filter:2, Coefficient: 55 */ + CONVERT_COEFF(2242351), /* Filter:2, Coefficient: 56 */ + CONVERT_COEFF(-1522163), /* Filter:1, Coefficient: 53 */ + CONVERT_COEFF(104733), /* Filter:1, Coefficient: 54 */ + CONVERT_COEFF(768744), /* Filter:1, Coefficient: 55 */ + CONVERT_COEFF(-1072749), /* Filter:1, Coefficient: 56 */ + + /* Filter #15, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(203843), /* Filter:7, Coefficient: 57 */ + CONVERT_COEFF(-26420), /* Filter:7, Coefficient: 58 */ + CONVERT_COEFF(-68761), /* Filter:7, Coefficient: 59 */ + CONVERT_COEFF(96718), /* Filter:7, Coefficient: 60 */ + CONVERT_COEFF(-1402019), /* Filter:6, Coefficient: 57 */ + CONVERT_COEFF(704429), /* Filter:6, Coefficient: 58 */ + CONVERT_COEFF(-181684), /* Filter:6, Coefficient: 59 */ + CONVERT_COEFF(-110580), /* Filter:6, Coefficient: 60 */ + CONVERT_COEFF(2199202), /* Filter:5, Coefficient: 57 */ + CONVERT_COEFF(-1845730), /* Filter:5, Coefficient: 58 */ + CONVERT_COEFF(1207778), /* Filter:5, Coefficient: 59 */ + CONVERT_COEFF(-596672), /* Filter:5, Coefficient: 60 */ + CONVERT_COEFF(1112474), /* Filter:4, Coefficient: 57 */ + CONVERT_COEFF(227477), /* Filter:4, Coefficient: 58 */ + CONVERT_COEFF(-852533), /* Filter:4, Coefficient: 59 */ + CONVERT_COEFF(926541), /* Filter:4, Coefficient: 60 */ + CONVERT_COEFF(-3174871), /* Filter:3, Coefficient: 57 */ + CONVERT_COEFF(2392005), /* Filter:3, Coefficient: 58 */ + CONVERT_COEFF(-1357177), /* Filter:3, Coefficient: 59 */ + CONVERT_COEFF(491739), /* Filter:3, Coefficient: 60 */ + CONVERT_COEFF(-527993), /* Filter:2, Coefficient: 57 */ + CONVERT_COEFF(-527169), /* Filter:2, Coefficient: 58 */ + CONVERT_COEFF(917240), /* Filter:2, Coefficient: 59 */ + CONVERT_COEFF(-842790), /* Filter:2, Coefficient: 60 */ + CONVERT_COEFF(956210), /* Filter:1, Coefficient: 57 */ + CONVERT_COEFF(-633133), /* Filter:1, Coefficient: 58 */ + CONVERT_COEFF(291450), /* Filter:1, Coefficient: 59 */ + CONVERT_COEFF(-43685), /* Filter:1, Coefficient: 60 */ + + /* Filter #16, conversion from 48000 Hz to 44100 Hz */ + + CONVERT_COEFF(-84837), /* Filter:7, Coefficient: 61 */ + CONVERT_COEFF(58623), /* Filter:7, Coefficient: 62 */ + CONVERT_COEFF(-34394), /* Filter:7, Coefficient: 63 */ + CONVERT_COEFF(-3711660), /* Filter:7, Coefficient: 64 */ + CONVERT_COEFF(210495), /* Filter:6, Coefficient: 61 */ + CONVERT_COEFF(-195186), /* Filter:6, Coefficient: 62 */ + CONVERT_COEFF(137148), /* Filter:6, Coefficient: 63 */ + CONVERT_COEFF(10382357), /* Filter:6, Coefficient: 64 */ + CONVERT_COEFF(170808), /* Filter:5, Coefficient: 61 */ + CONVERT_COEFF(45623), /* Filter:5, Coefficient: 62 */ + CONVERT_COEFF(-107490), /* Filter:5, Coefficient: 63 */ + CONVERT_COEFF(-10759470), /* Filter:5, Coefficient: 64 */ + CONVERT_COEFF(-705509), /* Filter:4, Coefficient: 61 */ + CONVERT_COEFF(414544), /* Filter:4, Coefficient: 62 */ + CONVERT_COEFF(-186990), /* Filter:4, Coefficient: 63 */ + CONVERT_COEFF(5200106), /* Filter:4, Coefficient: 64 */ + CONVERT_COEFF(28928), /* Filter:3, Coefficient: 61 */ + CONVERT_COEFF(-225201), /* Filter:3, Coefficient: 62 */ + CONVERT_COEFF(216708), /* Filter:3, Coefficient: 63 */ + CONVERT_COEFF(-1228780), /* Filter:3, Coefficient: 64 */ + CONVERT_COEFF(560092), /* Filter:2, Coefficient: 61 */ + CONVERT_COEFF(-271537), /* Filter:2, Coefficient: 62 */ + CONVERT_COEFF(79933), /* Filter:2, Coefficient: 63 */ + CONVERT_COEFF(84418), /* Filter:2, Coefficient: 64 */ + CONVERT_COEFF(-78725), /* Filter:1, Coefficient: 61 */ + CONVERT_COEFF(101248), /* Filter:1, Coefficient: 62 */ + CONVERT_COEFF(-71885), /* Filter:1, Coefficient: 63 */ + CONVERT_COEFF(33030), /* Filter:1, Coefficient: 64 */ +}; diff --git a/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h new file mode 100644 index 000000000000..af6e1137500f --- /dev/null +++ b/src/audio/asrc/coef/asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h @@ -0,0 +1,382 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2012-2025 Intel Corporation. + */ + +/* Conversion from 48000 Hz to 48000 Hz */ +/* NUM_FILTERS=7, FILTER_LENGTH=48, alpha=7.150000, gamma=0.458000 */ + +__cold_rodata static const int32_t coeff48000to48000[] = { + + /* Filter #1, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(201584), /* Filter:7, Coefficient: 1 */ + CONVERT_COEFF(-337772), /* Filter:7, Coefficient: 2 */ + CONVERT_COEFF(532323), /* Filter:7, Coefficient: 3 */ + CONVERT_COEFF(-781809), /* Filter:7, Coefficient: 4 */ + CONVERT_COEFF(-509717), /* Filter:6, Coefficient: 1 */ + CONVERT_COEFF(901735), /* Filter:6, Coefficient: 2 */ + CONVERT_COEFF(-1563722), /* Filter:6, Coefficient: 3 */ + CONVERT_COEFF(2576238), /* Filter:6, Coefficient: 4 */ + CONVERT_COEFF(-76220), /* Filter:5, Coefficient: 1 */ + CONVERT_COEFF(108575), /* Filter:5, Coefficient: 2 */ + CONVERT_COEFF(38232), /* Filter:5, Coefficient: 3 */ + CONVERT_COEFF(-557092), /* Filter:5, Coefficient: 4 */ + CONVERT_COEFF(427848), /* Filter:4, Coefficient: 1 */ + CONVERT_COEFF(-890617), /* Filter:4, Coefficient: 2 */ + CONVERT_COEFF(1688361), /* Filter:4, Coefficient: 3 */ + CONVERT_COEFF(-2889171), /* Filter:4, Coefficient: 4 */ + CONVERT_COEFF(450982), /* Filter:3, Coefficient: 1 */ + CONVERT_COEFF(-810046), /* Filter:3, Coefficient: 2 */ + CONVERT_COEFF(1143995), /* Filter:3, Coefficient: 3 */ + CONVERT_COEFF(-1251295), /* Filter:3, Coefficient: 4 */ + CONVERT_COEFF(-134205), /* Filter:2, Coefficient: 1 */ + CONVERT_COEFF(408052), /* Filter:2, Coefficient: 2 */ + CONVERT_COEFF(-969157), /* Filter:2, Coefficient: 3 */ + CONVERT_COEFF(1915703), /* Filter:2, Coefficient: 4 */ + CONVERT_COEFF(-119772), /* Filter:1, Coefficient: 1 */ + CONVERT_COEFF(240527), /* Filter:1, Coefficient: 2 */ + CONVERT_COEFF(-379589), /* Filter:1, Coefficient: 3 */ + CONVERT_COEFF(490498), /* Filter:1, Coefficient: 4 */ + + /* Filter #2, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(1063090), /* Filter:7, Coefficient: 5 */ + CONVERT_COEFF(-1325755), /* Filter:7, Coefficient: 6 */ + CONVERT_COEFF(1486665), /* Filter:7, Coefficient: 7 */ + CONVERT_COEFF(-1428619), /* Filter:7, Coefficient: 8 */ + CONVERT_COEFF(-3983820), /* Filter:6, Coefficient: 5 */ + CONVERT_COEFF(5758133), /* Filter:6, Coefficient: 6 */ + CONVERT_COEFF(-7757839), /* Filter:6, Coefficient: 7 */ + CONVERT_COEFF(9692081), /* Filter:6, Coefficient: 8 */ + CONVERT_COEFF(1699253), /* Filter:5, Coefficient: 5 */ + CONVERT_COEFF(-3746237), /* Filter:5, Coefficient: 6 */ + CONVERT_COEFF(6958850), /* Filter:5, Coefficient: 7 */ + CONVERT_COEFF(-11504364), /* Filter:5, Coefficient: 8 */ + CONVERT_COEFF(4484829), /* Filter:4, Coefficient: 5 */ + CONVERT_COEFF(-6340864), /* Filter:4, Coefficient: 6 */ + CONVERT_COEFF(8150817), /* Filter:4, Coefficient: 7 */ + CONVERT_COEFF(-9406444), /* Filter:4, Coefficient: 8 */ + CONVERT_COEFF(828449), /* Filter:3, Coefficient: 5 */ + CONVERT_COEFF(513188), /* Filter:3, Coefficient: 6 */ + CONVERT_COEFF(-3201273), /* Filter:3, Coefficient: 7 */ + CONVERT_COEFF(7625293), /* Filter:3, Coefficient: 8 */ + CONVERT_COEFF(-3299444), /* Filter:2, Coefficient: 5 */ + CONVERT_COEFF(5081025), /* Filter:2, Coefficient: 6 */ + CONVERT_COEFF(-7084841), /* Filter:2, Coefficient: 7 */ + CONVERT_COEFF(8963125), /* Filter:2, Coefficient: 8 */ + CONVERT_COEFF(-496983), /* Filter:1, Coefficient: 5 */ + CONVERT_COEFF(295408), /* Filter:1, Coefficient: 6 */ + CONVERT_COEFF(234925), /* Filter:1, Coefficient: 7 */ + CONVERT_COEFF(-1212831), /* Filter:1, Coefficient: 8 */ + + /* Filter #3, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(1005001), /* Filter:7, Coefficient: 9 */ + CONVERT_COEFF(-51772), /* Filter:7, Coefficient: 10 */ + CONVERT_COEFF(-1592653), /* Filter:7, Coefficient: 11 */ + CONVERT_COEFF(4060025), /* Filter:7, Coefficient: 12 */ + CONVERT_COEFF(-11095974), /* Filter:6, Coefficient: 9 */ + CONVERT_COEFF(11326651), /* Filter:6, Coefficient: 10 */ + CONVERT_COEFF(-9587117), /* Filter:6, Coefficient: 11 */ + CONVERT_COEFF(4982353), /* Filter:6, Coefficient: 12 */ + CONVERT_COEFF(17367482), /* Filter:5, Coefficient: 9 */ + CONVERT_COEFF(-24255226), /* Filter:5, Coefficient: 10 */ + CONVERT_COEFF(31509193), /* Filter:5, Coefficient: 11 */ + CONVERT_COEFF(-38039723), /* Filter:5, Coefficient: 12 */ + CONVERT_COEFF(9395942), /* Filter:4, Coefficient: 9 */ + CONVERT_COEFF(-7240294), /* Filter:4, Coefficient: 10 */ + CONVERT_COEFF(1973428), /* Filter:4, Coefficient: 11 */ + CONVERT_COEFF(7334367), /* Filter:4, Coefficient: 12 */ + CONVERT_COEFF(-14032432), /* Filter:3, Coefficient: 9 */ + CONVERT_COEFF(22406684), /* Filter:3, Coefficient: 10 */ + CONVERT_COEFF(-32346679), /* Filter:3, Coefficient: 11 */ + CONVERT_COEFF(42960394), /* Filter:3, Coefficient: 12 */ + CONVERT_COEFF(-10179847), /* Filter:2, Coefficient: 9 */ + CONVERT_COEFF(10023910), /* Filter:2, Coefficient: 10 */ + CONVERT_COEFF(-7657809), /* Filter:2, Coefficient: 11 */ + CONVERT_COEFF(2202705), /* Filter:2, Coefficient: 12 */ + CONVERT_COEFF(2728545), /* Filter:1, Coefficient: 9 */ + CONVERT_COEFF(-4811819), /* Filter:1, Coefficient: 10 */ + CONVERT_COEFF(7398958), /* Filter:1, Coefficient: 11 */ + CONVERT_COEFF(-10303827), /* Filter:1, Coefficient: 12 */ + + /* Filter #4, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-7418549), /* Filter:7, Coefficient: 13 */ + CONVERT_COEFF(11634082), /* Filter:7, Coefficient: 14 */ + CONVERT_COEFF(-16526119), /* Filter:7, Coefficient: 15 */ + CONVERT_COEFF(21713991), /* Filter:7, Coefficient: 16 */ + CONVERT_COEFF(3391495), /* Filter:6, Coefficient: 13 */ + CONVERT_COEFF(-16327279), /* Filter:6, Coefficient: 14 */ + CONVERT_COEFF(34359416), /* Filter:6, Coefficient: 15 */ + CONVERT_COEFF(-57585131), /* Filter:6, Coefficient: 16 */ + CONVERT_COEFF(42294622), /* Filter:5, Coefficient: 13 */ + CONVERT_COEFF(-42269640), /* Filter:5, Coefficient: 14 */ + CONVERT_COEFF(35559100), /* Filter:5, Coefficient: 15 */ + CONVERT_COEFF(-19433648), /* Filter:5, Coefficient: 16 */ + CONVERT_COEFF(-21417196), /* Filter:4, Coefficient: 13 */ + CONVERT_COEFF(40631722), /* Filter:4, Coefficient: 14 */ + CONVERT_COEFF(-64768213), /* Filter:4, Coefficient: 15 */ + CONVERT_COEFF(92865281), /* Filter:4, Coefficient: 16 */ + CONVERT_COEFF(-52793804), /* Filter:3, Coefficient: 13 */ + CONVERT_COEFF(59804363), /* Filter:3, Coefficient: 14 */ + CONVERT_COEFF(-61377672), /* Filter:3, Coefficient: 15 */ + CONVERT_COEFF(54364939), /* Filter:3, Coefficient: 16 */ + CONVERT_COEFF(7145457), /* Filter:2, Coefficient: 13 */ + CONVERT_COEFF(-20980397), /* Filter:2, Coefficient: 14 */ + CONVERT_COEFF(39546773), /* Filter:2, Coefficient: 15 */ + CONVERT_COEFF(-62615800), /* Filter:2, Coefficient: 16 */ + CONVERT_COEFF(13197765), /* Filter:1, Coefficient: 13 */ + CONVERT_COEFF(-15601953), /* Filter:1, Coefficient: 14 */ + CONVERT_COEFF(16892782), /* Filter:1, Coefficient: 15 */ + CONVERT_COEFF(-16315753), /* Filter:1, Coefficient: 16 */ + + /* Filter #5, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-26537520), /* Filter:7, Coefficient: 17 */ + CONVERT_COEFF(29908749), /* Filter:7, Coefficient: 18 */ + CONVERT_COEFF(-29980490), /* Filter:7, Coefficient: 19 */ + CONVERT_COEFF(23337872), /* Filter:7, Coefficient: 20 */ + CONVERT_COEFF(85425357), /* Filter:6, Coefficient: 17 */ + CONVERT_COEFF(-116220246), /* Filter:6, Coefficient: 18 */ + CONVERT_COEFF(146323990), /* Filter:6, Coefficient: 19 */ + CONVERT_COEFF(-167617073), /* Filter:6, Coefficient: 20 */ + CONVERT_COEFF(-9079150), /* Filter:5, Coefficient: 17 */ + CONVERT_COEFF(53136657), /* Filter:5, Coefficient: 18 */ + CONVERT_COEFF(-116017890), /* Filter:5, Coefficient: 19 */ + CONVERT_COEFF(200714461), /* Filter:5, Coefficient: 20 */ + CONVERT_COEFF(-123020997), /* Filter:4, Coefficient: 17 */ + CONVERT_COEFF(152146065), /* Filter:4, Coefficient: 18 */ + CONVERT_COEFF(-175480494), /* Filter:4, Coefficient: 19 */ + CONVERT_COEFF(185308827), /* Filter:4, Coefficient: 20 */ + CONVERT_COEFF(-35083980), /* Filter:3, Coefficient: 17 */ + CONVERT_COEFF(-839184), /* Filter:3, Coefficient: 18 */ + CONVERT_COEFF(59061656), /* Filter:3, Coefficient: 19 */ + CONVERT_COEFF(-148239694), /* Filter:3, Coefficient: 20 */ + CONVERT_COEFF(89388345), /* Filter:2, Coefficient: 17 */ + CONVERT_COEFF(-118423648), /* Filter:2, Coefficient: 18 */ + CONVERT_COEFF(147552056), /* Filter:2, Coefficient: 19 */ + CONVERT_COEFF(-173608580), /* Filter:2, Coefficient: 20 */ + CONVERT_COEFF(12995329), /* Filter:1, Coefficient: 17 */ + CONVERT_COEFF(-5913276), /* Filter:1, Coefficient: 18 */ + CONVERT_COEFF(-6205575), /* Filter:1, Coefficient: 19 */ + CONVERT_COEFF(25256070), /* Filter:1, Coefficient: 20 */ + + /* Filter #6, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-3217307), /* Filter:7, Coefficient: 21 */ + CONVERT_COEFF(-37038723), /* Filter:7, Coefficient: 22 */ + CONVERT_COEFF(86353009), /* Filter:7, Coefficient: 23 */ + CONVERT_COEFF(-97721939), /* Filter:7, Coefficient: 24 */ + CONVERT_COEFF(160008482), /* Filter:6, Coefficient: 21 */ + CONVERT_COEFF(-78261417), /* Filter:6, Coefficient: 22 */ + CONVERT_COEFF(-112362175), /* Filter:6, Coefficient: 23 */ + CONVERT_COEFF(293242487), /* Filter:6, Coefficient: 24 */ + CONVERT_COEFF(-307335294), /* Filter:5, Coefficient: 21 */ + CONVERT_COEFF(424736994), /* Filter:5, Coefficient: 22 */ + CONVERT_COEFF(-438040128), /* Filter:5, Coefficient: 23 */ + CONVERT_COEFF(198203604), /* Filter:5, Coefficient: 24 */ + CONVERT_COEFF(-166691617), /* Filter:4, Coefficient: 21 */ + CONVERT_COEFF(75780494), /* Filter:4, Coefficient: 22 */ + CONVERT_COEFF(306273762), /* Filter:4, Coefficient: 23 */ + CONVERT_COEFF(-885042156), /* Filter:4, Coefficient: 24 */ + CONVERT_COEFF(284938963), /* Filter:3, Coefficient: 21 */ + CONVERT_COEFF(-508669005), /* Filter:3, Coefficient: 22 */ + CONVERT_COEFF(934119707), /* Filter:3, Coefficient: 23 */ + CONVERT_COEFF(-607381991), /* Filter:3, Coefficient: 24 */ + CONVERT_COEFF(191344927), /* Filter:2, Coefficient: 21 */ + CONVERT_COEFF(-188272598), /* Filter:2, Coefficient: 22 */ + CONVERT_COEFF(107814255), /* Filter:2, Coefficient: 23 */ + CONVERT_COEFF(1098624520), /* Filter:2, Coefficient: 24 */ + CONVERT_COEFF(-54854236), /* Filter:1, Coefficient: 21 */ + CONVERT_COEFF(104205542), /* Filter:1, Coefficient: 22 */ + CONVERT_COEFF(-207541862), /* Filter:1, Coefficient: 23 */ + CONVERT_COEFF(676692041), /* Filter:1, Coefficient: 24 */ + + /* Filter #7, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(85978275), /* Filter:7, Coefficient: 25 */ + CONVERT_COEFF(-36956143), /* Filter:7, Coefficient: 26 */ + CONVERT_COEFF(-3244216), /* Filter:7, Coefficient: 27 */ + CONVERT_COEFF(23345067), /* Filter:7, Coefficient: 28 */ + CONVERT_COEFF(-404403423), /* Filter:6, Coefficient: 25 */ + CONVERT_COEFF(300207629), /* Filter:6, Coefficient: 26 */ + CONVERT_COEFF(-140639902), /* Filter:6, Coefficient: 27 */ + CONVERT_COEFF(27599531), /* Filter:6, Coefficient: 28 */ + CONVERT_COEFF(293327128), /* Filter:5, Coefficient: 25 */ + CONVERT_COEFF(-521588890), /* Filter:5, Coefficient: 26 */ + CONVERT_COEFF(444290293), /* Filter:5, Coefficient: 27 */ + CONVERT_COEFF(-287297861), /* Filter:5, Coefficient: 28 */ + CONVERT_COEFF(844058593), /* Filter:4, Coefficient: 25 */ + CONVERT_COEFF(-251982826), /* Filter:4, Coefficient: 26 */ + CONVERT_COEFF(-139427582), /* Filter:4, Coefficient: 27 */ + CONVERT_COEFF(221132516), /* Filter:4, Coefficient: 28 */ + CONVERT_COEFF(-603949609), /* Filter:3, Coefficient: 25 */ + CONVERT_COEFF(929187271), /* Filter:3, Coefficient: 26 */ + CONVERT_COEFF(-507498526), /* Filter:3, Coefficient: 27 */ + CONVERT_COEFF(285983393), /* Filter:3, Coefficient: 28 */ + CONVERT_COEFF(-1099221720), /* Filter:2, Coefficient: 25 */ + CONVERT_COEFF(-107131260), /* Filter:2, Coefficient: 26 */ + CONVERT_COEFF(187466276), /* Filter:2, Coefficient: 27 */ + CONVERT_COEFF(-190655157), /* Filter:2, Coefficient: 28 */ + CONVERT_COEFF(676692041), /* Filter:1, Coefficient: 25 */ + CONVERT_COEFF(-207541862), /* Filter:1, Coefficient: 26 */ + CONVERT_COEFF(104205542), /* Filter:1, Coefficient: 27 */ + CONVERT_COEFF(-54854236), /* Filter:1, Coefficient: 28 */ + + /* Filter #8, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-29977934), /* Filter:7, Coefficient: 29 */ + CONVERT_COEFF(29900921), /* Filter:7, Coefficient: 30 */ + CONVERT_COEFF(-26527103), /* Filter:7, Coefficient: 31 */ + CONVERT_COEFF(21702815), /* Filter:7, Coefficient: 32 */ + CONVERT_COEFF(33517333), /* Filter:6, Coefficient: 29 */ + CONVERT_COEFF(-63177333), /* Filter:6, Coefficient: 30 */ + CONVERT_COEFF(73741881), /* Filter:6, Coefficient: 31 */ + CONVERT_COEFF(-72644258), /* Filter:6, Coefficient: 32 */ + CONVERT_COEFF(165959941), /* Filter:5, Coefficient: 29 */ + CONVERT_COEFF(-79430320), /* Filter:5, Coefficient: 30 */ + CONVERT_COEFF(20091574), /* Filter:5, Coefficient: 31 */ + CONVERT_COEFF(18247620), /* Filter:5, Coefficient: 32 */ + CONVERT_COEFF(-224053962), /* Filter:4, Coefficient: 29 */ + CONVERT_COEFF(199362700), /* Filter:4, Coefficient: 30 */ + CONVERT_COEFF(-164221867), /* Filter:4, Coefficient: 31 */ + CONVERT_COEFF(126509506), /* Filter:4, Coefficient: 32 */ + CONVERT_COEFF(-150024800), /* Filter:3, Coefficient: 29 */ + CONVERT_COEFF(60887712), /* Filter:3, Coefficient: 30 */ + CONVERT_COEFF(-2449324), /* Filter:3, Coefficient: 31 */ + CONVERT_COEFF(-33779561), /* Filter:3, Coefficient: 32 */ + CONVERT_COEFF(173118469), /* Filter:2, Coefficient: 29 */ + CONVERT_COEFF(-147250722), /* Filter:2, Coefficient: 30 */ + CONVERT_COEFF(118271995), /* Filter:2, Coefficient: 31 */ + CONVERT_COEFF(-89345383), /* Filter:2, Coefficient: 32 */ + CONVERT_COEFF(25256070), /* Filter:1, Coefficient: 29 */ + CONVERT_COEFF(-6205575), /* Filter:1, Coefficient: 30 */ + CONVERT_COEFF(-5913276), /* Filter:1, Coefficient: 31 */ + CONVERT_COEFF(12995329), /* Filter:1, Coefficient: 32 */ + + /* Filter #9, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-16515450), /* Filter:7, Coefficient: 33 */ + CONVERT_COEFF(11624746), /* Filter:7, Coefficient: 34 */ + CONVERT_COEFF(-7410994), /* Filter:7, Coefficient: 35 */ + CONVERT_COEFF(4054390), /* Filter:7, Coefficient: 36 */ + CONVERT_COEFF(64749828), /* Filter:6, Coefficient: 33 */ + CONVERT_COEFF(-53438753), /* Filter:6, Coefficient: 34 */ + CONVERT_COEFF(41090862), /* Filter:6, Coefficient: 35 */ + CONVERT_COEFF(-29322557), /* Filter:6, Coefficient: 36 */ + CONVERT_COEFF(-40444649), /* Filter:5, Coefficient: 33 */ + CONVERT_COEFF(50530543), /* Filter:5, Coefficient: 34 */ + CONVERT_COEFF(-51969177), /* Filter:5, Coefficient: 35 */ + CONVERT_COEFF(47732391), /* Filter:5, Coefficient: 36 */ + CONVERT_COEFF(-90610096), /* Filter:4, Coefficient: 33 */ + CONVERT_COEFF(59102310), /* Filter:4, Coefficient: 34 */ + CONVERT_COEFF(-33359574), /* Filter:4, Coefficient: 35 */ + CONVERT_COEFF(13843008), /* Filter:4, Coefficient: 36 */ + CONVERT_COEFF(53381614), /* Filter:3, Coefficient: 33 */ + CONVERT_COEFF(-60692487), /* Filter:3, Coefficient: 34 */ + CONVERT_COEFF(59374033), /* Filter:3, Coefficient: 35 */ + CONVERT_COEFF(-52565904), /* Filter:3, Coefficient: 36 */ + CONVERT_COEFF(62645405), /* Filter:2, Coefficient: 33 */ + CONVERT_COEFF(-39619353), /* Filter:2, Coefficient: 34 */ + CONVERT_COEFF(21073095), /* Filter:2, Coefficient: 35 */ + CONVERT_COEFF(-7241772), /* Filter:2, Coefficient: 36 */ + CONVERT_COEFF(-16315753), /* Filter:1, Coefficient: 33 */ + CONVERT_COEFF(16892782), /* Filter:1, Coefficient: 34 */ + CONVERT_COEFF(-15601953), /* Filter:1, Coefficient: 35 */ + CONVERT_COEFF(13197765), /* Filter:1, Coefficient: 36 */ + + /* Filter #10, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(-1588840), /* Filter:7, Coefficient: 37 */ + CONVERT_COEFF(-54023), /* Filter:7, Coefficient: 38 */ + CONVERT_COEFF(1006037), /* Filter:7, Coefficient: 39 */ + CONVERT_COEFF(-1428806), /* Filter:7, Coefficient: 40 */ + CONVERT_COEFF(19130847), /* Filter:6, Coefficient: 37 */ + CONVERT_COEFF(-11009977), /* Filter:6, Coefficient: 38 */ + CONVERT_COEFF(5064348), /* Filter:6, Coefficient: 39 */ + CONVERT_COEFF(-1121566), /* Filter:6, Coefficient: 40 */ + CONVERT_COEFF(-40290924), /* Filter:5, Coefficient: 37 */ + CONVERT_COEFF(31587996), /* Filter:5, Coefficient: 38 */ + CONVERT_COEFF(-23032529), /* Filter:5, Coefficient: 39 */ + CONVERT_COEFF(15527527), /* Filter:5, Coefficient: 40 */ + CONVERT_COEFF(-316683), /* Filter:4, Coefficient: 37 */ + CONVERT_COEFF(-7949710), /* Filter:4, Coefficient: 38 */ + CONVERT_COEFF(11982264), /* Filter:4, Coefficient: 39 */ + CONVERT_COEFF(-12919307), /* Filter:4, Coefficient: 40 */ + CONVERT_COEFF(42881174), /* Filter:3, Coefficient: 37 */ + CONVERT_COEFF(-32366569), /* Filter:3, Coefficient: 38 */ + CONVERT_COEFF(22483813), /* Filter:3, Coefficient: 39 */ + CONVERT_COEFF(-14134393), /* Filter:3, Coefficient: 40 */ + CONVERT_COEFF(-2113613), /* Filter:2, Coefficient: 37 */ + CONVERT_COEFF(7582042), /* Filter:2, Coefficient: 38 */ + CONVERT_COEFF(-9963872), /* Filter:2, Coefficient: 39 */ + CONVERT_COEFF(10135303), /* Filter:2, Coefficient: 40 */ + CONVERT_COEFF(-10303827), /* Filter:1, Coefficient: 37 */ + CONVERT_COEFF(7398958), /* Filter:1, Coefficient: 38 */ + CONVERT_COEFF(-4811819), /* Filter:1, Coefficient: 39 */ + CONVERT_COEFF(2728545), /* Filter:1, Coefficient: 40 */ + + /* Filter #11, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(1486340), /* Filter:7, Coefficient: 41 */ + CONVERT_COEFF(-1325194), /* Filter:7, Coefficient: 42 */ + CONVERT_COEFF(1062490), /* Filter:7, Coefficient: 43 */ + CONVERT_COEFF(-781289), /* Filter:7, Coefficient: 44 */ + CONVERT_COEFF(-1159486), /* Filter:6, Coefficient: 41 */ + CONVERT_COEFF(2193279), /* Filter:6, Coefficient: 42 */ + CONVERT_COEFF(-2391815), /* Filter:6, Coefficient: 43 */ + CONVERT_COEFF(2112274), /* Filter:6, Coefficient: 44 */ + CONVERT_COEFF(-9534209), /* Filter:5, Coefficient: 41 */ + CONVERT_COEFF(5163088), /* Filter:5, Coefficient: 42 */ + CONVERT_COEFF(-2278340), /* Filter:5, Coefficient: 43 */ + CONVERT_COEFF(600969), /* Filter:5, Coefficient: 44 */ + CONVERT_COEFF(11857857), /* Filter:4, Coefficient: 41 */ + CONVERT_COEFF(-9741790), /* Filter:4, Coefficient: 42 */ + CONVERT_COEFF(7296922), /* Filter:4, Coefficient: 43 */ + CONVERT_COEFF(-5011117), /* Filter:4, Coefficient: 44 */ + CONVERT_COEFF(7729413), /* Filter:3, Coefficient: 41 */ + CONVERT_COEFF(-3293739), /* Filter:3, Coefficient: 42 */ + CONVERT_COEFF(587429), /* Filter:3, Coefficient: 43 */ + CONVERT_COEFF(773723), /* Filter:3, Coefficient: 44 */ + CONVERT_COEFF(-8932187), /* Filter:2, Coefficient: 41 */ + CONVERT_COEFF(7064806), /* Filter:2, Coefficient: 42 */ + CONVERT_COEFF(-5069022), /* Filter:2, Coefficient: 43 */ + CONVERT_COEFF(3292866), /* Filter:2, Coefficient: 44 */ + CONVERT_COEFF(-1212831), /* Filter:1, Coefficient: 41 */ + CONVERT_COEFF(234925), /* Filter:1, Coefficient: 42 */ + CONVERT_COEFF(295408), /* Filter:1, Coefficient: 43 */ + CONVERT_COEFF(-496983), /* Filter:1, Coefficient: 44 */ + + /* Filter #12, conversion from 48000 Hz to 48000 Hz */ + + CONVERT_COEFF(531937), /* Filter:7, Coefficient: 45 */ + CONVERT_COEFF(-337523), /* Filter:7, Coefficient: 46 */ + CONVERT_COEFF(201449), /* Filter:7, Coefficient: 47 */ + CONVERT_COEFF(-12084314), /* Filter:7, Coefficient: 48 */ + CONVERT_COEFF(-1628548), /* Filter:6, Coefficient: 45 */ + CONVERT_COEFF(1123843), /* Filter:6, Coefficient: 46 */ + CONVERT_COEFF(-699211), /* Filter:6, Coefficient: 47 */ + CONVERT_COEFF(35988267), /* Filter:6, Coefficient: 48 */ + CONVERT_COEFF(201557), /* Filter:5, Coefficient: 45 */ + CONVERT_COEFF(-447451), /* Filter:5, Coefficient: 46 */ + CONVERT_COEFF(397902), /* Filter:5, Coefficient: 47 */ + CONVERT_COEFF(-39316590), /* Filter:5, Coefficient: 48 */ + CONVERT_COEFF(3151503), /* Filter:4, Coefficient: 45 */ + CONVERT_COEFF(-1807037), /* Filter:4, Coefficient: 46 */ + CONVERT_COEFF(943390), /* Filter:4, Coefficient: 47 */ + CONVERT_COEFF(18887301), /* Filter:4, Coefficient: 48 */ + CONVERT_COEFF(-1214047), /* Filter:3, Coefficient: 45 */ + CONVERT_COEFF(1120557), /* Filter:3, Coefficient: 46 */ + CONVERT_COEFF(-796401), /* Filter:3, Coefficient: 47 */ + CONVERT_COEFF(-3816331), /* Filter:3, Coefficient: 48 */ + CONVERT_COEFF(-1912448), /* Filter:2, Coefficient: 45 */ + CONVERT_COEFF(967701), /* Filter:2, Coefficient: 46 */ + CONVERT_COEFF(-407415), /* Filter:2, Coefficient: 47 */ + CONVERT_COEFF(461439), /* Filter:2, Coefficient: 48 */ + CONVERT_COEFF(490498), /* Filter:1, Coefficient: 45 */ + CONVERT_COEFF(-379589), /* Filter:1, Coefficient: 46 */ + CONVERT_COEFF(240527), /* Filter:1, Coefficient: 47 */ + CONVERT_COEFF(-119772), /* Filter:1, Coefficient: 48 */ +}; From c3dce1237f7cfc22d2ea92773f3726501414d144 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Thu, 6 Mar 2025 19:57:06 +0200 Subject: [PATCH 3/6] Audio: ASRC: Optimize for HiFi5 impulse response calculations This patch optimizes for HiFi5 the polynomials evaluations to calculate rate conversion FIR impulse responses. The functions asrc_calc_impulse_response_n[4-7]() calculate with Horner's method each coefficient of the FIR with 3th to 5th order polynomial. The header files with polynomials coefficients are re-ordered for for direct 128 bits int32x4 loads. The loop is modified to calculate four FIR coefficients per loop. Since there is no suitable quad-MAC instruction found, the previous dual-MAC is used twice. The saving is 11.6 MCPS, from 38.75 to 27.20 MCPS for 32 bits stereo 44.1 to 48 kHz conversion, push mode. Signed-off-by: Seppo Ingalsuo --- src/audio/asrc/asrc_farrow.c | 46 ++++++ src/audio/asrc/asrc_farrow_hifi5.c | 251 ++++++++++++++++------------- 2 files changed, 185 insertions(+), 112 deletions(-) diff --git a/src/audio/asrc/asrc_farrow.c b/src/audio/asrc/asrc_farrow.c index 5e26c610d6bd..e90dcb4dc4f1 100644 --- a/src/audio/asrc/asrc_farrow.c +++ b/src/audio/asrc/asrc_farrow.c @@ -145,6 +145,51 @@ static const struct asrc_filter_params c_filter_params[CR_NUM] = { * coefficients will be attached to the _Src_farrow struct via the * initialise_filter function. */ + +#if SOF_USE_MIN_HIFI(5, ASRC) +#include "coef/asrc_farrow_coeff_4x_44100Hz_to_48000Hz.h" +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_48000Hz.h" + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_24000_TO_08000) +#include "coef/asrc_farrow_coeff_4x_24000Hz_to_08000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_24000_TO_16000) +#include "coef/asrc_farrow_coeff_4x_24000Hz_to_16000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_08000) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_08000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_11025) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_11025Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_12000) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_12000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_16000) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_16000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_22050) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_22050Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_24000) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_24000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_32000) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_32000Hz.h" +#endif + +#if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_44100) +#include "coef/asrc_farrow_coeff_4x_48000Hz_to_44100Hz.h" +#endif +#else #include "coef/asrc_farrow_coeff_44100Hz_to_48000Hz.h" #include "coef/asrc_farrow_coeff_48000Hz_to_48000Hz.h" @@ -188,6 +233,7 @@ static const struct asrc_filter_params c_filter_params[CR_NUM] = { #if (CONFIG_ASRC_SUPPORT_CONVERSION_48000_TO_44100) #include "coef/asrc_farrow_coeff_48000Hz_to_44100Hz.h" #endif +#endif /* * FUNCTION DECLARATIONS diff --git a/src/audio/asrc/asrc_farrow_hifi5.c b/src/audio/asrc/asrc_farrow_hifi5.c index 6a8b7041aba4..ac656f255c01 100644 --- a/src/audio/asrc/asrc_farrow_hifi5.c +++ b/src/audio/asrc/asrc_farrow_hifi5.c @@ -181,27 +181,29 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, void asrc_calc_impulse_response_n4(struct asrc_farrow *src_obj) { ae_f32x2 time_x2; - ae_f32x2 accum20 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 accum31 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 *filter_P; - ae_f32x2 *result_P; - ae_valign align_f; - ae_valign align_out; - int index_filter; - int index_limit; + ae_f32x2 a10; + ae_f32x2 a32; + ae_f32x2 b10; + ae_f32x2 b32; + ae_int32x4 *filter_P; + ae_int32x4 *result_P; + ae_valignx2 align_f; + ae_valignx2 align_out; + int i; + int n; /* Set the pointer tot the polyphase filters */ - filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; + filter_P = (ae_int32x4 *)&src_obj->polyphase_filters[0]; /* * Set the pointer to the impulse response. * This is where the result is stored. */ - result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + result_P = (ae_int32x4 *)&src_obj->impulse_response[0]; /* allow unaligned load of 64 bit of polyphase filter coefficients */ - align_f = AE_LA64_PP(filter_P); - align_out = AE_ZALIGN64(); + align_f = AE_LA128_PP(filter_P); + align_out = AE_ZALIGN128(); /* Get the current fractional time */ time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); @@ -212,24 +214,25 @@ void asrc_calc_impulse_response_n4(struct asrc_farrow *src_obj) * 'index_limit' is therefore stored to reduce redundant * calculations. */ - index_limit = src_obj->filter_length >> 1; - for (index_filter = 0; index_filter < index_limit; index_filter++) { + n = src_obj->filter_length >> 2; + for (i = 0; i < n; i++) { /* * The polyphase filters lie in storage as follows * (For N = 4, M = 64): - * [g3,0][g3,1][g2,0][g2,1] - * ...[g0,0][g0,1][g3,2][g3,3]...[g0,62][g0,63]. + * [g3,0][g3,1][g3,2][g3,3][g2,0][g2,1][g2,2][g2,3]... + * [g0,0][g0,1][g0,2][g0,3][g3,4][g3,5][g3,6][g3,7]... + * [g0,60][g0,61][g0,62][g0,63] * * Since the polyphase filter coefficients are stored * in an appropriate order, we can just load them up, * one after another. */ - /* Load two coefficients of the 4th polyphase filter */ - AE_LA32X2_IP(accum31, align_f, filter_P); + /* Load coefficients g3,4*i g3,4*i+1 g3,4*i+2, g3,4*i+3 */ + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); - /* Load two coefficients of the 3rd polyphase filter */ - AE_LA32X2_IP(accum20, align_f, filter_P); + /* Load coefficients g2,4*i g2,4*i+1 g2,4*i+2, g2,4*i+3 */ + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); /* * Use the 'Horner's Method' to calculate the result @@ -238,23 +241,24 @@ void asrc_calc_impulse_response_n4(struct asrc_farrow *src_obj) * Example for one coefficient (N = 4): * g_out,m = ((g3,m*t + g2,m)*t + g1,m)*t + g0,m */ - AE_MULAFP32X2RS(accum20, accum31, time_x2); + AE_MULAFP32X2RS(a10, b10, time_x2); /* Dual-MAC, could not find */ + AE_MULAFP32X2RS(a32, b32, time_x2); /* suitable HiFi5 quad-MAC */ - /* Load two coefficients of the second polyphase filter */ - AE_LA32X2_IP(accum31, align_f, filter_P); - /* Multiply and accumulate */ - AE_MULAFP32X2RS(accum31, accum20, time_x2); + /* Load coefficients g1,4*i g1,4*i+1 g1,4*i+2, g1,4*i+3 */ + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - /* Load two coefficients of the first polyphase filter */ - AE_LA32X2_IP(accum20, align_f, filter_P); - /* Multiply and accumulate */ - AE_MULAFP32X2RS(accum20, accum31, time_x2); + /* Load coefficients g0,4*i g0,4*i+1 g0,4*i+2, g0,4*i+3 */ + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); /* Store the result */ - AE_SA32X2_IP(accum20, align_out, result_P); + AE_SA32X2X2_IP(a10, a32, align_out, result_P); } - AE_SA64POS_FP(align_out, result_P); + AE_SA128POS_FP(align_out, result_P); } void asrc_calc_impulse_response_n5(struct asrc_farrow *src_obj) @@ -264,42 +268,49 @@ void asrc_calc_impulse_response_n5(struct asrc_farrow *src_obj) * of the algorithm and data handling */ ae_f32x2 time_x2; - ae_f32x2 accum31 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 accum420 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 *filter_P; - ae_f32x2 *result_P; - ae_valign align_f; - ae_valign align_out; - int index_filter; - int index_limit; + ae_f32x2 a10; + ae_f32x2 a32; + ae_f32x2 b10; + ae_f32x2 b32; + ae_int32x4 *filter_P; + ae_int32x4 *result_P; + ae_valignx2 align_f; + ae_valignx2 align_out; + int i; + int n; - filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; - result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + filter_P = (ae_int32x4 *)&src_obj->polyphase_filters[0]; + result_P = (ae_int32x4 *)&src_obj->impulse_response[0]; - align_f = AE_LA64_PP(filter_P); - align_out = AE_ZALIGN64(); + align_f = AE_LA128_PP(filter_P); + align_out = AE_ZALIGN128(); time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); time_x2 = AE_SLAI32S(time_x2, 4); - index_limit = src_obj->filter_length >> 1; - for (index_filter = 0; index_filter < index_limit; index_filter++) { - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_LA32X2_IP(accum31, align_f, filter_P); - AE_MULAFP32X2RS(accum31, accum420, time_x2); + n = src_obj->filter_length >> 2; + for (i = 0; i < n; i++) { + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); + + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_MULAFP32X2RS(accum420, accum31, time_x2); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum31, align_f, filter_P); - AE_MULAFP32X2RS(accum31, accum420, time_x2); + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_MULAFP32X2RS(accum420, accum31, time_x2); + AE_SA32X2X2_IP(b10, b32, align_out, result_P); - AE_SA32X2_IP(accum420, align_out, result_P); } - AE_SA64POS_FP(align_out, result_P); + AE_SA128POS_FP(align_out, result_P); } void asrc_calc_impulse_response_n6(struct asrc_farrow *src_obj) @@ -309,45 +320,53 @@ void asrc_calc_impulse_response_n6(struct asrc_farrow *src_obj) * of the algorithm and data handling */ ae_f32x2 time_x2; - ae_f32x2 accum531 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 accum420 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 *filter_P; - ae_f32x2 *result_P; - ae_valign align_f; - ae_valign align_out; - int index_filter; - int index_limit; + ae_f32x2 a10; + ae_f32x2 a32; + ae_f32x2 b10; + ae_f32x2 b32; + ae_int32x4 *filter_P; + ae_int32x4 *result_P; + ae_valignx2 align_f; + ae_valignx2 align_out; + int i; + int n; - filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; - result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + filter_P = (ae_int32x4 *)&src_obj->polyphase_filters[0]; + result_P = (ae_int32x4 *)&src_obj->impulse_response[0]; - align_f = AE_LA64_PP(filter_P); - align_out = AE_ZALIGN64(); + align_f = AE_LA128_PP(filter_P); + align_out = AE_ZALIGN128(); time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); time_x2 = AE_SLAI32S(time_x2, 4); - index_limit = src_obj->filter_length >> 1; - for (index_filter = 0; index_filter < index_limit; index_filter++) { - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_MULAFP32X2RS(accum420, accum531, time_x2); + n = src_obj->filter_length >> 2; + for (i = 0; i < n; i++) { + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); + + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_MULAFP32X2RS(accum531, accum420, time_x2); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_MULAFP32X2RS(accum420, accum531, time_x2); + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_MULAFP32X2RS(accum531, accum420, time_x2); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum420, align_f, filter_P); - AE_MULAFP32X2RS(accum420, accum531, time_x2); + AE_SA32X2X2_IP(a10, a32, align_out, result_P); - AE_SA32X2_IP(accum420, align_out, result_P); } - AE_SA64POS_FP(align_out, result_P); + AE_SA128POS_FP(align_out, result_P); } void asrc_calc_impulse_response_n7(struct asrc_farrow *src_obj) @@ -357,48 +376,56 @@ void asrc_calc_impulse_response_n7(struct asrc_farrow *src_obj) * of the algorithm and data handling */ ae_f32x2 time_x2; - ae_f32x2 accum6420 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 accum531 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 *filter_P; - ae_f32x2 *result_P; - ae_valign align_f; - ae_valign align_out; - int index_filter; - int index_limit; + ae_f32x2 a10; + ae_f32x2 a32; + ae_f32x2 b10; + ae_f32x2 b32; + ae_int32x4 *filter_P; + ae_int32x4 *result_P; + ae_valignx2 align_f; + ae_valignx2 align_out; + int i; + int n; - filter_P = (ae_f32x2 *)&src_obj->polyphase_filters[0]; - result_P = (ae_f32x2 *)&src_obj->impulse_response[0]; + filter_P = (ae_int32x4 *)&src_obj->polyphase_filters[0]; + result_P = (ae_int32x4 *)&src_obj->impulse_response[0]; - align_f = AE_LA64_PP(filter_P); - align_out = AE_ZALIGN64(); + align_f = AE_LA128_PP(filter_P); + align_out = AE_ZALIGN128(); time_x2 = AE_L32_X((ae_f32 *)&src_obj->time_value, 0); time_x2 = AE_SLAI32S(time_x2, 4); - index_limit = src_obj->filter_length >> 1; - for (index_filter = 0; index_filter < index_limit; index_filter++) { - AE_LA32X2_IP(accum6420, align_f, filter_P); - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_MULAFP32X2RS(accum531, accum6420, time_x2); + n = src_obj->filter_length >> 2; + for (i = 0; i < n; i++) { + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum6420, align_f, filter_P); - AE_MULAFP32X2RS(accum6420, accum531, time_x2); + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_MULAFP32X2RS(accum531, accum6420, time_x2); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum6420, align_f, filter_P); - AE_MULAFP32X2RS(accum6420, accum531, time_x2); + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_LA32X2_IP(accum531, align_f, filter_P); - AE_MULAFP32X2RS(accum531, accum6420, time_x2); + AE_LA32X2X2_IP(a10, a32, align_f, filter_P); + AE_MULAFP32X2RS(a10, b10, time_x2); + AE_MULAFP32X2RS(a32, b32, time_x2); - AE_LA32X2_IP(accum6420, align_f, filter_P); - AE_MULAFP32X2RS(accum6420, accum531, time_x2); + AE_LA32X2X2_IP(b10, b32, align_f, filter_P); + AE_MULAFP32X2RS(b10, a10, time_x2); + AE_MULAFP32X2RS(b32, a32, time_x2); - AE_SA32X2_IP(accum6420, align_out, result_P); + AE_SA32X2X2_IP(b10, b32, align_out, result_P); } - AE_SA64POS_FP(align_out, result_P); + AE_SA128POS_FP(align_out, result_P); } #endif /* ASRC_HIFI_5 */ From f309250ce923cc7558561a1c0da7b512399190d2 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Fri, 7 Mar 2025 19:03:27 +0200 Subject: [PATCH 4/6] Audio: ASRC: Reverse the FIR delay write direction There are more efficient HiFi instructions to load 128 bits aligned forward than backward. This change makes FIR write index to go backward when a new sample is written to delay line. Since the FIR is computed from newest samples to eldest direction the FIR compute read direction becomes forward. ASRC FIR avoids circular modification with duplicated write of data into double length buffer. Original code keeps buffer_write_position index in the second half. After this change the index is kept in the first half. Signed-off-by: Seppo Ingalsuo --- src/audio/asrc/asrc.c | 5 +++-- src/audio/asrc/asrc_farrow.c | 16 ++++++++-------- src/audio/asrc/asrc_farrow_generic.c | 4 ++-- src/audio/asrc/asrc_farrow_hifi3.c | 4 ++-- src/audio/asrc/asrc_farrow_hifi5.c | 4 ++-- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/audio/asrc/asrc.c b/src/audio/asrc/asrc.c index c90669d48696..19c06518379c 100644 --- a/src/audio/asrc/asrc.c +++ b/src/audio/asrc/asrc.c @@ -251,10 +251,11 @@ static int asrc_initialize_buffers(struct asrc_farrow *src_obj) /* Set buffer_length to filter_length * 2 to compensate for * missing element wise wrap around while loading but allowing - * aligned loads. + * aligned loads. FIR delay line write is initialized to last + * position of first copy block for reverse direction write. */ src_obj->buffer_length = src_obj->filter_length * 2; - src_obj->buffer_write_position = src_obj->filter_length; + src_obj->buffer_write_position = src_obj->filter_length - 1; if (src_obj->bit_depth == 32) { buffer_size = src_obj->buffer_length * sizeof(int32_t); diff --git a/src/audio/asrc/asrc_farrow.c b/src/audio/asrc/asrc_farrow.c index e90dcb4dc4f1..d43cbb79c782 100644 --- a/src/audio/asrc/asrc_farrow.c +++ b/src/audio/asrc/asrc_farrow.c @@ -882,11 +882,11 @@ void asrc_write_to_ring_buffer16(struct asrc_farrow *src_obj, int m; /* update the buffer_write_position */ - (src_obj->buffer_write_position)++; + (src_obj->buffer_write_position)--; /* since it's a ring buffer we need a wrap around */ - if (src_obj->buffer_write_position >= src_obj->buffer_length) - src_obj->buffer_write_position -= (src_obj->buffer_length >> 1); + if (src_obj->buffer_write_position < 0) + src_obj->buffer_write_position += (src_obj->buffer_length >> 1); /* handle input format */ if (src_obj->input_format == ASRC_IOF_INTERLEAVED) @@ -896,7 +896,7 @@ void asrc_write_to_ring_buffer16(struct asrc_farrow *src_obj, /* write data to each channel */ j = src_obj->buffer_write_position; - k = j - (src_obj->buffer_length >> 1); + k = j + (src_obj->buffer_length >> 1); for (ch = 0; ch < src_obj->num_channels; ch++) { /* * Since we want the filter function to load 64 bit of @@ -924,11 +924,11 @@ void asrc_write_to_ring_buffer32(struct asrc_farrow *src_obj, int m; /* update the buffer_write_position */ - (src_obj->buffer_write_position)++; + (src_obj->buffer_write_position)--; /* since it's a ring buffer we need a wrap around */ - if (src_obj->buffer_write_position >= src_obj->buffer_length) - src_obj->buffer_write_position -= (src_obj->buffer_length >> 1); + if (src_obj->buffer_write_position < 0) + src_obj->buffer_write_position += (src_obj->buffer_length >> 1); /* handle input format */ if (src_obj->input_format == ASRC_IOF_INTERLEAVED) @@ -938,7 +938,7 @@ void asrc_write_to_ring_buffer32(struct asrc_farrow *src_obj, /* write data to each channel */ j = src_obj->buffer_write_position; - k = j - (src_obj->buffer_length >> 1); + k = j + (src_obj->buffer_length >> 1); for (ch = 0; ch < src_obj->num_channels; ch++) { /* * Since we want the filter function to load 64 bit of diff --git a/src/audio/asrc/asrc_farrow_generic.c b/src/audio/asrc/asrc_farrow_generic.c index 65c073ac02f7..b2decc07db23 100644 --- a/src/audio/asrc/asrc_farrow_generic.c +++ b/src/audio/asrc/asrc_farrow_generic.c @@ -44,7 +44,7 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, * Data is Q1.15, coefficients are Q1.30. Prod will be Qx.45. */ for (n = 0; n < src_obj->filter_length; n++) - prod += (int64_t)(*buffer_p--) * (*filter_p++); + prod += (int64_t)(*buffer_p++) * (*filter_p++); /* Shift left after accumulation, because interim * results might saturate during filtering prod = prod @@ -96,7 +96,7 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, * quality. The product is Qx.54. */ for (n = 0; n < src_obj->filter_length; n++) - prod += (int64_t)(*buffer_p--) * (*filter_p++ >> 8); + prod += (int64_t)(*buffer_p++) * (*filter_p++ >> 8); /* Shift left after accumulation, because interim * results might saturate during filtering prod = prod diff --git a/src/audio/asrc/asrc_farrow_hifi3.c b/src/audio/asrc/asrc_farrow_hifi3.c index d4d2b192aeeb..d6175ac03b4c 100644 --- a/src/audio/asrc/asrc_farrow_hifi3.c +++ b/src/audio/asrc/asrc_farrow_hifi3.c @@ -56,7 +56,7 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { /* Read four buffered samples at once */ - AE_LA16X4_RIP(buffer0123, align_buffer, buffer_p); + AE_LA16X4_IP(buffer0123, align_buffer, buffer_p); /* Store four bins of the impulse response */ AE_LA32X2_IP(filter01, align_filter, filter_p); @@ -141,7 +141,7 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { /* Read two buffered samples at once */ - AE_LA32X2_RIP(buffer01, align_buffer, buffer_p); + AE_LA32X2_IP(buffer01, align_buffer, buffer_p); /* Store two bins of the impulse response */ AE_LA32X2_IP(filter01, align_filter, filter_p); diff --git a/src/audio/asrc/asrc_farrow_hifi5.c b/src/audio/asrc/asrc_farrow_hifi5.c index ac656f255c01..e9f3fa9b74b5 100644 --- a/src/audio/asrc/asrc_farrow_hifi5.c +++ b/src/audio/asrc/asrc_farrow_hifi5.c @@ -56,7 +56,7 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { /* Read four buffered samples at once */ - AE_LA16X4_RIP(buffer0123, align_buffer, buffer_p); + AE_LA16X4_IP(buffer0123, align_buffer, buffer_p); /* Store four bins of the impulse response */ AE_LA32X2_IP(filter01, align_filter, filter_p); @@ -141,7 +141,7 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { /* Read two buffered samples at once */ - AE_LA32X2_RIP(buffer01, align_buffer, buffer_p); + AE_LA32X2_IP(buffer01, align_buffer, buffer_p); /* Store two bins of the impulse response */ AE_LA32X2_IP(filter01, align_filter, filter_p); From d2942f3b8477208ef9cc4a028f85d54e51c0db89 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Fri, 7 Mar 2025 19:10:47 +0200 Subject: [PATCH 5/6] Audio: ASRC: Optimize for HiFi5 function asrc_fir_filter32() This change improves efficiency of FIR filter compute. The FIR calculation is unrolled by four. The coefficients and delay line reads are changed to 128 bits 4x int32_t reads. The MAC instruction is changed from dual-MAC to quad-MAC. The FIR accuracy improves a bit due to internal Q17.47 format instead of Q1.31. The saving is 1.7 MCPS, from 27.2 to 25.5 MCPS with 32 bit 44.1 to 48.8 kHz stereo push mode ASRC. Signed-off-by: Seppo Ingalsuo --- src/audio/asrc/asrc_farrow_hifi5.c | 65 +++++++++++++----------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/src/audio/asrc/asrc_farrow_hifi5.c b/src/audio/asrc/asrc_farrow_hifi5.c index e9f3fa9b74b5..90a0be36a480 100644 --- a/src/audio/asrc/asrc_farrow_hifi5.c +++ b/src/audio/asrc/asrc_farrow_hifi5.c @@ -100,11 +100,16 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, int index_output_frame) { - ae_f32x2 prod; - ae_f32x2 buffer01 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 filter01 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 *filter_p; - ae_f32x2 *buffer_p; + ae_valignx2 align_filter; + ae_valignx2 align_buffer; + ae_f64 prod0; + ae_f64 prod1; + ae_f32x2 buffer23; + ae_f32x2 buffer01; + ae_f32x2 filter01; + ae_f32x2 filter23; + const ae_int32x4 *filter_p; + const ae_int32x4 *buffer_p; int n_limit; int ch; int n; @@ -115,7 +120,7 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, * 'n_limit' is therefore stored to reduce redundant * calculations. Also handle possible interleaved output. */ - n_limit = src_obj->filter_length >> 1; + n_limit = src_obj->filter_length >> 2; if (src_obj->output_format == ASRC_IOF_INTERLEAVED) i = src_obj->num_channels * index_output_frame; else @@ -124,55 +129,41 @@ void asrc_fir_filter32(struct asrc_farrow *src_obj, int32_t **output_buffers, /* Iterate over each channel */ for (ch = 0; ch < src_obj->num_channels; ch++) { /* Pointer to the beginning of the impulse response */ - filter_p = (ae_f32x2 *)&src_obj->impulse_response[0]; + filter_p = (ae_int32x4 *)&src_obj->impulse_response[0]; /* Pointer to the buffered input data */ buffer_p = - (ae_f32x2 *)&src_obj->ring_buffers32[ch] + (ae_int32x4 *)&src_obj->ring_buffers32[ch] [src_obj->buffer_write_position]; /* Allows unaligned load of 64 bit per cycle */ - ae_valign align_filter = AE_LA64_PP(filter_p); - ae_valign align_buffer = AE_LA64_PP(buffer_p); + align_filter = AE_LA128_PP(filter_p); + align_buffer = AE_LA128_PP(buffer_p); - /* Initialise the accumulator */ - prod = AE_ZERO32(); + /* Initialise the accumulators */ + prod0 = AE_ZERO64(); + prod1 = AE_ZERO64(); /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { - /* Read two buffered samples at once */ - AE_LA32X2_IP(buffer01, align_buffer, buffer_p); + /* Read four buffered samples */ + AE_LA32X2X2_IP(buffer01, buffer23, align_buffer, buffer_p); - /* Store two bins of the impulse response */ - AE_LA32X2_IP(filter01, align_filter, filter_p); + /* Load four coefficients of the impulse response */ + AE_LA32X2X2_IP(filter01, filter23, align_filter, filter_p); /* Multiply and accumulate */ - AE_MULAFP32X2RS(prod, buffer01, filter01); + AE_MULAAF2D32RA_HH_LL(prod0, prod1, buffer01, buffer23, filter01, filter23); } - /* Shift left after accumulation, because interim - * results might saturate during filtering prod = prod - * << 1; will shift after last addition - */ - - /* swap LL and HH reusing filter01 to perform - * saturated addition of both halves - */ - filter01 = AE_SEL32_LH(prod, prod); - - /* Add up the lower and upper 32 bit data of the - * 'prod' prod = AE_ADD32_HL_LH(prod, prod); fix using - * saturated addition - */ - prod = AE_ADD32S(prod, filter01); + /* Add up the two accumulators */ + prod0 = AE_ADD64S(prod0, prod1); /* Shift with saturation */ - prod = AE_SLAI32S(prod, 1); + buffer01 = AE_SLAI32S(AE_ROUND32F48SASYM(prod0), 1); - /* Store 'prod' in (de-)interleaved format in the output - * buffers - */ - AE_S32_L_X(prod, (ae_f32 *)&output_buffers[ch][i], 0); + /* Store 'buffer01' in (de-)interleaved format in the output buffers */ + AE_S32_L_X(buffer01, (ae_f32 *)&output_buffers[ch][i], 0); } } From 407710bdfbe8ac836a74b0353d6e6325306cf5b4 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Mon, 10 Mar 2025 12:54:59 +0200 Subject: [PATCH 6/6] Audio: ASRC: Optimize for HiFi5 function asrc_fir_filter16() This change improves efficiency of FIR filter compute. The filter coefficients load is changed to 128 bits wide for four 32 bit coefficients. The dual-MAC is changed to quad-MAC with single accumulator. The saving is 1.3 MCPS, from 25.4 to 24.1 MCPS with 16 bit 44.1 to 48.8 kHz stereo push mode ASRC. Signed-off-by: Seppo Ingalsuo --- src/audio/asrc/asrc_farrow_hifi5.c | 55 ++++++++++-------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/src/audio/asrc/asrc_farrow_hifi5.c b/src/audio/asrc/asrc_farrow_hifi5.c index 90a0be36a480..29961e8d5d4c 100644 --- a/src/audio/asrc/asrc_farrow_hifi5.c +++ b/src/audio/asrc/asrc_farrow_hifi5.c @@ -14,11 +14,13 @@ LOG_MODULE_DECLARE(asrc, CONFIG_SOF_LOG_LEVEL); void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, int index_output_frame) { - ae_f32x2 prod; - ae_f32x2 filter01 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f32x2 filter23 = AE_ZERO32(); /* Note: Init is not needed */ - ae_f16x4 buffer0123 = AE_ZERO16(); /* Note: Init is not needed */ - ae_f32x2 *filter_p; + ae_valignx2 align_filter; + ae_valign align_buffer; + ae_int64 prod; + ae_f32x2 filter01; + ae_f32x2 filter23; + ae_f16x4 buffer0123; + ae_int32x4 *filter_p; ae_f16x4 *buffer_p; int n_limit; int ch; @@ -39,7 +41,7 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, /* Iterate over each channel */ for (ch = 0; ch < src_obj->num_channels; ch++) { /* Pointer to the beginning of the impulse response */ - filter_p = (ae_f32x2 *)&src_obj->impulse_response[0]; + filter_p = (ae_int32x4 *)&src_obj->impulse_response[0]; /* Pointer to the buffered input data */ buffer_p = @@ -47,11 +49,11 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, [src_obj->buffer_write_position]; /* Allows unaligned load of 64 bit per cycle */ - ae_valign align_filter = AE_LA64_PP(filter_p); - ae_valign align_buffer = AE_LA64_PP(buffer_p); + align_filter = AE_LA128_PP(filter_p); + align_buffer = AE_LA64_PP(buffer_p); /* Initialise the accumulator */ - prod = AE_ZERO32(); + prod = AE_ZERO64(); /* Iterate over the filter bins */ for (n = 0; n < n_limit; n++) { @@ -59,40 +61,19 @@ void asrc_fir_filter16(struct asrc_farrow *src_obj, int16_t **output_buffers, AE_LA16X4_IP(buffer0123, align_buffer, buffer_p); /* Store four bins of the impulse response */ - AE_LA32X2_IP(filter01, align_filter, filter_p); - AE_LA32X2_IP(filter23, align_filter, filter_p); - - /* Multiply and accumulate - * the lower half bits in 'buffer0123' are used - */ - AE_MULAFP32X16X2RS_L(prod, filter23, buffer0123); - /* the upper half bits in 'buffer0123' are used */ - AE_MULAFP32X16X2RS_H(prod, filter01, buffer0123); - } - - /* Shift left after accumulation, because interim - * results might saturate during filtering prod = prod - * << 1; will shift after last addition - */ - - /* swap LL and HH reusing filter01 to perform - * saturated addition of both halves - */ - filter01 = AE_SEL32_LH(prod, prod); + AE_LA32X2X2_IP(filter01, filter23, align_filter, filter_p); - /* Add up the lower and upper 32 bit data of the - * 'prod' prod = AE_ADD32_HL_LH(prod, prod); fix using - * saturated addition - */ - prod = AE_ADD32S(prod, filter01); + /* Multiply and accumulate */ + AE_MULAAAAFQ32X16(prod, filter01, filter23, buffer0123); + } - /* Shift with saturation */ - prod = AE_SLAI32S(prod, 1); + /* Shift with saturation, use filter01 as scratch */ + filter01 = AE_SLAI32S(AE_ROUND32F48SASYM(prod), 1); /* Round 'prod' to 16 bit and store it in * (de-)interleaved format in the output buffers */ - AE_S16_0_X(AE_ROUND16X4F32SSYM(prod, prod), + AE_S16_0_X(AE_ROUND16X4F32SSYM(filter01, filter01), (ae_f16 *)&output_buffers[ch][i], 0); } }