一、基本原理
- 谁来发起(录音和播放)?AudioRecorder,AudioTrack。
- 谁来处理(录音和播放)? AudioFlinger!
- 怎么处理?AudioPolicyService !
- 什么是output?为了便于管理, 把一个设备上具有相同参数的一组播放device组织称为一个output。它描述一些实际支持的设备(有实际硬件)一个output对应一个处理线程thread。
二、初始化准备工作
- 从frameworks/av/media/audioserver/main_audioserver.cpp开始,系统启动后,会初始化AudioFlinger和AudioPolicyService。先初始化AudioFlinger,后面AudioPolicyService初始化的时候,会用到AudioFlinger里面的方法。
- 初始化AudioPolicyService的时候,实际上创建了一个AudioPolicyManager,主要做3件事:
a. 加载配置文件 audio_policy.conf (AudioPolicyManager完成)
b. 加载audio policy硬件抽象库(AudioFlinger完成)
c. openOutput(创建一个MixerThread线程与对应的output相关联,output对应着设备。即:将创建的线程添加到