Files
99_7018_lmx/cpu/br28/audio_config.h

209 lines
7.9 KiB
C
Raw Normal View History

2025-10-29 13:10:02 +08:00
#ifndef _APP_AUDIO_H_
#define _APP_AUDIO_H_
#include "generic/typedef.h"
#include "board_config.h"
#if BT_SUPPORT_MUSIC_VOL_SYNC
#define TCFG_MAX_VOL_PROMPT 0
#else
#define TCFG_MAX_VOL_PROMPT 1
#endif
//*********************************************************************************//
// USB Audio配置 //
//*********************************************************************************//
/*usb mic的数据是否经过CVP,包括里面的回音消除(AEC)、非线性回音压制(NLP)、降噪(ANS)模块*/
#define TCFG_USB_MIC_CVP_ENABLE DISABLE_THIS_MOUDLE
#define TCFG_USB_MIC_CVP_MODE (ANS_EN | NLP_EN)
//*********************************************************************************//
// CVP配置 //
//*********************************************************************************//
//麦克风阵列校准使能
#define TCFG_AUDIO_MIC_ARRAY_TRIM_ENABLE 0
//上行同步使能
#define TCFG_AUDIO_CVP_SYNC 0
/*
*
*
*
*/
#define TCFG_VOL_RESET_WHEN_NO_SUPPORT_VOL_SYNC 0 //不支持音量同步的设备默认最大音量
#define MC_BIAS_ADJUST_DISABLE 0 //省电容mic偏置校准关闭
#define MC_BIAS_ADJUST_ONE 1 //省电容mic偏置只校准一次跟dac trim一样
#define MC_BIAS_ADJUST_POWER_ON 2 //省电容mic偏置每次上电复位都校准(Power_On_Reset)
#define MC_BIAS_ADJUST_ALWAYS 3 //省电容mic偏置每次开机都校准(包括上电复位和其他复位)
/*
*mic偏置电压自动调整()
*1
*2,()
*3
*/
#define TCFG_MC_BIAS_AUTO_ADJUST MC_BIAS_ADJUST_DISABLE
#define TCFG_ESCO_PLC 1 //通话丢包修复
#define TCFG_AEC_ENABLE 1 //通话回音消除使能
#define TCFG_AUDIO_CONFIG_TRACE 0 //音频模块配置跟踪查看
#define TCFG_DIG_PHASE_INVERTER_EN 0 //数字反相器用来矫正DAC的输出相位(AC701N输出正相默认关)
#define MAX_ANA_VOL (3) //系统最大模拟音量 (0-3)
#define MAX_COM_VOL (16) // 具体数值应小于联合音量等级的数组大小 (combined_vol_list)
#define MAX_DIG_VOL (16)
/*
()
DIG_VOL_MAX_VALUE DIG_VOL_STEP
*/
#if TCFG_AUDIO_HEARING_AID_ENABLE
#define DIG_VOL_MAX_VALUE (0.0f) // 数字音量最大值(单位:dB)
#elif (TCFG_AUDIO_DAC_MODE == DAC_MODE_L_DIFF)
#define DIG_VOL_MAX_VALUE (-5.0f) // 数字音量最大值(单位:dB)
#elif (TCFG_AUDIO_DAC_MODE == DAC_MODE_H1_DIFF)
#define DIG_VOL_MAX_VALUE (-8.0f) // 数字音量最大值(单位:dB)
#else
#define DIG_VOL_MAX_VALUE (0.0f) // 数字音量最大值(单位:dB)
#endif
#define DIG_VOL_STEP (3.0f) // 逐级递减差值(单位:dB)
/*
*ANC下-6dB时, SDK默认第一种
*1-6dB以下
*2ANC_MUSIC_DYNAMIC_GAIN_EN
*/
#if (TCFG_AUDIO_ANC_ENABLE)
#define ANC_MODE_DIG_VOL_LIMIT (-6.0f)
#endif/*TCFG_AUDIO_ANC_ENABLE*/
/*
*
* 0:使
* 1:
*/
#define SW_DIG_VOL_TAB_USER_DEFINED 0
#if ((SYS_VOL_TYPE == VOL_TYPE_DIGITAL) || (SYS_VOL_TYPE == VOL_TYPE_DIGITAL_HW))
#define SYS_MAX_VOL MAX_DIG_VOL
#define SYS_DEFAULT_VOL 0//SYS_MAX_VOL
#define SYS_DEFAULT_TONE_VOL 8
#define SYS_DEFAULT_SIN_VOL 6
#elif (SYS_VOL_TYPE == VOL_TYPE_AD)
#define SYS_MAX_VOL MAX_COM_VOL
#define SYS_DEFAULT_VOL SYS_MAX_VOL
#define SYS_DEFAULT_TONE_VOL 14
#define SYS_DEFAULT_SIN_VOL 8
#else
#error "SYS_VOL_TYPE define error"
#endif
/*数字音量最大值定义*/
#define DEFAULT_DIGITAL_VOLUME 16384
#define BT_MUSIC_VOL_LEAVE_MAX 16 /*高级音频音量等级*/
#define BT_MUSIC_VOL_STEP (-3.0f) /*高级音频音量等级衰减步进*/
#define BT_CALL_VOL_LEAVE_MAX 15 /*通话音量等级*/
#define BT_CALL_VOL_STEP (-2.0f) /*通话音量等级衰减步进*/
/*
*audio state define
*/
#define APP_AUDIO_STATE_IDLE 0
#define APP_AUDIO_STATE_MUSIC 1
#define APP_AUDIO_STATE_CALL 2
#define APP_AUDIO_STATE_WTONE 3
#define APP_AUDIO_STATE_LINEIN 4
#define APP_AUDIO_CURRENT_STATE 5
#define APP_AUDIO_MAX_STATE (APP_AUDIO_CURRENT_STATE + 1)
#define AUDIO_OUTPUT_INCLUDE_BT ((defined(AUDIO_OUTPUT_WAY)) && (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_BT)) \
|| ((defined(AUDIO_OUT_WAY_TYPE)) && (AUDIO_OUT_WAY_TYPE & AUDIO_WAY_TYPE_BT))
#define AUDIO_OUTPUT_INCLUDE_FM ((defined(AUDIO_OUTPUT_WAY)) && (AUDIO_OUTPUT_WAY == AUDIO_OUTPUT_WAY_FM)) \
|| ((defined(AUDIO_OUT_WAY_TYPE)) && (AUDIO_OUT_WAY_TYPE & AUDIO_WAY_TYPE_FM))
#if TCFG_MIC_EFFECT_ENABLE
#define TCFG_AUDIO_DAC_MIX_ENABLE (1)
#define TCFG_AUDIO_DAC_MIX_SAMPLE_RATE (TCFG_REVERB_SAMPLERATE_DEFUAL)
#elif (TCFG_AD2DA_LOW_LATENCY_ENABLE || TCFG_AUDIO_HEARING_AID_ENABLE)
#define TCFG_AUDIO_DAC_MIX_ENABLE (1)
#define TCFG_AUDIO_DAC_MIX_SAMPLE_RATE (TCFG_AD2DA_LOW_LATENCY_SAMPLE_RATE)
#elif TCFG_SIDETONE_ENABLE
#define TCFG_AUDIO_DAC_MIX_ENABLE (1)
#define TCFG_AUDIO_DAC_MIX_SAMPLE_RATE (44100)
#else
#define TCFG_AUDIO_DAC_MIX_ENABLE (0)
#define TCFG_AUDIO_DAC_MIX_SAMPLE_RATE (44100)
#endif
u8 get_max_sys_vol(void);
u8 get_tone_vol(void);
s8 app_audio_get_volume(u8 state);
s8 app_audio_get_volume_r(u8 state);
void app_audio_set_volume(u8 state, s8 volume, u8 fade);
void app_audio_set_volume_each_channel(u8 state, s8 volume_l, s8 volume_r, u8 fade);
void app_audio_volume_up(u8 value);
void app_audio_volume_down(u8 value);
void app_audio_volume_set(u8 value);
void app_audio_state_switch(u8 state, s16 max_volume);
void app_audio_mute(u8 value);
s16 app_audio_get_max_volume(void);
void app_audio_state_switch(u8 state, s16 max_volume);
void app_audio_state_exit(u8 state);
void app_audio_set_max_volume(u8 state, s16 max_volume);
u8 app_audio_get_state(void);
void volume_up_down_direct(s8 value);
void app_audio_set_mix_volume(u8 front_volume, u8 back_volume);
void app_audio_set_digital_volume(s16 volume);
void app_set_sys_vol(s16 vol_l, s16 vol_r);
void app_set_max_vol(s16 vol);
void audio_volume_list_init(u8 cfg_en);
u32 phone_call_eq_open();
int eq_mode_sw();
int mic_test_start();
int mic_test_stop();
void dac_power_on(void);
void dac_power_off(void);
/*打印audio模块的数字模拟增益DAC/ADC*/
void audio_gain_dump();
void audio_adda_dump(void); //打印所有的dac,adc寄存器
void app_audio_volume_init(void);
void app_audio_output_init(void);
int app_audio_output_mode_set(u8 output);
int app_audio_output_mode_get(void);
int app_audio_output_channel_get(void);
int app_audio_output_channel_set(u8 channel);
int app_audio_output_write(void *buf, int len);
int app_audio_output_samplerate_select(u32 sample_rate, u8 high);
int app_audio_output_samplerate_set(int sample_rate);
int app_audio_output_samplerate_get(void);
int app_audio_output_start(void);
int app_audio_output_stop(void);
int audio_dac_trim_value_check(struct audio_dac_trim *dac_trim);
int esco_enc_reset(void);
u8 bt_phone_dec_is_running();
u8 bt_media_is_running(void);
void a2dp_dec_dut_enable(u8 dut_enable);
#endif/*_APP_AUDIO_H_*/