【RK3288 Android10, UNIK 声音过小 问题解决】

【RK3288 Android10, UNIK 声音过小 问题解决】

需求背景

T10 机器在Android6的固件中,将系统声音调整至最大,可以明显感受到声音失真。
产品部门认为 T10 的 UI板在播放语音时的声音主观感受嫌小(和Android6相比),需要增大。

音量调节框架

https://blog.csdn.net/NEY10MAR/article/details/119330046
在这里插入图片描述

https://blog.csdn.net/hejjunlin/article/details/103771247
在这里插入图片描述

整个音频文件的数据链路为:
源文件 -> MediaPlayer(解码) -> AudioSystem(计算音量曲线) -> AudioFlinger(混音) -> hardware/kernel(codec) -> 功放 -> 喇叭

以下是各级音频调节的增益环节, 主要包括framework层的音量曲线调节增益,audioflinger的mixer混音增益,codec的PCM volume增益,以及功放的增益
目前我们可以调整的音量增益的阶段有:

可以调整的增益阶段
framework(音量曲线)
native (混音浮点数增益)
codec (左右声道的PCM VOLUME)
功放 (gain0 gain1增益引脚)

系统层音量

这一层主要是根据音频的流类型来选择对应的音频曲线,根据UI里面设置的音量来计算第一级的增益。
这一级在调试的时候发现,无论最大音量设置为15还是100,均可以到达音量曲线的最大顶点,通过调节UI的音量进度条可以到达最大增益0DB。所以这一层只将音量的最大值从15调整至100

代码路径
frameworks/services/core/java/com/android/server/audio/AudioService.java

本地层混音

这一层主要在audioflinger内,将多个audiotrack进行混音并放大,根据 UNITY_GAIN_FLOAT=1.0f 来进行进一步放大混音。

原本UNITY_GAIN_FLOAT 定义在AudioMixer.h中,生效于FastMixer.cpp和AudioMixer.cpp内部。
混音的流程是:先进行FastMixer混音,然后进行AudioMixer混音。

通过设置属性:ro.sys.mixer_unity_gain来自己设置对应的混音浮点增益。该属性的具体值定义在device/rockchip/rk3288/device.mk内。

代码路径
frameworks/av/media/libaudioprocessing/AudioMixer.cpp
frameworks/av/services/audioflinger/FastMixer.cpp
device/rockchip/rk3288/device.mk

codec

这一层主要是codec芯片的放大
根据datasheet,通过0x1a, 0x1b两个寄存器来设置左右声道的音量增益。
在功放一级确认是0,1的第二级放大的基础上,设置codec的音量增益到最大255

代码路径
kernel/sound/soc/codec/es8323.c

功放

这一层是功放的放大
有gain0, gain1两个引脚来设置功放的放大等级。
由于防止电压过大烧坏硬件,所以这个功放的放大等级限制为第二级(gain0 = 0, gain1 = 1)

代码路径
kernel/arch/arm/boot/dts/rk3288-keenon-unik.dts
gpio7_C3, gpio7_C4

音量调节标准

上层开始播放1kHZ 0DB 的正弦波音频,通过测量最后一级喇叭的输出电压的波形确认是否失真,在保证波形不失真的情况下,让音量达到最大。

各层音量调节增益设置

根据硬件的测试标准。

输入信号为:1khz,0DB正弦波

| 调试前声音小的各级配置 ||
| ------------ |
| framework(音量曲线) | – |
| native (混音浮点数增益) | 1.0f |
| codec (左右声道的PCM VOLUME) | 245 245 |
| 功放 (gain0 gain1增益引脚) | 0 1 |

调整功放增益引脚为 1, 1,出现严重波形削顶,舍弃

调整codec 增益为 255,255,波形正常,但是音量低于产品预期,改动保留

调整混音浮点数增益为 1.5, 波形正常,但音量仍低于产品预期

调整混音浮点数增益为 2, 波形略微有不对成的情况(高分贝部分有些许失真),音量符合产品预期,协调后保留

最终的各级增益参数设置为

| 调试后声音正常的各级配置 ||
| ------------ |
| framework(音量曲线) | – |
| native (混音浮点数增益) | 2.0f |
| codec (左右声道的PCM VOLUME) | 255 255 |
| 功放 (gain0 gain1增益引脚) | 0 1 |

正弦波输出波形

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值