89 lines
2.9 KiB
C
89 lines
2.9 KiB
C
|
#ifndef __MIC_STREAM_H__
|
|||
|
#define __MIC_STREAM_H__
|
|||
|
|
|||
|
#include "system/includes.h"
|
|||
|
#include "media/includes.h"
|
|||
|
enum {
|
|||
|
MIC_EFFECT_CONFIG_NOISEGATE = 0x0, //噪声压制,主要压制无人声时底噪
|
|||
|
MIC_EFFECT_CONFIG_DODGE, //闪避
|
|||
|
MIC_EFFECT_CONFIG_DVOL, //数字音量
|
|||
|
MIC_EFFECT_CONFIG_HOWLING, //移频啸叫抑制
|
|||
|
MIC_EFFECT_CONFIG_HOWLING_TRAP, //陷波啸叫抑制
|
|||
|
MIC_EFFECT_CONFIG_EQ0, //MIC EQ0
|
|||
|
MIC_EFFECT_CONFIG_ENERGY_DETECT,//能量检测
|
|||
|
MIC_EFFECT_CONFIG_SOFT_SRC, //变采样
|
|||
|
MIC_EFFECT_CONFIG_LINEIN, //linein 叠加,仅限声卡使用
|
|||
|
MIC_EFFECT_CONFIG_DIGIT_ENHANCE,//数字放大,提升mic灵敏度
|
|||
|
MIC_EFFECT_CONFIG_DEBUG_SOUND_PRESSURE,//实时声压检测计算
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
struct __mic_stream_io {
|
|||
|
void *priv;
|
|||
|
u32(*func)(void *priv, void *in, void *out, u32 inlen, u32 outlen);
|
|||
|
};
|
|||
|
|
|||
|
struct __mic_stream_parm {
|
|||
|
u16 sample_rate;
|
|||
|
u16 point_unit;
|
|||
|
u16 dac_delay;
|
|||
|
u16 mic_gain;
|
|||
|
};
|
|||
|
|
|||
|
struct __mic_stream {
|
|||
|
struct adc_mic_ch mic_ch;
|
|||
|
struct audio_adc_output_hdl adc_output;
|
|||
|
struct __mic_stream_parm *parm;
|
|||
|
struct __mic_stream_io out;
|
|||
|
OS_SEM sem;
|
|||
|
volatile u8 busy: 1;
|
|||
|
volatile u8 release: 1;
|
|||
|
volatile u8 revert: 6;
|
|||
|
s16 *adc_buf;
|
|||
|
int adc_buf_len;
|
|||
|
};
|
|||
|
|
|||
|
typedef struct __mic_stream mic_stream;
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief 创建mic数据流
|
|||
|
@param 采样率、增益、ADC中断输出点数、dac延时
|
|||
|
@return 数据流句柄
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
mic_stream *mic_stream_creat(struct __mic_stream_parm *parm);
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief 释放mic数据流
|
|||
|
@param 数据流句柄
|
|||
|
@return
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
void mic_stream_destroy(mic_stream **hdl);
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief 启动mic
|
|||
|
@param struct __mic_stream *
|
|||
|
@return true - 成功, false - 失败.
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
bool mic_stream_start(mic_stream *stream);
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief 设置mic数据流回调函数
|
|||
|
@param
|
|||
|
@return
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
void mic_stream_set_output(struct __mic_stream *stream, void *priv, u32(*func)(void *priv, void *in, void *out, u32 inlen, u32 outlen));
|
|||
|
|
|||
|
#endif// __MIC_STREAM_H__
|