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);
    1. 获取音效处理句柄,调用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);
    1. 获取频谱个数

audio_spectrum_fft_get_num(req.dec.get_hdl);
    1. 获取频谱值

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