1、数据流程图
AudioPolicyService
和AudioFlinger
的创建:
这两个服务都在audioserver
中启动,文件路径:
frameworks/av/media/audioserver/main_audioserver.cpp
从AudioFlinger
和AudioPolicyService
的创建,到output
的打开,以及AudioFlinger
开始往底层写入数据的具体流程如下图:
上面就是整个音频调用到hal层的具体流程,其中需要注意以下几点:
- 当前打开的是
hifi
还是priamry
,也就是adev_open_output_stream
的时候有没有进入hifi
分支,决定了后面调用out_hifi_write
还是调用out_write
- 如果当前选择的
output
是hifi
,则会走audio_hifi
这条通路;如果output
是primary
则会走audio_hw
通路