4. 软件浮点EQ(pcm_eq_float)
AD23N支持软件浮点EQ,支持的段数仅受CPU算力和可申请到的RAM资源限制,段数越多,运算量越大。
本章简要介绍软件浮点EQ音效(pcm_eq_float)及在最后小节简要说明新版本EQ使用流程。
4.1. 浮点EQ配置
一个浮点EQ音效由EQ系数表和总增益组成,其中:
1、EQ系数表默认使用10段EQ参数,每一段可以单独配置滤波器(LOW_PASS、HIGH_PASS、BAND_PASS等)、中心频点(20~20kHz)、增益(-18~18dB)以及Q值(0.3~30.0); 2、总增益默认配置范围为-90~20dB,影响每一段EQ系数。所有EQ模式统一由eq_param_tab[]数组管理,不同EQ参数之间可以任意切换。
注:如果用户的EQ参数段数有出现改动,除了修改参数以外,还需要修改头文件pcm_eq_float.h的EQ_SECTION_MAX的宏,宏配置的段数需要和实际EQ参数的段数一致。
4.1.1. EQ参数管理
目前所有EQ参数统一由eq_param_tab[]数组管理,不同EQ参数之间可以任意切换。
![]()
图3 EQ参数由eq_param_tab[]数组管理
4.2. 浮点EQ相关接口
4.2.1. 函数 void *link_pcm_eq_sound(void *p_sound_out, void *p_dac_cbuf, void **pp_effect, u32 sr, u32 channel)
此函数实现EQ模块的初始化。此函数主要实现移频啸叫抑制算法的启动,将抑制器链接到音频链路中:
1、p_sound_out:当前算法前级的音频通道句柄; 2、p_dac_cbuf:输出到DAC的OBUF; 3、pp_effect:存放当前音效算法的控制句柄指针的指针; 4、sr:当前输入音频的采样率; 5、channel:声道数; 6、返回值:启动之后最新的音频通道句柄;
4.2.2. 函数 void eq_release(void **ppeffect)
该函数用于释放音效申请的资源。适用于带有MMU的芯片(如AD23N)
1、ppeffect:存放当前音效算法控制句柄指针的指针,即link时传入的指针;
4.2.3. 函数 void update_pcm_eq_float_param(void *peffect)
此函数实现切换下一个EQ参数,可在EQ运行中调用,其中参数:
1、peffect:存放当前音效算法的控制句柄指针;仅支持切换段数相同的EQ参数,不同段数的EQ参数对ram消耗不一致