软件EQ(PCM_EQ) ========================================= | AW30N 的 eq 为 pcm_eq。 | 该功能可通过 app_modules_h.c 里的 PCM_SW_EQ_EN 宏控制开关。 ^^^^^^^^^^^^^^^^^^^^ 1 配置参数说明 ################################ * eq_filt_32000:PCM_EQ处理32K采样率音频的运算数据 该数据由EQ工具生成,最多可以有10段EQ数据(seg0~seg9),详情请见EQ工具使用说明章节,不同采样率拥有各自的eq_filt表; * g_work_buf:PCM_EQ运算需要的buff 根据EQ使用的频点数(段数)决定buff大小,可通过pcm_eq_buf_len()接口获取大小; .. image:: get_eq_buff_size.png :alt: "图1 pcm_eq buff大小获取" :align: center .. centered:: 图1 pcm_eq buff大小获取 * parm参数: | LGain / RGain : 左右声道的总增益(注意该增) | SHI / SHO : 输入放大位宽与输出的缩小位宽(不建议用户更改) .. image:: pcm_eq_parm_config.png :alt: "图2 pcm_eq 相关配置说明" :align: center .. centered:: 图2 pcm_eq 相关配置说明 ^^^^^^^^^^^^^^^^^^^^ 2 相关函数 ################################ 2.1 函数void \*link_pcm_eq_sound(void \*p_sound_out, void \*p_dac_cbuf, void \**pp_effect, u32 sr, u32 channel) *************************************************************************************************************** 该函数为串联音频链路的标准接口,实现响应算法的启动,并添加到音频链路上,其中参数: :: 1、p_sound_out:当前算法的前级音频通道句柄; 2、p_dac_cbuf:输出的音频buff; 3、pp_effect:存放当前音效算法控制句柄指针的指针; 4、sr:当前输入音频的采样率; 5、channel:声道数,ad14n和ac104n只有单声道,传1即可; 6、返回值:启动之后最新的音频通道句柄; 2.2 函数void \*pcm_eq_api(void \*obuf, u32 sr, u32 channel, void \**ppsound) ***************************************************************************** 该函数用于初始化PCM_EQ的相关参数,由函数link_pcm_eq_sound()调用即可,需要关注的其内部参数的初始化: :: 1、nSection:EQ频点数(段数),不可超过各采样率的eq_filt表中的段数,范围[1, 10]; 2、channal:陷波器带宽,该值越小防啸叫效果越好,但发声啸叫频点误检时音质会更差; ^^^^^^^^^^^^^^^^^^^^ 3 EQ工具使用 ################################ | AW30N可以使用杰理EQ工具进行离线EQ调试,调试完成后可以导出当前的EQ配置,并加载到程序中验证效果。 ^^^^^^^^^^^^^^^^^^^^ 3.1 EQ工具使用介绍 ************************* 1、打开“EQ-3.1.7-beta-20200516.2.exe”工具并选择固件“AC695X”; 2、选择需要的频点数,对于不需要的频点可以点击下方频率行对应跑按钮使其变灰; 3、拉动EQ曲线进行粗调; 4、粗调结束后,可在下方参数框对EQ曲线进行细调,可设置准确的中心频率、增益、Q值以及滤波器类型; .. image:: eq_tool_1.png :alt: "eq_tool_1.png" :align: center 5、EQ调节结束后,点击右边“保存界面参数”按钮对编辑的EQ界面进行保存; 6、保存后,再点击“导出固件配置”按钮,工具根目录会生成新的“hw_eq_table.h”文件; .. image:: eq_tool_2.png :alt: "eq_tool_2.png" :align: center 3.2 SDK配置说明 ************************* 1、SDK工程中导入pcm_eq相关文件; 如:库文件:include_lib/liba/ae_pcm_eq_lib.a 头文件:include_lib/pcm_eq/pcm_eq_api.h 源文件:app/bsp/common/sound_effect_list/pcm_eq_api.c .. image:: sdk_use_eq_1.png :alt: "sdk_use_eq_1.png" :align: center .. image:: sdk_use_eq_2.png :alt: "sdk_use_eq_2.png" :align: center .. image:: sdk_use_eq_3.png :alt: "sdk_use_eq_3.png" :align: center 2、打开pcm_eq_api.c文件,并将EQ工具生成的hw_eq_table.h文件中的eq数据覆盖原本的eq数据; .. image:: sdk_use_eq_4.png :alt: "sdk_use_eq_4.png" :align: center 3、打开pcm_eq_api.c文件,根据EQ工具选择的频点数调整nSection值,并根据buf_size打印调整g_work_buf[]大小; .. image:: sdk_use_eq_5.png :alt: "sdk_use_eq_5.png" :align: center 4、打开decoder_api.c文件,将EQ串入音频解码链路中,运行测试效果; .. note:: 需要注意eq所用的ram是否与其他资源复用了,建议不要同时开启多种音效; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: sdk_use_eq_6.png :alt: "sdk_use_eq_6.png" :align: center