9.17. 音频FFT频谱显示
概述
提供音频FFT频谱显示的使用流程
9.17.1. 使用流程
1.打开解码服务后,在调用cmd
AUDIO_DEC_OPEN
时候传递参数(解码服务打开流程详情查看音频解码
章节)
/*中间省略其他参数*/
req.dec.cmd = AUDIO_DEC_OPEN;
req.dec.effect = AUDIO_EFFECT_SPECTRUM_FFT;
err = server_request(__this->dec_server, AUDIO_REQ_DEC, &req);
获取音效处理句柄,调用cmd
AUDIO_DEC_GET_EFFECT_HANDLE
,返回的req.dec.get_hdl
就是音效处理句柄,可用一个全局变量暂时缓存起来供后续使用
req.dec.cmd = AUDIO_DEC_GET_EFFECT_HANDLE;
req.dec.effect = AUDIO_EFFECT_SPECTRUM_FFT;
err = server_request(__this->dec_server, AUDIO_REQ_DEC, &req);
获取频谱个数
audio_spectrum_fft_get_num(req.dec.get_hdl);
获取频谱值
short *db_data = audio_spectrum_fft_get_val(req.dec.get_hdl);//获取存储频谱值的地址
if (db_data) {
for (int i = 0; i < audio_spectrum_fft_get_num(req.dec.get_hdl); i++) {
//输出db_num个 db值
/* printf("db_data db[%d] %d\n", i, db_data[i]); */
}
}
Note
获取音效处理句柄后,如果是异步调用api获取频谱值,要避免在调用AUDIO_DEC_STOP停止解码释放句柄后还继续访问,否则会出现内存越界访问的情况,请用户自行做好互斥处理
需要打开宏
CONFIG_SPECTRUM_FFT_EFFECT_ENABLE
,外部库依赖lib_spectrum_show.a和硬件FFT模块
9.17.2. API参考
Warning
doxygenfile: Cannot find file “spectrum/spectrum_fft.h