📄 eq.c
字号:
/* <LIC_AMD_STD> * Copyright (C) 2003-2005 Advanced Micro Devices, Inc. All Rights Reserved. * * Unless otherwise designated in writing, this software and any related * documentation are the confidential proprietary information of AMD. * THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT ANY * UNLESS OTHERWISE NOTED IN WRITING, EXPRESS OR IMPLIED WARRANTY OF ANY * KIND, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, * NONINFRINGEMENT, TITLE, FITNESS FOR ANY PARTICULAR PURPOSE AND IN NO * EVENT SHALL AMD OR ITS LICENSORS BE LIABLE FOR ANY DAMAGES WHATSOEVER. * * AMD does not assume any responsibility for any errors which may appear * in the Materials nor any responsibility to support or update the * Materials. AMD retains the right to modify the Materials at any time, * without notice, and is not obligated to provide such modified * Materials to you. AMD is not obligated to furnish, support, or make * any further information available to you. * </LIC_AMD_STD> *//* <CTL_AMD_STD> * </CTL_AMD_STD> *//* <DOC_AMD_STD> * Filename: eq.c * </DOC_AMD_STD> */#ifdef POSTPROC_EQ#include <stdio.h>#include <string.h>#include <stdlib.h>#include "mai_types.h"#include "../audio_out.h" #include "eq.h" #define DPRINTF(_args_) /* printf _args_ */#define INFO_PRINTF(_args_) /* printf _args_ */#if defined(WIN32) || defined(UNDER_CE) #if _MSC_VER typedef signed __int64 int64_t; #else typedef signed long long int64_t; #endif#endif#define FRAC_ONE (1 << FRAC_BITS)#define FIX(a) ((int)((a) * FRAC_ONE))#define FRAC_BITS 23 /* fractional bits for sb_samples and dct */#define MULL(a,b) ((int)(((int64_t)(a) * (int64_t)(b)) >> FRAC_BITS))#define FILT_UNITY 0x2000typedef struct tag_FilterContextStruct{ /* assume 32-bit signed integers */ int delay1; int delay2; int a1; int a2; int b0; int b1; int b2;} FILTERCONTEXT;struct eq_parameter_struct{ FILTERCONTEXT filter_handle_left[MAX_NUMBER_OF_EQ_BANDS]; FILTERCONTEXT filter_handle_right[MAX_NUMBER_OF_EQ_BANDS]; int prev_value[MAX_NUMBER_OF_EQ_BANDS]; int number_of_bands;};static struct eq_parameter_struct *eq_state;/* These are tuned for 48, 96 and 192 khz. */static int filter_presets_3_bandEQ[ 3 * 4 * 36] = { // B0 B1=A1 B2 A2 // high 5k, mid 1.5k, low 125 //3-band eq, sampling rate 48000, band 0, level -12: 0x00001f82, 0xffffc151, 0x00001f2e, 0x00001eb1, //3-band eq, sampling rate 48000, band 0, level -10: 0x00001f8a, 0xffffc15a, 0x00001f1e, 0x00001ea8, //3-band eq, sampling rate 48000, band 0, level -8: 0x00001f93, 0xffffc169, 0x00001f05, 0x00001e99, //3-band eq, sampling rate 48000, band 0, level -6: 0x00001f9f, 0xffffc186, 0x00001edd, 0x00001e7c, //3-band eq, sampling rate 48000, band 0, level -4: 0x00001fac, 0xffffc1c6, 0x00001e8f, 0x00001e3c, //3-band eq, sampling rate 48000, band 0, level -2: 0x00001fb8, 0xffffc2b7, 0x00001d93, 0x00001d4b, //3-band eq, sampling rate 48000, band 0, level 2: 0x00002047, 0xffffc22d, 0x00001d8d, 0x00001dd5, //3-band eq, sampling rate 48000, band 0, level 4: 0x00002053, 0xffffc122, 0x00001e8c, 0x00001ee0, //3-band eq, sampling rate 48000, band 0, level 6: 0x00002061, 0xffffc0c7, 0x00001ed9, 0x00001f3b, //3-band eq, sampling rate 48000, band 0, level 8: 0x0000206c, 0xffffc093, 0x00001f02, 0x00001f6f, //3-band eq, sampling rate 48000, band 0, level 10: 0x00002076, 0xffffc071, 0x00001f1a, 0x00001f91, //3-band eq, sampling rate 48000, band 0, level 12: 0x0000207e, 0xffffc058, 0x00001f2b, 0x00001faa, //3-band eq, sampling rate 48000, band 1, level -12: 0x00001e6f, 0xffffc554, 0x00001d62, 0x00001bd2, //3-band eq, sampling rate 48000, band 1, level -10: 0x00001e89, 0xffffc56e, 0x00001d2e, 0x00001bb8, //3-band eq, sampling rate 48000, band 1, level -8: 0x00001ea8, 0xffffc59b, 0x00001ce1, 0x00001b8a, //3-band eq, sampling rate 48000, band 1, level -6: 0x00001ecd, 0xffffc5f0, 0x00001c66, 0x00001b33, //3-band eq, sampling rate 48000, band 1, level -4: 0x00001ef9, 0xffffc6ac, 0x00001b7a, 0x00001a74, //3-band eq, sampling rate 48000, band 1, level -2: 0x00001f26, 0xffffc950, 0x0000189b, 0x000017c3, //3-band eq, sampling rate 48000, band 1, level 2: 0x000020de, 0xffffc7d3, 0x00001868, 0x00001947, //3-band eq, sampling rate 48000, band 1, level 4: 0x0000210e, 0xffffc4c7, 0x00001b54, 0x00001c62, //3-band eq, sampling rate 48000, band 1, level 6: 0x0000213d, 0xffffc3af, 0x00001c42, 0x00001d80, //3-band eq, sampling rate 48000, band 1, level 8: 0x00002166, 0xffffc30d, 0x00001cbf, 0x00001e25, //3-band eq, sampling rate 48000, band 1, level 10: 0x00002188, 0xffffc2a0, 0x00001d0c, 0x00001e94, //3-band eq, sampling rate 48000, band 1, level 12: 0x000021a4, 0xffffc251, 0x00001d40, 0x00001ee5, //3-band eq, sampling rate 48000, band 2, level -12: 0x00001911, 0xffffdbea, 0x0000146b, 0x00000d7c, //3-band eq, sampling rate 48000, band 2, level -10: 0x0000198d, 0xffffdc30, 0x00001397, 0x00000d25, //3-band eq, sampling rate 48000, band 2, level -8: 0x00001a25, 0xffffdca7, 0x00001268, 0x00000c8e, //3-band eq, sampling rate 48000, band 2, level -6: 0x00001ae1, 0xffffdd83, 0x00001097, 0x00000b78, //3-band eq, sampling rate 48000, band 2, level -4: 0x00001bcb, 0xffffdf4e, 0x00000d6b, 0x00000936, //3-band eq, sampling rate 48000, band 2, level -2: 0x00001cf4, 0xffffe4b8, 0x0000056f, 0x00000264, //3-band eq, sampling rate 48000, band 2, level 2: 0x0000235d, 0xffffe1d9, 0x000002a4, 0x00000601, //3-band eq, sampling rate 48000, band 2, level 4: 0x000024d6, 0xffffda5c, 0x00000a9b, 0x00000f72, //3-band eq, sampling rate 48000, band 2, level 6: 0x00002617, 0xffffd6f2, 0x00000da8, 0x000013c0, //3-band eq, sampling rate 48000, band 2, level 8: 0x00002728, 0xffffd4be, 0x00000f5d, 0x00001686, //3-band eq, sampling rate 48000, band 2, level 10: 0x00002812, 0xffffd327, 0x00001076, 0x00001888, //3-band eq, sampling rate 48000, band 2, level 12: 0x000028d8, 0xffffd1f0, 0x00001137, 0x00001a10, //3-band eq, sampling rate 96000, band 0, level -12: 0x00001fc0, 0xffffc0aa, 0x00001f96, 0x00001f56, //3-band eq, sampling rate 96000, band 0, level -10: 0x00001fc4, 0xffffc0af, 0x00001f8d, 0x00001f52, //3-band eq, sampling rate 96000, band 0, level -8: 0x00001fc9, 0xffffc0b6, 0x00001f81, 0x00001f4a, //3-band eq, sampling rate 96000, band 0, level -6: 0x00001fce, 0xffffc0c5, 0x00001f6c, 0x00001f3c, //3-band eq, sampling rate 96000, band 0, level -4: 0x00001fd5, 0xffffc0e6, 0x00001f45, 0x00001f1b, //3-band eq, sampling rate 96000, band 0, level -2: 0x00001fdb, 0xffffc162, 0x00001ec2, 0x00001e9e, //3-band eq, sampling rate 96000, band 0, level 2: 0x00002024, 0xffffc11b, 0x00001ec1, 0x00001ee5, //3-band eq, sampling rate 96000, band 0, level 4: 0x0000202a, 0xffffc092, 0x00001f44, 0x00001f6e, //3-band eq, sampling rate 96000, band 0, level 6: 0x00002030, 0xffffc064, 0x00001f6c, 0x00001f9d, //3-band eq, sampling rate 96000, band 0, level 8: 0x00002036, 0xffffc04a, 0x00001f80, 0x00001fb7, //3-band eq, sampling rate 96000, band 0, level 10: 0x0000203b, 0xffffc038, 0x00001f8c, 0x00001fc8, //3-band eq, sampling rate 96000, band 0, level 12: 0x0000203f, 0xffffc02c, 0x00001f95, 0x00001fd5, //3-band eq, sampling rate 96000, band 1, level -12: 0x00001f31, 0xffffc273, 0x00001ea7, 0x00001dd9, //3-band eq, sampling rate 96000, band 1, level -10: 0x00001f3e, 0xffffc281, 0x00001e8c, 0x00001dcb, //3-band eq, sampling rate 96000, band 1, level -8: 0x00001f4e, 0xffffc29a, 0x00001e64, 0x00001db2, //3-band eq, sampling rate 96000, band 1, level -6: 0x00001f61, 0xffffc2c8, 0x00001e22, 0x00001d84, //3-band eq, sampling rate 96000, band 1, level -4: 0x00001f77, 0xffffc32f, 0x00001da5, 0x00001d1c, //3-band eq, sampling rate 96000, band 1, level -2: 0x00001f8c, 0xffffc4ad, 0x00001c10, 0x00001b9d, //3-band eq, sampling rate 96000, band 1, level 2: 0x00002074, 0xffffc3d4, 0x00001c02, 0x00001c77, //3-band eq, sampling rate 96000, band 1, level 4: 0x0000208a, 0xffffc227, 0x00001d9b, 0x00001e25, //3-band eq, sampling rate 96000, band 1, level 6: 0x000020a1, 0xffffc193, 0x00001e19, 0x00001ebb, //3-band eq, sampling rate 96000, band 1, level 8: 0x000020b4, 0xffffc13e, 0x00001e5b, 0x00001f10, //3-band eq, sampling rate 96000, band 1, level 10: 0x000020c5, 0xffffc106, 0x00001e83, 0x00001f48, //3-band eq, sampling rate 96000, band 1, level 12: 0x000020d3, 0xffffc0dd, 0x00001e9e, 0x00001f71, //3-band eq, sampling rate 96000, band 2, level -12: 0x00001c57, 0xffffcca5, 0x000019e4, 0x0000163c, //3-band eq, sampling rate 96000, band 2, level -10: 0x00001c96, 0xffffccda, 0x0000196e, 0x00001604, //3-band eq, sampling rate 96000, band 2, level -8: 0x00001ce1, 0xffffcd35, 0x000018c2, 0x000015a4, //3-band eq, sampling rate 96000, band 2, level -6: 0x00001d3d, 0xffffcddf, 0x000017b2, 0x000014f0, //3-band eq, sampling rate 96000, band 2, level -4: 0x00001dad, 0xffffcf4f, 0x000015be, 0x0000136c, //3-band eq, sampling rate 96000, band 2, level -2: 0x00001e2f, 0xffffd41d, 0x00001029, 0x00000e58, //3-band eq, sampling rate 96000, band 2, level 2: 0x000021ec, 0xffffd17a, 0x00000f35, 0x00001122, //3-band eq, sampling rate 96000, band 2, level 4: 0x00002280, 0xffffcb80, 0x000014f1, 0x00001771, //3-band eq, sampling rate 96000, band 2, level 6: 0x00002304, 0xffffc925, 0x000016ea, 0x000019ef, //3-band eq, sampling rate 96000, band 2, level 8: 0x00002373, 0xffffc7ba, 0x000017fa, 0x00001b6e, //3-band eq, sampling rate 96000, band 2, level 10: 0x000023d1, 0xffffc6bf, 0x000018a5, 0x00001c77, //3-band eq, sampling rate 96000, band 2, level 12: 0x00002420, 0xffffc605, 0x0000191a, 0x00001d3a, //3-band eq, sampling rate 192000, band 0, level -12: 0x00001fdf, 0xffffc056, 0x00001fca, 0x00001faa, //3-band eq, sampling rate 192000, band 0, level -10: 0x00001fe1, 0xffffc058, 0x00001fc6, 0x00001fa8, //3-band eq, sampling rate 192000, band 0, level -8: 0x00001fe4, 0xffffc05c, 0x00001fc0, 0x00001fa4, //3-band eq, sampling rate 192000, band 0, level -6: 0x00001fe7, 0xffffc063, 0x00001fb5, 0x00001f9d, //3-band eq, sampling rate 192000, band 0, level -4: 0x00001fea, 0xffffc074, 0x00001fa1, 0x00001f8c, //3-band eq, sampling rate 192000, band 0, level -2: 0x00001fed, 0xffffc0b3, 0x00001f5f, 0x00001f4d, //3-band eq, sampling rate 192000, band 0, level 2: 0x00002012, 0xffffc08f, 0x00001f5f, 0x00001f71, //3-band eq, sampling rate 192000, band 0, level 4: 0x00002015, 0xffffc04a, 0x00001fa1, 0x00001fb6, //3-band eq, sampling rate 192000, band 0, level 6: 0x00002018, 0xffffc032, 0x00001fb5, 0x00001fce, //3-band eq, sampling rate 192000, band 0, level 8: 0x0000201b, 0xffffc025, 0x00001fbf, 0x00001fdb, //3-band eq, sampling rate 192000, band 0, level 10: 0x0000201d, 0xffffc01d, 0x00001fc6, 0x00001fe4, //3-band eq, sampling rate 192000, band 0, level 12: 0x0000201f, 0xffffc016, 0x00001fca, 0x00001fea, //3-band eq, sampling rate 192000, band 1, level -12: 0x00001f97, 0xffffc12c, 0x00001f50, 0x00001ee8, //3-band eq, sampling rate 192000, band 1, level -10: 0x00001f9d, 0xffffc133, 0x00001f43, 0x00001ee0, //3-band eq, sampling rate 192000, band 1, level -8: 0x00001fa5, 0xffffc140, 0x00001f2e, 0x00001ed4, //3-band eq, sampling rate 192000, band 1, level -6: 0x00001faf, 0xffffc158, 0x00001f0c, 0x00001ebc, //3-band eq, sampling rate 192000, band 1, level -4: 0x00001fba, 0xffffc18e, 0x00001ecb, 0x00001e86, //3-band eq, sampling rate 192000, band 1, level -2: 0x00001fc4, 0xffffc258, 0x00001df6, 0x00001dbb, //3-band eq, sampling rate 192000, band 1, level 2: 0x0000203b, 0xffffc1e4, 0x00001df3, 0x00001e2f, //3-band eq, sampling rate 192000, band 1, level 4: 0x00002046, 0xffffc104, 0x00001ec9, 0x00001f0f, //3-band eq, sampling rate 192000, band 1, level 6: 0x00002051, 0xffffc0b8, 0x00001f0a, 0x00001f5b, //3-band eq, sampling rate 192000, band 1, level 8: 0x0000205a, 0xffffc08d, 0x00001f2c, 0x00001f87, //3-band eq, sampling rate 192000, band 1, level 10: 0x00002062, 0xffffc070, 0x00001f40, 0x00001fa3, //3-band eq, sampling rate 192000, band 1, level 12: 0x00002069, 0xffffc05c, 0x00001f4e, 0x00001fb8, //3-band eq, sampling rate 192000, band 2, level -12: 0x00001e11, 0xffffc5f1, 0x00001cc6, 0x00001ad8, //3-band eq, sampling rate 192000, band 2, level -10: 0x00001e31, 0xffffc610, 0x00001c86, 0x00001ab8, //3-band eq, sampling rate 192000, band 2, level -8: 0x00001e58, 0xffffc647, 0x00001c28, 0x00001a81, //3-band eq, sampling rate 192000, band 2, level -6: 0x00001e86, 0xffffc6ae, 0x00001b91, 0x00001a18, //3-band eq, sampling rate 192000, band 2, level -4: 0x00001ebe, 0xffffc792, 0x00001a73, 0x00001932,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -