Android Audio播放音频之数据传递_帅气好男人_Jack的博客-CSDN博客
Audio播放音频 --- 建立播放通道_帅气好男人_Jack的博客-CSDN博客_audio音频播放
AudioFlinger、AudioPolicyService和AudioPolicyManager之间的关系?_帅气好男人_Jack的博客-CSDN博客
创建共享内存时机位于AudioFlinger中,获取输出通道成功后,位于下图红色箭头指向的地方:
PlaybackThread在创建Track的同时会完成匿名共享内存的创建与分配使用,可以说Track管理者共享内存;其内部逻辑相对复杂,我们先列一个流程图,讲解其中的关键点即可:
向HAL层写入音频数据
通过audio open output业务一文可以得知,mOutput变量的类型是AudioStreamOut类型,其往下层持有的引用类型如下图:
音频播放的过程 — 寻找output输出通道
先来一张总的流程图:
选择devices之Engine getOutputDevicesForAttributes(attr)
这部分代码逻辑主要在Engine类里面发生的,内部大致有这么一个执行流程:
AudioFlinger、AudioPolicyService和AudioPolicyManager之间的关系?_帅气好男人_Jack的博客-CSDN博客