暂时定这个参数,等待客户测试

This commit is contained in:
flym 2026-06-11 01:16:08 +08:00
parent dd546b5ee6
commit f0a5144043
12 changed files with 45104 additions and 41511 deletions

View File

@ -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 最长约385msmute 需≥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.

View File

@ -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

3493
cq2.txt Normal file

File diff suppressed because it is too large Load Diff