KT24-1110_65E-HA-651B/apps/soundbox/include/aec_user.h
2024-11-10 18:44:17 +08:00

137 lines
4.5 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 _AEC_USER_H_
#define _AEC_USER_H_
#include "generic/typedef.h"
#include "user_cfg.h"
#include "commproc.h"
#define AEC_DEBUG_ONLINE 0
#define AEC_READ_CONFIG 1
/*清晰语音处理模块定义*/
#define AEC_EN BIT(0) //回音消除
#define NLP_EN BIT(1) //回音压制
#define ANS_EN BIT(2) //语音降噪
#define AGC_EN BIT(4) //AGC自动增益控制
/*TDE_EN和TDEYE_EN只有在TCFG_AUDIO_SMS_ENABLE = SMS_TDE有效*/
#define TDE_EN BIT(5) //延时估计模块使能
#define TDEYE_EN BIT(6) //延时估计模块结果使用(前提是模块使能)
/*清晰语音处理模式定义*/
#define AEC_MODE_ADVANCE (AEC_EN | NLP_EN | ANS_EN) //高级模式
#define AEC_MODE_REDUCE (NLP_EN | ANS_EN) //精简模式
#define AEC_MODE_SIMPLEX (ANS_EN) //单工模式
/*
*SMS模式选择
*(1)SMS模式性能更好同时也需要更多的ram和mips
*(2)SMS_NORMAL和SMS_TDE功能一样只是SMS_TDE内置了延时估计和延时补偿
*可以更好的兼容延时不固定的场景
*/
#define SMS_DISABLE 0
#define SMS_NORMAL 1
#define SMS_TDE 2
#define TCFG_AUDIO_SMS_ENABLE SMS_DISABLE
#if (TCFG_AUDIO_SMS_ENABLE == SMS_NORMAL)
#define aec_open sms_init
#define aec_close sms_exit
#define aec_in_data sms_fill_in_data
#define aec_ref_data sms_fill_ref_data
#elif (TCFG_AUDIO_SMS_ENABLE == SMS_TDE)
#define aec_open sms_tde_init
#define aec_close sms_tde_exit
#define aec_in_data sms_tde_fill_in_data
#define aec_ref_data sms_tde_fill_ref_data
#else
#define aec_open aec_init
#define aec_close aec_exit
#define aec_in_data aec_fill_in_data
#define aec_ref_data aec_fill_ref_data
#endif/*TCFG_AUDIO_SMS_ENABLE*/
/*
*********************************************************************
* Audio AEC Init
* Description: 初始化AEC模块
* Arguments : sr 采样率(8000/16000)
* Return : 0 成功 其他 失败
* Note(s) : None.
*********************************************************************
*/
int audio_aec_init(u16 sample_rate);
/*
*********************************************************************
* Audio AEC Open
* Description: 初始化AEC模块
* Arguments : sr 采样率(8000/16000)
* enablebit 使能模块(AEC/NLP/AGC/ANS...)
* out_hdl 自定义回调函数NULL则用默认的回调
* Return : 0 成功 其他 失败
* Note(s) : 该接口是对audio_aec_init的扩展支持自定义使能模块以及
* 数据输出回调函数
*********************************************************************
*/
int audio_aec_open(u16 sample_rate, s16 enablebit, int (*out_hdl)(s16 *data, u16 len));
/*
*********************************************************************
* Audio AEC Close
* Description: 关闭AEC模块
* Arguments : None.
* Return : None.
* Note(s) : None.
*********************************************************************
*/
void audio_aec_close(void);
/*
*********************************************************************
* Audio AEC Input
* Description: AEC源数据输入
* Arguments : buf 输入源数据地址
* len 输入源数据长度
* Return : None.
* Note(s) : 输入一帧数据唤醒一次运行任务处理数据默认帧长256点
*********************************************************************
*/
void audio_aec_inbuf(s16 *buf, u16 len);
/*
*********************************************************************
* Audio AEC Reference
* Description: AEC模块参考数据输入
* Arguments : buf 输入参考数据地址
* len 输入参考数据长度
* Return : None.
* Note(s) : 声卡设备是DAC默认不用外部提供参考数据
*********************************************************************
*/
void audio_aec_refbuf(s16 *buf, u16 len);
/*
*********************************************************************
* Audio AEC Output Query
* Description: 查询aec模块的输出数据缓存大小
* Arguments : None.
* Return : 数据缓存大小
* Note(s) : None.
*********************************************************************
*/
int audio_aec_output_data_size(void);
/*
*********************************************************************
* Audio AEC Output Read
* Description: 读取aec模块的输出数据
* Arguments : buf 读取数据存放地址
* len 读取数据长度
* Return : 数据读取长度
* Note(s) : None.
*********************************************************************
*/
int audio_aec_output_read(s16 *buf, u16 len);
#endif/*_AEC_USER_H_*/