在system/core/rootdir/init.rc中有這樣一段:
service media /system/bin/mediaserver
class main
user media
group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc mediadrm
ioprio rt 4
表明android系統在啓動時會加載/system/bin/mediaserver可執行程序,也就是我們的media系統服務。
mediaserver的源碼在/frameworks/av/media/mediaserver/目錄。
在media_mediaserver.cpp中啓動了多個系統中重要的Server:
- AudioFlinger:音頻系統中的核心服務
- AudioPolicyService:音頻系統中關於音頻策略的重要服務
- MediaPlayerService:多媒體系統中的重要服務
- CameraService:有關照相和攝像的重要服務
我們重點研究系統中audio相關的系統服務,其中包括AudioFlinger,AudioPolicyService,MediaPlayerService。接下來我們分章節介紹。