瑞芯微RK平台Android音频 EQ/DRC调试全攻略

电子说

1.4w人已加入

描述

音频效果直接决定了智能设备的用户体验,而EQ(均衡器)和DRC(动态范围控制)是音频调试中最核心的两个环节。瑞芯微(Rockchip)为全系列芯片提供了原生的EQ/DRC音频处理模块,支持全局流绑定和动态应用两种模式,配合官方调试工具可快速实现个性化音效调校。

本文基于瑞芯微官方《Android EQ/DRC开发指南V1.1.0》,结合实际开发经验,从编译集成、音效启用、状态验证、参数调试四个维度,手把手教你完成RK平台Android系统的音频EQ/DRC全流程调试,适用于RK3588RK3576等全系列芯片及所有Android内核版本。

整体调试全流程总览

先通过一张总览图快速了解完整调试路径,避免走弯路:

 

音频

一、编译:开启EQ/DRC模块编译开关

在使用EQ/DRC功能前,首先需要在系统编译阶段开启对应的模块,确保硬件抽象层(HAL)的音效库被正确编译进固件。

编译集成流程图

 

音频

1.1 定位项目BoardConfig.mk文件

BoardConfig.mk的位置与你选择的芯片型号和产品配置强相关,可通过以下命令快速确认:

  •  
  •  
# 进入Android源码根目录后执行echo $TARGET_PRODUCT

例如,若输出为rk3588_u,则对应的BoardConfig.mk路径为:

  •  
device/rockchip/rk3588/rk3588_u/BoardConfig.mk

1.2 添加编译开关

在上述BoardConfig.mk文件末尾添加以下配置,开启EQ/DRC模块编译:

  •  
  •  
# 启用Rockchip原生EQ/DRC音频处理模块BOARD_USE_AUDIO_EQDRC := true

添加完成后,重新编译系统固件,编译系统会自动编译hardware/rockchip/audio/eqdrc目录下的源码,生成librkeqdrc.so音效库。

二、启用:两种绑定方式适配不同场景

编译完成后,需要在系统中声明并启用EQ/DRC音效。瑞芯微提供了动态绑定Stream HAL全局绑定两种方式,可根据音效的应用范围灵活选择。

音效启用流程图

 

音频

2.1 第一步:全局声明EQ/DRC音效

无论使用哪种绑定方式,都需要先在系统音效配置文件中声明EQ/DRC音效。修改以下文件:

  •  
frameworks/av/media/libeffects/data/audio_effects.xml

标签内添加音效库声明:

  •  
  •  
  •  
  •  
<libraries>        <library name="rkeqdrc" path="librkeqdrc.so"/>libraries>

标签内添加音效实例声明:

  •  
  •  
  •  
  •  
<effects>        <effect name="eqdrc" library="rkeqdrc" uuid="79fe72b2-4182-44c1-b2ea-0002a5d5c51b"/>effects>

 注意:上述UUID是瑞芯微EQ/DRC音效的固定标识,不可修改,否则系统无法识别该音效。

2.2 第二步:选择音效绑定方式

方式一:Stream HAL全局绑定(推荐)

适用于需要对某一类音频流全局生效的场景,例如所有音乐播放、通话语音都自动应用EQ/DRC效果。

在同一个audio_effects.xml文件中,找到或添加标签,指定需要绑定的音频流类型:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
<postprocess>        <stream type="music">        <apply effect="eqdrc"/>    stream>        <stream type="voice_call">        <apply effect="eqdrc"/>    stream>    postprocess>

目前支持绑定的所有音频流类型如下:

流类型常量

配置文件中的字符串

适用场景

AUDIO_STREAM_VOICE_CALL

voice_call

语音通话

AUDIO_STREAM_MUSIC

music

音乐播放

AUDIO_STREAM_RING

ring

来电铃声

AUDIO_STREAM_ALARM

alarm

闹钟提醒

AUDIO_STREAM_NOTIFICATION

notification

系统通知

AUDIO_STREAM_SYSTEM

system

系统音效

AUDIO_STREAM_TTS

tts

语音合成

AUDIO_STREAM_ASSISTANT

assistant

语音助手

方式二:应用层动态绑定

适用于仅需要在特定应用或特定音频流中生效的场景,例如某个视频播放器单独使用自定义EQ效果。

Android应用代码中,通过RockchipEqualizer类动态绑定到MediaPlayerAudioTrack的音频会话:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
import android.media.MediaPlayer;import android.media.audiofx.RockchipEqualizer;// 创建MediaPlayer实例MediaPlayer mediaPlayer = new MediaPlayer();// 绑定EQ/DRC到当前音频会话,第一个参数为优先级(0为默认)RockchipEqualizer equalizer = new RockchipEqualizer(0, mediaPlayer.getAudioSessionId());// 启用EQ/DRC效果equalizer.setEnabled(true);

提示:如果已经通过Stream HAL方式全局绑定了EQ/DRC,应用层再创建的RockchipEqualizer实例将作为参数调整通道,不会重复创建音效处理实例。

三、验证:确保音效正常注册与绑定

配置完成后,必须通过系统命令验证音效是否正常工作,避免后续调参无效。

音效验证流程图

 

音频

3.1 验证音效注册状态

确认EQ/DRC音效库已成功加载到AudioFlinger服务中:

  •  
adb shell dumpsys media.audio_flinger

在输出结果中查找以下内容,说明音效已成功注册:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
Libraries loaded:path: /vendor/lib/soundfx/librkeqdrc.soEQ DRC / Rockchip Electronics Co. Ltd.UUID79fe72b2-4182-44c1-b2ea-0002a5d5c51bTYPE34805d32-2e6d-4d1e-9296-0002a5d5c51bapiVersion00020000flags00820204

3.2 验证音效绑定状态

先在设备上播放一段音频(确保使用了绑定的流类型),然后再次执行上述dumpsys命令,查找以下内容:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Output thread 0xb40000784395ba60, name AudioOut_D, tid 642, type 0 (MIXER):I/O handle: 13Standby: no[...]1 Effect Chains1 effects for session 49[...]Effect ID 11:Session State Registered Enabled Suspended:00049 003 y y n[...]Descriptor:- UUID: 79fe72b2-4182-44c1-b2ea-0002a5d5c51b- TYPE: 34805d32-2e6d-4d1e-9296-0002a5d5c51b- name: EQ DRC- implementor: Rockchip Electronics Co. Ltd.

如果看到Registered: yEnabled: y,说明EQ/DRC音效已成功绑定并启用。

四、调参:两种方式实现精准音效调校

音效启用后,最关键的步骤是参数调试。瑞芯微提供了自定义App调参PC工具调参两种方式,其中PC工具调参效率更高,适合开发阶段快速迭代。

PC工具调参流程图(推荐)

 

音频

App调参流程图

 

音频

4.1 参数文件基础

4.1.1 默认参数文件

系统默认提供以下参数文件,按采样率和通道数区分:

rkaudio_effect_eqdrc_44100hz_2ch.bin44.1kHz 双声道)

rkaudio_effect_eqdrc_48000hz_2ch.bin48kHz 双声道,最常用)

同时内置了4种预设参数:

1standard(标准模式)

2meeting(会议模式)

3classical(古典模式)

4classroom(教室模式)

4.1.2 参数文件加载优先级

EQ/DRC模块创建时会按以下顺序加载参数文件:

1./data/vendor/audio/App下发的自定义参数,优先级最高)

2./vendor/etc/(出厂默认参数,PC工具push的参数会保存到这里)

3.hardware/rockchip/audio/eqdrc/configs/SDK源码中的默认参数)

4.2 方式一:PC工具调参(推荐)

PC工具调参支持实时修改参数并立即生效,无需重新编译固件,是开发阶段的首选方式。

4.2.1 准备工作

1.确保设备固件为userdebug版本,且已开启adb调试

2.工具位于SDK目录:RKTools/windows/AudioEffect_Tool.rar,解压后运行AudioEffect_tool.exe

3.执行以下adb命令获取设备权限:

  •  
  •  
  •  
adb rootadb remountadb shell setenforce 0  # 临时关闭SELinux,避免push失败

4.2.2 调参步骤

1.配置基础参数:打开工具后,设置SampleRate(采样率)和NumChan(通道数),必须与设备音频硬件配置一致。可通过以下文件查看硬件配置:

  •  
hardware/rockchip/audio/tinyalsa_hal/

找到pcm_config结构体中的ratechannels字段。

2.拉取当前参数(可选):点击pull按钮,将设备当前使用的参数文件保存到PC本地备份。

3.加载参数文件:点击load按钮,选择要调试的参数文件(如默认的48kHz双声道参数)。

4.实时调试:在设备上播放音频,调整工具中的EQDRC参数,调整完成后点击push按钮,参数会立即推送到设备并生效。

 可通过logcat查看参数加载日志:adb logcat | grep eqdrc,看到reload profile from tuner说明参数已重新加载。

5.保存最终参数:效果满意后,点击save按钮,将参数文件保存到SDKhardware/rockchip/audio/eqdrc/configs/目录,重新编译固件即可固化参数。

4.3 方式二:自定义App调参

如果需要在应用中提供用户可调节的音效功能,可通过RockchipEqualizerAPI实现参数调整。

以下是核心代码示例:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
// 获取当前EQ/DRC配置RockchipEqualizer.Settings settings = equalizer.getProperties();// 启用10段EQsettings.setEq10Enabled(1);// 获取所有声道的EQ配置Collection<RockchipEqualizer.Settings.Eq> eqs = settings.getEqs();for (RockchipEqualizer.Settings.Eq eq : eqs) {    // 获取当前声道的所有频段    Collection<RockchipEqualizer.Settings.Eq.EqBand> bands = eq.getBands();    for (RockchipEqualizer.Settings.Eq.EqBand band : bands) {        // 设置频段增益(单位:dB)        band.setBoost(3.0f);        // 设置滤波器类型:0=参数均衡,1=低架,2=高架,3=低通,4=高通        band.setFilter(0);        // 设置中心频率(单位:Hz)        band.setFc(1000);        // 设置品质因数Q(参数均衡时范围0.01-16,高低架时为斜率0.01-2)        band.setQ(1.0f);        // 启用该频段        band.setEnabled(1);    }}// 应用新配置equalizer.setProperties(settings);// 切换预设模式equalizer.usePreset(1); // 使用标准模式

 注意:只有在preset=0(自定义模式)下,才能手动调整上述参数;切换到其他预设后,手动调整的参数会被覆盖。

五、常见问题与注意事项

1.音效不生效:首先检查BoardConfig.mk是否添加了编译开关,然后通过dumpsys命令确认音效是否注册和绑定成功。

2.PC工具push失败:确保设备是userdebug版本,已执行adb rootadb remount,且临时关闭了SELinux

3.参数调整后无变化:确认采样率和通道数设置与硬件一致,且正在播放的音频流类型已绑定EQ/DRC

4.多声道支持:默认参数文件为双声道,如需支持更多声道,可通过PC工具生成对应通道数的参数文件。

总结

瑞芯微RK平台的EQ/DRC模块提供了完整且易用的音频处理解决方案,通过本文的步骤和流程图,你可以快速完成从编译集成到参数调试的全流程。在实际开发中,建议先通过PC工具快速调试出满意的音效参数,再将参数固化到固件中;如果需要用户自定义音效,可基于RockchipEqualizer API开发应用层调参功能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分