#ifndef _MED_AEC3_COMM_H_ #define _MED_AEC3_COMM_H_ /***************************************************************************** 1 其他头文件包含 *****************************************************************************/ #include "codec_typedefine.h" #include "med_fft.h" #include "codec_com_codec.h" #include "med_aec3_main.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /***************************************************************************** 2 宏定义 *****************************************************************************/ /* FFT IFFT回调函数 */ typedef VOS_VOID (*MED_AEC_FFT_CALLBACK)(VOS_INT16 *, VOS_INT16 *); #ifdef AEC_ONLY_SUPPORT_8k #ifdef SPEECH_STREAM_UNIT_128 #define MED_AEC_FFT_LEN_NB (256) #else #define MED_AEC_FFT_LEN_NB (240) #endif #define MED_AEC_MAX_FFT_LEN (MED_AEC_FFT_LEN_NB) /* 宽带FFT长度 */ #else #ifdef SPEECH_STREAM_UNIT_128 #define MED_AEC_FFT_LEN_NB (256) #define MED_AEC_FFT_LEN_WB (512) #else #define MED_AEC_FFT_LEN_NB (240) #define MED_AEC_FFT_LEN_WB (480) #endif #define MED_AEC_MAX_FFT_LEN (MED_AEC_FFT_LEN_WB) /* 宽带FFT长度 */ #endif #define MED_AEC_HF_AF_M (6) /* 临时全局数组,供AEC各模块使用 */ //extern VOS_INT16 g_ashwMedAecTmp1Len640[MED_AEC_MAX_FFT_LEN]; //extern VOS_INT16 g_ashwMedAecTmp2Len640[MED_AEC_MAX_FFT_LEN]; //extern VOS_INT32 g_aswMedAecTmp1Len320[CODEC_FRAME_LENGTH_WB]; //extern VOS_INT32 g_aswMedAecTmp1Len640[MED_AEC_MAX_FFT_LEN]; /* AEC 公共宏定义*/ //#define MED_AEC_GetshwVecTmp640Ptr1() (&g_ashwMedAecTmp1Len640[0]) /* 临时全局数组指针 长度640 INT16 */ //#define MED_AEC_GetshwVecTmp640Ptr2() (&g_ashwMedAecTmp2Len640[0]) /* 临时全局数组指针 长度640 INT16 */ //#define MED_AEC_GetswVecTmp320Ptr1() (&g_aswMedAecTmp1Len320[0]) /* 临时全局数组指针 长度320 INT32 */ //#define MED_AEC_GetswVecTmp640Ptr1() (&g_aswMedAecTmp1Len640[0]) /* 临时全局数组指针 长度640 INT32 */ #define MED_AEC_OFFSET_THD (60) /* 延迟补偿阈值 */ #define MED_AEC_MAX_OFFSET (960) /* 最大补偿长度,单位采样点 Q0*/ #define MED_AEC_MAX_TAIL_LEN (960) /* 最大尾端长度,单位ms,最大支持60ms尾端延迟 Q0*/ /***************************************************************************** 3 枚举定义 *****************************************************************************/ /* AF FFT长度 */ enum MED_AEC_AF_FFT_LEN_ENUM { #ifdef SPEECH_STREAM_UNIT_128 MED_AEC_AF_FFT_LEN_NB = 256, /* 窄带FFT长度 */ MED_AEC_AF_FFT_LEN_WB = 512, /* 宽带FFT长度 */ #else MED_AEC_AF_FFT_LEN_NB = 240, /* 窄带FFT长度 */ MED_AEC_AF_FFT_LEN_WB = 480, /* 宽带FFT长度 */ #endif MED_AEC_AF_FFT_LEN_BUTT }; typedef VOS_INT16 MED_AEC_AF_FFT_LEN_ENUM_INT16; /* 开关量枚举 */ enum CODEC_SWITCH_ENUM { CODEC_SWITCH_OFF = 0, CODEC_SWITCH_ON, CODEC_SWITCH_BUTT }; typedef VOS_UINT16 CODEC_SWITCH_ENUM_UINT16; /***************************************************************************** 4 全局变量声明 *****************************************************************************/ /***************************************************************************** 5 STRUCT定义 *****************************************************************************/ /***************************************************************************** 6 UNION定义 *****************************************************************************/ /***************************************************************************** 7 OTHERS定义 *****************************************************************************/ /***************************************************************************** 8 函数声明 *****************************************************************************/ #ifdef DEBUG_AEC static VOS_VOID fprint_vec_int32(FILE *fd, VOS_INT32 *buf, VOS_INT32 len) { for (VOS_INT32 i = 0; i < len - 1; i++) { fprintf(fd, "%d ", buf[i]); } fprintf(fd, "%d\n", buf[len - 1]); } #endif #ifdef __cplusplus #if __cplusplus } #endif #endif #endif /* end of med_aec_main.h*/