90 lines
3.2 KiB
C
90 lines
3.2 KiB
C
|
#ifndef SPECTRUM_FFT_API_H
|
|||
|
#define SPECTRUM_FFT_API_H
|
|||
|
|
|||
|
#include "media/spectrum/SpectrumShow_api.h"
|
|||
|
#include "media/audio_stream.h"
|
|||
|
|
|||
|
//该模块 mips 消耗5M
|
|||
|
//RAM 单声道时:4.4Kbyte
|
|||
|
//RAM 双声道时:5.4Kbyte
|
|||
|
typedef struct _spectrum_fft_open_parm {
|
|||
|
u32 sr; //采样率
|
|||
|
u32 channel: 4; //通道数
|
|||
|
u32 mode: 4; //模式,双声道起作用,0 计算的是第一声道的频谱值,
|
|||
|
//1计算的是第二声道频谱值,2为第一声道与第二声道相加除2的频谱值
|
|||
|
|
|||
|
float attackFactor;//下降因子[0,1)
|
|||
|
float releaseFactor;//上升因子[0,1)
|
|||
|
} spectrum_fft_open_parm;
|
|||
|
|
|||
|
|
|||
|
typedef struct _spectrum_fft_hdl {
|
|||
|
void *work_buf;
|
|||
|
u32 run_en: 1;
|
|||
|
|
|||
|
s16 *out_buf;
|
|||
|
u32 out_buf_size;
|
|||
|
u32 offset;
|
|||
|
|
|||
|
spectrum_fft_open_parm parm;
|
|||
|
struct audio_stream_entry entry; // 音频流入口
|
|||
|
} spectrum_fft_hdl;
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief 打开
|
|||
|
@param *_parm: 始化参数,详见结构体spectrum_fft_open_parm
|
|||
|
@return 句柄
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
spectrum_fft_hdl *audio_spectrum_fft_open(spectrum_fft_open_parm *parm);
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief audio_spectrum_fft_close 关闭处理
|
|||
|
@param _hdl:句柄
|
|||
|
@return 0:成功 -1:失败
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
int audio_spectrum_fft_close(spectrum_fft_hdl *hdl);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief audio_spectrum_fft_run 同步处理,每次run都会把输入buf消耗完,才会往下走
|
|||
|
@param _hdl:句柄
|
|||
|
@param data:输入数据
|
|||
|
@param len:输入数据长度
|
|||
|
@return len
|
|||
|
@note 频谱计算处理,只获取输入的数据,不改变输入的数据
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
int audio_spectrum_fft_run(spectrum_fft_hdl *hdl, s16 *data, int len);
|
|||
|
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief audio_spectrum_fft_switch 运行过程做开关处理
|
|||
|
@param hdl:句柄
|
|||
|
@param en:0 关闭频响运算 1 打开频响运算 (通话模式,不支持频谱计算.通话模式已经使用fft, 需关闭频谱计算)
|
|||
|
@return
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
void audio_spectrum_fft_switch(spectrum_fft_hdl *hdl, u8 en);
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief audio_spectrum_fft_get_num 获取频谱个数
|
|||
|
@param _hdl:句柄
|
|||
|
@return 返回频谱的个数
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
int audio_spectrum_fft_get_num(spectrum_fft_hdl *hdl);
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief audio_spectrum_fft_get_val 获取频谱值
|
|||
|
@param _hdl:句柄
|
|||
|
@return 返回存储频谱值的地址
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
short *audio_spectrum_fft_get_val(spectrum_fft_hdl *hdl);
|
|||
|
#endif
|