高通音乐播放的音量调试和FM 音量调试

本文介绍如何通过修改代码来调整音频输出曲线和音量大小,包括针对不同音量等级的曲线调整方法及DSP中CodecRxGain参数的更改方式,以改善播放音质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Modify codes as shown in below:

const AudioPolicyManagerBase::VolumeCurvePoint
AudioPolicyManagerBase::sSpeakerMediaVolumeCurve[AudioPolicyManagerBase::VOLCNT]
= {
-{1, -56.0f}, {20, -34.0f}, {60, -11.0f}, {100, 0.0f}
+{1, -29.7f}, {20, -20.1f}, {60, -11.0f}, {100, 0.0f}
};

 说明:播放音乐时有15个等级,换算成
100等分就是100*index/15,最小到最大对应为6,13,
20, 26, 33,40, 46, 53, 60, 66, 73, 80, 86, 93, 100,
可以根据这个index在图里找到对应的分贝值,所以
如果低7级声音太小,只要把前面两个点的坐标往上
提就可以了.

这里写图片描述

 可以修改DSP里的CodecRxGain来改变FM的音量,但因为Audio Record
Path也用到CodecRxGain,因此修改CodecRxGain的会同时改变录音的音
量;
 代码上修改:
 在文件Msm-pcm-routing-v2.c (kernel\sound\soc\msm\qdsp6v2) 中将以下宏:

define INT_RX_VOL_MAX_STEPS 0x2000
define INT_RX_VOL_GAIN 0x2000

我们这边默认都是0x2000,可适当加大至0x4000;
 在文件AudioHardwareALSA.cpp 函数 AudioHardwareALSA::setParameters() 修
改以下处
…….

fm_volume = lrint((fm_volume * 0x4000) + 0.5); /*这个地方默认是
0x2000,将其修改为以上设置的宏一样大*/
ALOGV("set Fm Volume(%f)\n", fm_volume);
ALOGV("Setting FM volume to %d (available range is 0 to 0x4000)\n",
fm_volume);
mALSADevice->setFmVolume(fm_volume);
param.remove(key);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值