[RK3288][Android6.0] Audio的音量计算过程小结

本文详细介绍了在Android 6.0系统中,针对RK3288平台的音频处理,特别是音量计算的过程。通过分析`getVolumeCurvePoint`函数,揭示了AudioService如何在创建流状态时设定音量曲线,从而控制设备的音量变化。

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

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92


AudioPolicyManager::checkAndSetVolume -> AudioPolicyManager.cpp
  AudioPolicyManager::computeVolume ->
    mEngine->volIndexToDb ->
      Engine::volIndexToDb -> frameworks/av/services/audiopolicy/enginedefault/Engine.cpp
        Gains::volIndexToDb -> Gains.cpp
  outputDesc->setVolume ->
    SwAudioOutputDescriptor::setVolume ->
      Volume::DbToAmpl

index -> db:
volIndexToDb()会将index转换成db.
float Gains::volIndexToDb(Volume::device_category deviceCategory,
                          const StreamDescriptor& streamDesc,
                          int indexInUi)
{
    //对应的是Gains::sVolumeProfiles列表,假设本例是改变music stream的音量,用的是speaker,
    //那么就是Gains::sSpeakerMediaVolumeCurve,后面会解释它的由来,见说明一
    //Gains::sSpeakerMediaVolumeCurve[Volume::VOLCNT] = {
    //{1, -56.0f}, {20, -34.0f}, {60, -11.0f}, {100, 0.0f}
    //};

    const VolumeCurvePoint *curve = streamDesc.getVolumeCurvePoint(deviceCategory);

    // the volume index in the UI is relative to the min and max volume indices for this stream type
    //nbssteps = 1 + 100 - 1
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值