KT24-1110_65E-HA-651B/cpu/br25/audio_mic/effect_reg.c

128 lines
3.6 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
#include "effect_reg.h"
#include "app_config.h"
#include "audio_enc.h"
/**********************混响功能选配*********************************/
#if (TCFG_MIC_EFFECT_ENABLE)
#ifdef CONFIG_BOARD_AC696X_MEGAPHONE//扩音器版级默认打开陷波啸叫抑制
#define MIC_EFFECT_CONFIG 0 \
| BIT(MIC_EFFECT_CONFIG_EQ0) \
| BIT(MIC_EFFECT_CONFIG_NOISEGATE) \
| BIT(MIC_EFFECT_CONFIG_HOWLING) \
| BIT(MIC_EFFECT_CONFIG_HOWLING_TRAP) \
/* | BIT(MIC_EFFECT_CONFIG_ENERGY_DETECT) \ */
/* | BIT(MIC_EFFECT_CONFIG_DVOL) \ */
#else
#define MIC_EFFECT_CONFIG 0 \
| BIT(MIC_EFFECT_CONFIG_EQ0) \
| BIT(MIC_EFFECT_CONFIG_NOISEGATE) \
| BIT(MIC_EFFECT_CONFIG_HOWLING) \
/* | BIT(MIC_EFFECT_CONFIG_HOWLING_TRAP) \ */
/* | BIT(MIC_EFFECT_CONFIG_ENERGY_DETECT) \ */
/* | BIT(MIC_EFFECT_CONFIG_DVOL) \ */
#endif
/*********************************************************************/
const struct __mic_effect_parm effect_parm_default = {
.effect_config = MIC_EFFECT_CONFIG,///混响通路支持哪些功能
.effect_run = MIC_EFFECT_CONFIG,///混响打开之时, 默认打开的功能
.sample_rate = MIC_EFFECT_SAMPLERATE,
};
const struct __mic_stream_parm effect_mic_stream_parm_default = {
#if (TCFG_MIC_EFFECT_SEL == MIC_EFFECT_REVERB)
.mic_gain = 0,
#else
.mic_gain = 5,
#endif
.sample_rate = MIC_EFFECT_SAMPLERATE,//采样率
#if (RECORDER_MIX_EN)
.point_unit = 160,//一次处理数据的数据单元, 单位点 4对齐(要配合mic起中断点数修改)
.dac_delay = 20,//dac硬件混响延时 单位ms 要大于 point_unit*2
#else
#if (TCFG_MIC_EFFECT_SEL == MIC_EFFECT_REVERB)
.point_unit = REVERB_LADC_IRQ_POINTS,//一次处理数据的数据单元, 单位点 4对齐(要配合mic起中断点数修改)
.dac_delay = (int)((REVERB_LADC_IRQ_POINTS * 2) / (TCFG_REVERB_SAMPLERATE_DEFUAL / 1000.0)), //6,//8,//8,//10,//dac硬件混响延时 单位ms 要大于 point_unit*2 // (REVERB_LADC_IRQ_POINTS*1.5)/(TCFG_REVERB_SAMPLERATE_DEFUAL/1000.0)
#else
.point_unit = 256,//((MIC_EFFECT_SAMPLERATE / 1000) * 4), //一次处理数据的数据单元, 单位点 4对齐(要配合mic起中断点数修改)
.dac_delay = 12,//dac硬件混响延时 单位ms 要大于 point_unit*2
#endif
#endif
};
const EF_REVERB_FIX_PARM effect_echo_fix_parm_default = {
.sr = MIC_EFFECT_SAMPLERATE, ////采样率
.max_ms = 200, ////所需要的最大延时,影响 need_buf 大小
};
static const u16 r_dvol_table[] = {
0 , //0
93 , //1
111 , //2
132 , //3
158 , //4
189 , //5
226 , //6
270 , //7
323 , //8
386 , //9
462 , //10
552 , //11
660 , //12
789 , //13
943 , //14
1127, //15
1347, //16
1610, //17
1925, //18
2301, //19
2751, //20
3288, //21
3930, //22
4698, //23
5616, //24
6713, //25
8025, //26
9592, //27
11466,//28
15200,//29
16000,//30
16384 //31
};
audio_dig_vol_param effect_dvol_default_parm = {
#if (SOUNDCARD_ENABLE)
.vol_start = 0,//30,
#else
.vol_start = 30,
#endif
.vol_max = ARRAY_SIZE(r_dvol_table) - 1,
.ch_total = 1,
.fade_en = 1,
.fade_points_step = 2,
.fade_gain_step = 2,
.vol_list = (void *)r_dvol_table,
};
const struct __effect_dodge_parm dodge_parm = {
.dodge_in_thread = 1000,//触发闪避的能量阈值
.dodge_in_time_ms = 1,//能量值持续大于dodge_in_thread 就触发闪避
.dodge_out_thread = 1000,//退出闪避的能量阈值
.dodge_out_time_ms = 500,//能量值持续小于dodge_out_thread 就退出闪避
};
#endif//TCFG_MIC_EFFECT_ENABLE