AudioPolicy

相关概念:

1.Audio interfaces

安卓手机上目前支持三类音频播放设备,这个主要是根据声音播放端和CPU的通信关系来划分的

static const char * const audio_interfaces[] = {
    AUDIO_HARDWARE_MODULE_ID_PRIMARY, //手机板载的主设备
    AUDIO_HARDWARE_MODULE_ID_A2DP, //蓝牙音频
    AUDIO_HARDWARE_MODULE_ID_USB, //USB音频
};

2.Audio Devices

是指具体的音频播放设备,比Audio interfaces的粒度要细一些。

3. StreamType

 PCM的生成类型,是播放电影产生的,还是通话产生的。

4.AudioStrategy

在之前的版本中,AudioStream对应AudioStrategy,AudioStrategy选择音频输出设备;

在现在的新版本中,AudioStream仅用来标识音频的音量,使用音频属性AudioAttributes和AudioStream共同决定AudioStrategy。

路径:

framework\av\services\audiopolicy

相关类:

AudioPolicyManager

AudioPolicyManager是AudioPolicyService服务进程下的一个独立功能模块,该模块可以由厂家自行实现(但必须遵循aosp的接口定义),最后提供libaudiopolicymanager.so库,由AudioPolicyService服务load进来调用即可。

audio_policy_configuration.xml  配置文件

原始路径:

frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml

解析路径:

frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp

deserializeAudioPolicyXmlConfig 下进行解析

查看当前系统配置文件路径:

adb shell dumpsys media.audio_policy | grep --color -i -e "Config source"

module names:

“primary”, “A2DP”, “remote_submix”, “USB”

属性:

devicePorts:所有通过本模块可访问的输入和输出设备的设备描述符列表,它包含永久连接的设备和可移动设备。

mixPorts:列出音频HAL公开的所有输出和输入流

routes:输入输出设备或流与设备之间可能的连接列表

        ——sink和sources

        ——SINK是发射,Source是接收

attachedDevices:永久性连接设备

audio_policy_volumes.xml  规定了音频流、输出设备和音量曲线的关系

default_volume_tables.xml 规定了具体音频曲线的值

AudioPolicyService

(1)loadHwModule 方法

(2)loadConfig 方法 

//加载音频配置文件

(3)initialize 方法 

//初始化module,device信息,进行加载module、打开设备等操作,整个操作贯通到HAL、Kernel层

(4)openDevice 方法

Engine

AudioPolicy 启动流程:

AudioPolicy 时序图:

音频配置文件:

audio_policy_configuration.xml 

音量调整:

adjustStreamVolume和setStreamVolume:

adjustStreamVolume传入音量调节的方向,setStreamVolume直接传入音量值。

原理:

调节过程中首先根据音频流类型找到输出设备,再根据音频流类型和输出设备找到音频曲线并计算出音量的db值,最后将音量值设置到对应的混音线程PlayBackThread中,实现音量调节。

需要注意的是当音调至0时称为muteAdjust,Android会对这种情况做一些特别处理。

参考文章:

audiopolicy

音频策略 AudioPolicy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
audiopolicy指的是音频策略,是指在计算机系统中对音频资源进行管理和控制的一种机制。它通过定义一系列规则和策略,决定音频设备的分配、使用、优先级等方面,以确保音频资源的合理利用和音频服务的高效运行。 audiopolicy具体负责的内容包括以下几个方面: 1. 音频设备管理:audiopolicy会监控计算机系统中的各种音频设备,如扬声器、麦克风等,对其进行管理和控制。它会检测设备的状态、连接状况等,并根据系统的需要进行设备的自动切换和配置。 2. 音频资源分配:audiopolicy会根据各个应用程序的需求和优先级,对音频资源进行分配。它可以确定哪个应用程序可以在某个时间段内占用音频设备,从而协调各应用程序之间的音频资源竞争。 3. 音频服务管理:audiopolicy会管理和监控各类音频服务,如播放器、通话、语音助手等。它会确保这些音频服务之间的合理协同和资源共享,避免冲突和互相干扰。 4. 音频优化和调节:audiopolicy可以对音频进行优化和调节,以提供更好的音频体验。它可以根据设备的特性和用户的喜好,对音频进行音量调节、音色调整等,以满足用户的需求。 总之,audiopolicy是计算机系统中的一个重要组成部分,它通过管理和控制音频资源,为用户提供高质量的音频服务,并确保各应用程序之间的音频资源竞争和协同。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值