AudioFlinger----AudioPolicyService 简述

Main_mediaServer.cpp

Android代码如下

int main(int argc, char** argv)

{

    sp<ProcessState> proc(ProcessState::self());

    sp<IServiceManager> sm = defaultServiceManager();

    LOGI("ServiceManager: %p", sm.get());

    AudioFlinger::instantiate();

    MediaPlayerService::instantiate();

    CameraService::instantiate();

    AudioPolicyService::instantiate();

    ProcessState::self()->startThreadPool();

    IPCThreadState::self()->joinThreadPool();

}

个服务:

1(核 读者可以仔细分析一下,上述四个服务的建立过程,对于你理解音频系统很有帮助。

:生成mTonePlayThread生成AudioCommandThread:生成mpPolicyManger),并最终生成一个DirectorOutput音:

 AudioRecord <---------------------IAudioRecord----------------------> RecordHandle

 中并没有记录input线程ID放音:

AudioTrack<---------------------------IAudioTrack------------------->TrackHandle

中记录了output(Playback句柄

 

 

Input

" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 10pt" span="" lang="EN-US" font="" face="Tahoma" size="2" 2:audiosystem---="" gt="" audiopolicyservice="" font="" span="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 10pt" span="" style="FONT-SIZE:13px" span="" lang="EN-US" font="" face="Tahoma" span="" style="mso-tab-count: 1" nbsp="" nbsp="" nbsp="" nbsp="" nbsp="" span="" aps-="" gt="" getinput="" span="" style="mso-spacerun: yes" nbsp="" span="" aps="" font="" span="" font="" face="">在这里是一个 IPC 这里的 mpPolicymanager 时创建的 AudioPolicyManager 这里的 mpclientInterface 服务对象也是在上述 main() AudioPolicyService-->AudioFlinger

      AudioPolicyService.getInput(…)调用执行AudioFlinger方法。

6:AudioFlinger

      会创建input线程,并返回其ID相对于input初始化过程简单的多了:

 

1调用

3通过IAudioRecord链接建立起来后,之后对AudioRecord对服务器AudioFlinger放音和录音区别:

1并注册到服务器中,但是放音只会构造一个对象但不会注册。

2句柄会记录在AudioSystemAudioRecord/AudioTrack通信的时候也会创建对应的AudioPolicyServiceClient,<FONT face=""">但不注册。这是两个服务的区别(AudioFlinger/AudioPolicySerivce).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值