Files
99_7018_lmx/include_lib/media/cvp/commproc_tms.h
2025-10-29 13:10:02 +08:00

199 lines
7.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _COMMPROC_DMS_H_
#define _COMMPROC_DMS_H_
#include "generic/typedef.h"
#include "cvp_common.h"
/*agc类型定义*/
#define AGC_EXTERNAL 0
#define AGC_INTERNAL 1
//tms_cfg:
typedef struct {
u8 ver; //Ver:01
u8 mic_again; //MIC增益,default:3(0~14)
u8 fb_mic_again; //FB MIC增益,default:3(0~14)
u8 dac_again; //DAC增益,default:22(0~31)
u8 talk_mic_ch; //主MIC通道选择
u8 talk_ref_mic_ch; //副MIC通道选择
u8 talk_fb_mic_ch; //FB通道选择
u8 enable_module; //使能模块
u8 ul_eq_en; //上行EQ使能,default:enable(disable(0), enable(1))
u8 agc_type;
union {
/*AGC*/
struct {
float ndt_fade_in; //单端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
float ndt_fade_out; //单端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
float dt_fade_in; //双端讲话淡入步进default: 1.3f(0.1 ~ 5 dB)
float dt_fade_out; //双端讲话淡出步进default: 0.7f(0.1 ~ 5 dB)
float ndt_max_gain; //单端讲话放大上限,default: 12.f(0 ~ 24 dB)
float ndt_min_gain; //单端讲话放大下限,default: 0.f(-20 ~ 24 dB)
float ndt_speech_thr; //单端讲话放大阈值,default: -50.f(-70 ~ -40 dB)
float dt_max_gain; //双端讲话放大上限,default: 12.f(0 ~ 24 dB)
float dt_min_gain; //双端讲话放大下限,default: 0.f(-20 ~ 24 dB)
float dt_speech_thr; //双端讲话放大阈值,default: -40.f(-70 ~ -40 dB)
float echo_present_thr; //单端双端讲话阈值,default:-70.f(-70 ~ -40 dB)
} agc_ext;
/*JLSP AGC*/
struct {
int min_mag_db_level;
int max_mag_db_level;
int addition_mag_db_level;
int clip_mag_db_level;
int floor_mag_db_level;
} agc_int;
} agc;
/*aec*/
int aec_process_maxfrequency; //default:8000,range[3000:8000]
int aec_process_minfrequency; //default:0,range[0:1000]
int af_length; //default:128 range[128:256]
/*nlp*/
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
int nlp_process_minfrequency; //default:0,range[0:1000]
float overdrive; //default:1,range[0:30]
/*ans*/
float aggressfactor; //default:1.25,range[1:2]
float minsuppress; //default:0.04,range[0.01:0.1]
float init_noise_lvl; //default:-75dB,range[-100:-30]
/*enc*/
int enc_process_maxfreq; //default:8000,range[3000:8000]
int enc_process_minfreq; //default:0,range[0:1000]
int sir_maxfreq; //default:3000,range[1000:8000]
float mic_distance; //default:0.015,range[0.035:0.015]
float target_signal_degradation;//default:1,range[0:1]
float enc_aggressfactor; //default:1.f,range[0:4]
float enc_minsuppress; //default:0.09f,range[0:0.1]
float Tri_SnrThreshold0; //sir设定阈值
float Tri_SnrThreshold1; //sir设定阈值
float Tri_CompenDb; //mic增益补偿
/*wn*/
float wn_msc_th; //双麦非相关性阈值,default:0.6f(0 ~ 1)
float ms_th; //麦增益能量阈值, default:80.f(0-255)dB
int wn_gain_offset; //风噪能量增益偏移阈值
} _GNU_PACKED_ AEC_TMS_CONFIG;
struct tms_attr {
u8 ul_eq_en: 1;
u8 wideband: 1;
u8 wn_en: 1;
u8 dly_est : 1;
u8 aptfilt_only: 1;
u8 reserved: 3;
u8 dst_delay;/*延时估计目标延时*/
u8 EnableBit;
u8 FB_EnableBit;
u8 packet_dump;
u8 SimplexTail;
u8 output_sel;/*dms output选择*/
u16 hw_delay_offset;/*dac hardware delay offset*/
u16 wn_gain;/*white_noise gain*/
u8 agc_type; /*agc类型*/
/*AGC*/
float AGC_NDT_fade_in_step; //in dB
float AGC_NDT_fade_out_step; //in dB
float AGC_NDT_max_gain; //in dB
float AGC_NDT_min_gain; //in dB
float AGC_NDT_speech_thr; //in dB
float AGC_DT_fade_in_step; //in dB
float AGC_DT_fade_out_step; //in dB
float AGC_DT_max_gain; //in dB
float AGC_DT_min_gain; //in dB
float AGC_DT_speech_thr; //in dB
float AGC_echo_present_thr; //In dB
int AGC_echo_look_ahead; //in ms
int AGC_echo_hold; // in ms
/*jlsp agc*/
int min_mag_db_level;
int max_mag_db_level;
int addition_mag_db_level;
int clip_mag_db_level;
int floor_mag_db_level;
/*AEC*/
int aec_process_maxfrequency; //default:8000,range[3000:8000]
int aec_process_minfrequency; //default:0,range[0:1000]
int af_length; //default:128 range[128:256]
/*NLP*/
int nlp_process_maxfrequency; //default:8000,range[3000:8000]
int nlp_process_minfrequency; //default:0,range[0:1000]
float overdrive; //default:1,range[0:30]
/*ANS*/
float aggressfactor; //default:1.25,range[1:2]
float minsuppress; //default:0.04,range[0.01:0.1]
float init_noise_lvl; //default:-75db,range[-100:-30]
/*DNS Parameters*/
float DNS_highGain; //EQ强度 range[1.0:3.5]
float DNS_rbRate; //混响强度 range[0:0.9];
int enhance_flag; //是否高频增强 range[0,1]
/*ENC*/
int Tri_CutTh; //fb麦统计截止频率
float Tri_SnrThreshold0; //sir设定阈值
float Tri_SnrThreshold1; //sir设定阈值
float *Tri_TransferFunc; //fb -> main传递函数
float Tri_FbCompenDb; //fb补偿增益
int Tri_TfEqSel; //eq,传递函数的选择0选择eq1选择传递函数2选择传递函数和eq
int enc_process_maxfreq; //default:8000,range[3000:8000]
int enc_process_minfreq; //default:0,range[0:1000]
int sir_maxfreq; //default:3000,range[1000:8000]
float mic_distance; //default:0.015,range[0.035:0.015]
float target_signal_degradation;//default:1,range[0:1]
float enc_aggressfactor; //default:4.f,range[0:4]
float enc_minsuppress; //default:0.09f,range[0:0.1]
float Tri_CompenDb; //mic增益补偿, dB
int Tri_Bf_Enhance; //bf是否高频增强
/*wn*/
float wn_msc_th; //双麦非相关性阈值,default:0.6f(0 ~ 1)
float ms_th; //麦增益能量阈值, default:80.f(0-255)dB
int wn_gain_offset; //风噪能量增益偏移阈值
/*common*/
float global_minsuppress; //default:0.0,range[0.0:0.09]
/*data handle*/
int (*cvp_advanced_options)(void *aec,
void *nlp,
void *ns,
void *enc,
void *agc,
void *wn,
void *mfdt);
int (*aec_probe)(short *mic0, short *mic2, short *mic3, short *ref, u16 len);
int (*aec_post)(s16 *dat, u16 len);
int (*aec_update)(u8 EnableBit);
int (*output_handle)(s16 *dat, u16 len);
/*Extended-Parameters*/
u16 ref_sr;
u16 ref_channel; /*参考数据声道数*/
u16 adc_ref_en; /*adc回采参考数据使能*/
};
s32 aec_tms_init(struct tms_attr *attr);
s32 aec_tms_exit();
s32 aec_tms_fill_in_data(void *dat, u16 len);
int aec_tms_fill_in_ref_data(void *dat, u16 len);
int aec_tms_fill_in_ref_1_data(void *dat, u16 len);
s32 aec_tms_fill_ref_data(void *dat, u16 len);
void aec_tms_toggle(u8 toggle);
int aec_tms_cfg_update(AEC_TMS_CONFIG *cfg);
int aec_tms_reboot(u8 enablebit);
int cvp_tms_read_ref_data(void);
/*
* 获取风噪检测信息
* wd_flag: 0 没有风噪1 有风噪
* 风噪强度r: 0~BIT(16)
* wd_lev: 风噪等级0弱风1中风2强风
* */
int jlsp_tms_get_wind_detect_info(int *wd_flag, int *wd_val, int *wd_lev);
/*tri_en: 1 正常3MIC降噪
* 0 变成2MIC降噪不使用 FB MIC数据*/
int jlsp_tms_mode_choose(u8 tri_en);
#endif/*_COMMPROC_DMS_H_*/