暂时定这个参数,等待客户测试
This commit is contained in:
parent
dd546b5ee6
commit
f0a5144043
@ -150,7 +150,7 @@ void sound_track_bass_vol_test_demo(u8 up_down)
|
||||
bass_gain = -6;
|
||||
tone_play_by_path(TONE_NORMAL, 0); // 播放一段正弦波
|
||||
}
|
||||
// printf("=====bass gain %d\n", (int)bass_gain);
|
||||
// //printf("=====bass gain %d\n", (int)bass_gain);
|
||||
low_bass_set_global_gain(bass_gain, bass_gain);
|
||||
}
|
||||
|
||||
@ -365,7 +365,7 @@ u32 audio_output_rate(int input_rate)
|
||||
#if (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)
|
||||
if ((bt_user_priv_var.emitter_or_receiver == BT_EMITTER_EN) && (!bt_phone_dec_is_running()) && (!bt_media_is_running()))
|
||||
{
|
||||
y_printf("+++ \n");
|
||||
y_//printf("+++ \n");
|
||||
return audio_sbc_enc_get_rate();
|
||||
}
|
||||
#elif (AUDIO_OUTPUT_WAY_DONGLE && AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_DONGLE)
|
||||
@ -378,7 +378,7 @@ u32 audio_output_rate(int input_rate)
|
||||
return 48000;
|
||||
}
|
||||
#endif
|
||||
// y_printf("+++ 11 \n");
|
||||
// y_//printf("+++ 11 \n");
|
||||
return app_audio_output_samplerate_select(input_rate, 1);
|
||||
}
|
||||
|
||||
@ -602,7 +602,7 @@ static void mixer_event_handler(struct audio_mixer *mixer, int event)
|
||||
break;
|
||||
case MIXER_EVENT_SR_CHANGE:
|
||||
#if 0
|
||||
y_printf("sr change:%d \n", mixer->sample_rate);
|
||||
y_//printf("sr change:%d \n", mixer->sample_rate);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@ -678,7 +678,7 @@ extern void audio_adda_gain_dump(void); // 打印所有adc,dac的增益
|
||||
/*音频配置实时跟踪,可以用来查看ADC/DAC增益,或者其他寄存器配置*/
|
||||
static void audio_config_trace(void *priv)
|
||||
{
|
||||
printf(">>Audio_Config_Trace:\n");
|
||||
//printf(">>Audio_Config_Trace:\n");
|
||||
audio_adda_gain_dump();
|
||||
// audio_adda_dump();
|
||||
// mem_stats();
|
||||
@ -697,7 +697,7 @@ int audio_dec_init()
|
||||
{
|
||||
int err;
|
||||
|
||||
printf("audio_dec_init\n");
|
||||
//printf("audio_dec_init\n");
|
||||
|
||||
// 创建解码任务
|
||||
err = audio_decoder_task_create(&decode_task, "audio_dec");
|
||||
@ -1053,11 +1053,11 @@ static void pa_mute_timer_callback(void *priv)
|
||||
// 10ms timer
|
||||
if (pa_mute_var.mute_flag)
|
||||
{
|
||||
printf(">>> 1.\n");
|
||||
//printf(">>> 1.\n");
|
||||
pa_mute_var.mute_cnt++;
|
||||
if (pa_mute_var.mute_cnt > 50)
|
||||
{
|
||||
printf(">>> 11\n");
|
||||
//printf(">>> 11\n");
|
||||
pa_mute_var.mute_cnt = 0;
|
||||
pa_mute_var.mute_flag = 0;
|
||||
PA_MUTE();
|
||||
@ -1066,11 +1066,11 @@ static void pa_mute_timer_callback(void *priv)
|
||||
|
||||
if (pa_mute_var.unmute_flag)
|
||||
{
|
||||
printf(">>> 2.\n");
|
||||
//printf(">>> 2.\n");
|
||||
pa_mute_var.unmute_cnt++;
|
||||
if (pa_mute_var.unmute_cnt > 2)
|
||||
{
|
||||
printf(">>> 22\n");
|
||||
//printf(">>> 22\n");
|
||||
pa_mute_var.unmute_cnt = 0;
|
||||
pa_mute_var.unmute_flag = 0;
|
||||
PA_UNMUTE();
|
||||
@ -1092,13 +1092,13 @@ void kt_auto_mute_pa_init(void)
|
||||
|
||||
void audio_mix_out_automute_mute(u8 mute)
|
||||
{
|
||||
//printf(">>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
|
||||
////printf(">>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
|
||||
if (mute)
|
||||
{
|
||||
printf(">>> mute.\n");
|
||||
//printf(">>> mute.\n");
|
||||
if (app_get_curr_task() == APP_LP_TASK)
|
||||
{
|
||||
printf(">>> mute1\n");
|
||||
//printf(">>> mute1\n");
|
||||
PA_MUTE();
|
||||
pa_mute_var.mute_flag = 0;
|
||||
pa_mute_var.unmute_flag = 0;
|
||||
@ -1108,14 +1108,14 @@ void audio_mix_out_automute_mute(u8 mute)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(">>> mute2\n");
|
||||
//printf(">>> mute2\n");
|
||||
//pa_mute_var.mute_cnt = 0;
|
||||
//pa_mute_var.mute_flag = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(">>> unmute.\n");
|
||||
//printf(">>> unmute.\n");
|
||||
pa_mute_var.mute_cnt = 0;
|
||||
pa_mute_var.mute_flag = 0;
|
||||
pa_mute_var.unmute_cnt = 0;
|
||||
@ -1151,19 +1151,32 @@ void audio_mix_out_automute_mute(u8 mute)
|
||||
}
|
||||
|
||||
/* LP: 库内 UNMUTE 会吃落针“丝丝”;轮询对称 mute/unmute */
|
||||
/* bs.txt: 报数尾音衰减至停顿,<400 最长约385ms,mute 需≥600ms 才不吞尾音 */
|
||||
/* cq.txt: 咔咔误开后 <400 可持续>600ms,仍可 re-mute */
|
||||
#define LP_UNMUTE_ENERGY_THRESH 1300
|
||||
#define LP_UNMUTE_SUSTAIN_MS 80
|
||||
/* cq2.txt: 咔咔尖峰 max=2317/min=382 误 unmute+confirmed;需 max/min 双门槛 */
|
||||
/* 确认播放后不再快速 mute,避免蔡琴换气/报数尾音被吞;曲间用深静音判定 */
|
||||
#define LP_UNMUTE_ENERGY_THRESH 1200
|
||||
#define LP_UNMUTE_MIN_ENERGY 500
|
||||
#define LP_UNMUTE_SUSTAIN_MS 60
|
||||
#define LP_CONFIRM_MAX_ENERGY 1200
|
||||
#define LP_CONFIRM_MIN_ENERGY 500
|
||||
#define LP_CONFIRM_SUSTAIN_MS 100
|
||||
#define LP_FALSE_MIN_ENERGY 450
|
||||
#define LP_FALSE_SUSTAIN_MS 220
|
||||
#define LP_MUTE_ENERGY_THRESH 400
|
||||
#define LP_MUTE_SUSTAIN_MS 600
|
||||
#define LP_UNMUTE_HOLDOFF_MS 200
|
||||
#define LP_GAP_MUTE_MIN_ENERGY 200
|
||||
#define LP_GAP_MUTE_MAX_ENERGY 500
|
||||
#define LP_GAP_MUTE_SUSTAIN_MS 1500
|
||||
#define LP_UNMUTE_HOLDOFF_MS 80
|
||||
#define LP_AUTOMUTE_POLL_MS 20
|
||||
|
||||
static u8 lp_pa_open = 0;
|
||||
static u8 lp_confirmed = 0;
|
||||
static u16 lp_automute_tid = 0;
|
||||
static u16 lp_high_ms = 0;
|
||||
static u16 lp_low_ms = 0;
|
||||
static u16 lp_false_ms = 0;
|
||||
static u16 lp_gap_ms = 0;
|
||||
static u16 lp_confirm_ms = 0;
|
||||
static u16 lp_holdoff_ms = 0;
|
||||
static u16 lp_win_min = 0xffff;
|
||||
static u16 lp_win_max = 0;
|
||||
@ -1193,13 +1206,31 @@ static void mix_out_automute_energy_dbg(void *priv)
|
||||
return;
|
||||
}
|
||||
energy = audio_energy_detect_energy_get(mix_out_automute_hdl, BIT(0));
|
||||
printf("e_det energy=%d\n", energy);
|
||||
//printf("e_det energy=%d\n", energy);
|
||||
if (app_get_curr_task() == APP_LP_TASK && lp_automute_tid) {
|
||||
lp_energy_win_update(energy);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void lp_automute_reset_tentative(void)
|
||||
{
|
||||
lp_low_ms = 0;
|
||||
lp_false_ms = 0;
|
||||
lp_gap_ms = 0;
|
||||
lp_confirm_ms = 0;
|
||||
}
|
||||
|
||||
static void lp_automute_force_mute(const char *reason, u16 e_max, u16 e_min)
|
||||
{
|
||||
audio_mix_out_automute_mute(1);
|
||||
lp_pa_open = 0;
|
||||
lp_confirmed = 0;
|
||||
lp_high_ms = 0;
|
||||
lp_automute_reset_tentative();
|
||||
//printf("lp_automute: %s max=%d min=%d\n", reason, e_max, e_min);
|
||||
}
|
||||
|
||||
static void lp_automute_poll(void *priv)
|
||||
{
|
||||
u16 e_max;
|
||||
@ -1217,45 +1248,89 @@ static void lp_automute_poll(void *priv)
|
||||
return;
|
||||
}
|
||||
|
||||
if (e_max >= LP_UNMUTE_ENERGY_THRESH) {
|
||||
if (e_max >= LP_UNMUTE_ENERGY_THRESH && e_min >= LP_UNMUTE_MIN_ENERGY) {
|
||||
lp_high_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_high_ms = 0;
|
||||
}
|
||||
|
||||
if (lp_holdoff_ms) {
|
||||
if (lp_holdoff_ms > LP_AUTOMUTE_POLL_MS) {
|
||||
lp_holdoff_ms -= LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_holdoff_ms = 0;
|
||||
}
|
||||
lp_low_ms = 0;
|
||||
} else if (e_min < LP_MUTE_ENERGY_THRESH) {
|
||||
lp_low_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_low_ms = 0;
|
||||
}
|
||||
|
||||
if (!lp_pa_open && lp_high_ms >= LP_UNMUTE_SUSTAIN_MS) {
|
||||
audio_mix_out_automute_mute(0);
|
||||
lp_pa_open = 1;
|
||||
lp_low_ms = 0;
|
||||
lp_confirmed = 0;
|
||||
lp_holdoff_ms = LP_UNMUTE_HOLDOFF_MS;
|
||||
printf("lp_automute: unmute max=%d min=%d\n", e_max, e_min);
|
||||
} else if (lp_pa_open && lp_low_ms >= LP_MUTE_SUSTAIN_MS) {
|
||||
audio_mix_out_automute_mute(1);
|
||||
lp_pa_open = 0;
|
||||
lp_high_ms = 0;
|
||||
printf("lp_automute: mute max=%d min=%d\n", e_max, e_min);
|
||||
lp_automute_reset_tentative();
|
||||
//printf("lp_automute: unmute max=%d min=%d\n", e_max, e_min);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!lp_pa_open) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!lp_confirmed) {
|
||||
if (e_max >= LP_CONFIRM_MAX_ENERGY && e_min >= LP_CONFIRM_MIN_ENERGY) {
|
||||
lp_confirm_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_confirm_ms = 0;
|
||||
}
|
||||
|
||||
if (lp_confirm_ms >= LP_CONFIRM_SUSTAIN_MS) {
|
||||
lp_confirmed = 1;
|
||||
lp_false_ms = 0;
|
||||
lp_low_ms = 0;
|
||||
//printf("lp_automute: confirmed max=%d min=%d\n", e_max, e_min);
|
||||
return;
|
||||
}
|
||||
|
||||
if (lp_holdoff_ms) {
|
||||
if (lp_holdoff_ms > LP_AUTOMUTE_POLL_MS) {
|
||||
lp_holdoff_ms -= LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_holdoff_ms = 0;
|
||||
}
|
||||
lp_low_ms = 0;
|
||||
lp_false_ms = 0;
|
||||
} else {
|
||||
if (e_min < LP_FALSE_MIN_ENERGY) {
|
||||
lp_false_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_false_ms = 0;
|
||||
}
|
||||
|
||||
if (e_min < LP_MUTE_ENERGY_THRESH) {
|
||||
lp_low_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_low_ms = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (lp_false_ms >= LP_FALSE_SUSTAIN_MS) {
|
||||
lp_automute_force_mute("false-mute", e_max, e_min);
|
||||
} else if (lp_low_ms >= LP_MUTE_SUSTAIN_MS) {
|
||||
lp_automute_force_mute("mute", e_max, e_min);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (e_min < LP_GAP_MUTE_MIN_ENERGY && e_max < LP_GAP_MUTE_MAX_ENERGY) {
|
||||
lp_gap_ms += LP_AUTOMUTE_POLL_MS;
|
||||
} else {
|
||||
lp_gap_ms = 0;
|
||||
}
|
||||
|
||||
if (lp_gap_ms >= LP_GAP_MUTE_SUSTAIN_MS) {
|
||||
lp_automute_force_mute("gap-mute", e_max, e_min);
|
||||
}
|
||||
}
|
||||
|
||||
void mix_out_automute_lp_start(void)
|
||||
{
|
||||
lp_pa_open = 0;
|
||||
lp_confirmed = 0;
|
||||
lp_high_ms = 0;
|
||||
lp_low_ms = 0;
|
||||
lp_holdoff_ms = 0;
|
||||
lp_automute_reset_tentative();
|
||||
lp_win_min = 0xffff;
|
||||
lp_win_max = 0;
|
||||
if (mix_out_automute_hdl) {
|
||||
@ -1265,18 +1340,19 @@ void mix_out_automute_lp_start(void)
|
||||
if (!lp_automute_tid) {
|
||||
lp_automute_tid = sys_timer_add(NULL, lp_automute_poll, LP_AUTOMUTE_POLL_MS);
|
||||
}
|
||||
printf("lp_automute: start\n");
|
||||
//printf("lp_automute: start\n");
|
||||
}
|
||||
|
||||
void mix_out_automute_lp_stop(void)
|
||||
{
|
||||
lp_pa_open = 0;
|
||||
lp_confirmed = 0;
|
||||
lp_high_ms = 0;
|
||||
lp_low_ms = 0;
|
||||
lp_holdoff_ms = 0;
|
||||
lp_automute_reset_tentative();
|
||||
lp_win_min = 0xffff;
|
||||
lp_win_max = 0;
|
||||
printf("lp_automute: stop\n");
|
||||
//printf("lp_automute: stop\n");
|
||||
}
|
||||
|
||||
/* #define AUDIO_E_DET_UNMUTE (0x00) */
|
||||
@ -1285,22 +1361,27 @@ void mix_out_automute_handler(u8 event, u8 ch)
|
||||
{
|
||||
if (app_get_curr_task() == APP_LP_TASK) {
|
||||
if (!event) {
|
||||
printf(">>>> ch:%d UNMUTE blocked (LP poll)\n", ch);
|
||||
//printf(">>>> ch:%d UNMUTE blocked (LP poll)\n", ch);
|
||||
return;
|
||||
}
|
||||
printf(">>>> ch:%d MUTE (LP lib)\n", ch);
|
||||
if (lp_confirmed) {
|
||||
//printf(">>>> ch:%d MUTE blocked (LP confirmed)\n", ch);
|
||||
return;
|
||||
}
|
||||
//printf(">>>> ch:%d MUTE (LP lib)\n", ch);
|
||||
if (ch < app_audio_output_channel_get()) {
|
||||
audio_mix_out_automute_mute(1);
|
||||
lp_pa_open = 0;
|
||||
lp_confirmed = 0;
|
||||
lp_high_ms = 0;
|
||||
lp_low_ms = 0;
|
||||
lp_holdoff_ms = 0;
|
||||
lp_automute_reset_tentative();
|
||||
lp_win_min = 0xffff;
|
||||
lp_win_max = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
printf(">>>> ch:%d %s\n", ch, event ? ("MUTE") : ("UNMUTE"));
|
||||
//printf(">>>> ch:%d %s\n", ch, event ? ("MUTE") : ("UNMUTE"));
|
||||
/* ch 为通道索引(0/1...); channel_get() 返回通道总数,不可直接 == 比较 */
|
||||
if (ch < app_audio_output_channel_get()) {
|
||||
audio_mix_out_automute_mute(event);
|
||||
@ -1326,7 +1407,7 @@ void mix_out_automute_open()
|
||||
{
|
||||
if (mix_out_automute_hdl)
|
||||
{
|
||||
printf("mix_out_automute is already open !\n");
|
||||
//printf("mix_out_automute is already open !\n");
|
||||
return;
|
||||
}
|
||||
audio_energy_detect_param e_det_param = {0};
|
||||
@ -1385,10 +1466,10 @@ void mix_out_automute_open()
|
||||
e_det_param.ch_total = app_audio_output_channel_get();
|
||||
#endif
|
||||
e_det_param.dcc = 1;
|
||||
printf("mix_out_automute e_det: mute_energy=%d unmute_energy=%d mute_time_ms=%u unmute_time_ms=%u count_cycle_ms=%u ch_total=%d\n",
|
||||
e_det_param.mute_energy, e_det_param.unmute_energy,
|
||||
e_det_param.mute_time_ms, e_det_param.unmute_time_ms,
|
||||
e_det_param.count_cycle_ms, e_det_param.ch_total);
|
||||
//printf("mix_out_automute e_det: mute_energy=%d unmute_energy=%d mute_time_ms=%u unmute_time_ms=%u count_cycle_ms=%u ch_total=%d\n",
|
||||
// e_det_param.mute_energy, e_det_param.unmute_energy,
|
||||
// e_det_param.mute_time_ms, e_det_param.unmute_time_ms,
|
||||
// e_det_param.count_cycle_ms, e_det_param.ch_total);
|
||||
mix_out_automute_hdl = audio_energy_detect_open(&e_det_param);
|
||||
mix_out_automute_entry = audio_energy_detect_entry_get(mix_out_automute_hdl);
|
||||
#if MIX_OUT_AUTOMUTE_ENERGY_DBG_EN
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -3974,7 +3974,6 @@ objs/cpu/br23/audio_dec/audio_dec.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_dec_occupy_trace_hdl,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,os_time_dly,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_dec_init,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,printf,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_decoder_task_create,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,app_audio_output_init,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_src_base_filt_init,l
|
||||
@ -3996,6 +3995,7 @@ objs/cpu/br23/audio_dec/audio_dec.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,sys_timer_add,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_mix_out_automute_mute,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,app_get_curr_task,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,printf,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,gpio_set_output_value,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,mix_out_automute_lp_start,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_energy_detect_skip,l
|
||||
@ -4017,7 +4017,6 @@ objs/cpu/br23/audio_dec/audio_dec.c.o
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,audio_stream_clear_from,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,os_mutex_post,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,digital_phase_inverter_s16,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,puts,l
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,mix_out_automute_hdl,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,mix_out_automute_entry,pl
|
||||
-r=objs/cpu/br23/audio_dec/audio_dec.c.o,decode_task,pl
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user