90 lines
3.2 KiB
C
Raw Normal View History

2025-02-18 15:40:42 +08:00
#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