Android音频系统(二) AudioServer进程

2023-10-16  本文已影响0人  Amber_9

AudioServer进程是在init进程启动之后通过启动脚本启动的。
涉及文件:

frameworks/av/media/audioserver/main_audioserver.cpp
frameworks/av/services/audioflinger/AudioFlinger.cpp
frameworks/av/services/audiopolicy/service/AudioPolicyService.cpp
frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
frameworks/av/services/audioflinger/AudioHwDevice.cpp
frameworks/av/media/libaudiohal/impl/DeviceHalLocal.cpp
frameworks/av/services/audioflinger/AudioStreamOut.cpp

一. AudioServer启动分析:

1.AudioFlinger服务初始化,并注册进ServiceManager:

sm->addService("media.audio_flinger), new sp<AudioFlinger>);

AudioFlinger负责音量设置、混音播放、录音等功能,它是音频策略的执行者。

2.AudioPolicyService服务初始化,并注册进SM:

sm->addService("media.audio_policy", new sp<AudioFlinger>);

AudioPolicyService是音频策略的制定者,在AudioPolicyService初始化的过程中,除了向SM注册服务之外,还做了以下事情:

3. 启动Binder线程池,等待客户端的访问。

二、AudioServer的启动时序图

详细调用过程如下:

01_AudioServerStart_primary.png 02_AudioServerStart_loadHw.png 03_AudioServerStart_openAudioInput.png
上一篇下一篇

猜你喜欢

热点阅读