Android Audio 02 - AudioTrack/AudioFlinger/AudioPolicyService 构架
来源:互联网 发布:qt tcp socket编程 编辑:程序博客网 时间:2024/05/01 10:46
Appre-----------> AT=audioTrack
AF=audioFlinger
APS=audioPolicyService
AudioTrack:
Java层的代码:1.getMinBufferSize ---->native_get_min_buff_size
2.new AudioTrack ----->constructor
3.play ------>native_start
4.write ------->native_write_byte
5.stop/release
java层会最终调用native层的代码,所以最后实现还是靠native。
native层:new AudioTrack --> native-setup ---->set()
set里面会做两件事情:1. audioSystem::getOutput
2.audioFlinger->createTrack
AT要创建track,需要和Thread绑定,比如DirectOutput Thread,Mixer Thread,duplicating Thread等。getOutput就是找到这个track需要在哪类Thread上创建。因为这些个track都通过一个thread来混音,然后调用HAL出去播放。
AT的getOutput ----> AudioSystem::getOutput -> APS::getOutput -->APMB::getOutput
APMB::output---->1.getStrategy
2.getDeviceForStrategy
3.find the thread ----->how?Thread 什么时候创建的了????
getoutput是能够找到合适的thread去创建track,但是这个thread是什么时候创建的?又是谁创建的了???
-------------------------
thread的创建
-----------------------
AF和APS都在main_mediaServer.cpp中有初始化instantiate
APS的构造-->APMB constructor -->APS::openOutput -->AF::openOutput --> new Mixer Thread/DirectOutput/add into pool
好了,我们终于创建Thread的了
总结下:AT在native的set()中会通过getOutput找到合适的thread,然后AF会createTrack.
AF::createTrack会用相应的thread去创建track,跟thread绑定,track没法binder,new一个trackhandle
- Android Audio 02 - AudioTrack/AudioFlinger/AudioPolicyService 构架
- AudioTrack到AudioFlinger再到AudioPolicyService
- Android Audio之AudioTrack和AudioFlinger怎么联系起来的?
- AudioFlinger,AudioPolicyService and Audio track分析
- AudioFlinger,AudioPolicyService and Audio track分析
- 【Android Audio】Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一 Audio (1) AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一 AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- 网站页面内容倾斜技巧
- java 日期的小整理
- 美利达的山地车报价
- js中innerHTML,innerText,outerHTML的用法与差别
- Problem G
- Android Audio 02 - AudioTrack/AudioFlinger/AudioPolicyService 构架
- Android 获得imei 和 mac ,平板有时无法获取imei
- Activity的生命周期详解
- MFC中加入Picture
- iOS中关于启动画面Default.png显示时间控制的问题
- picpick截图,取色工具
- 搜索帮助函数F4IF_INT_TABLE_VALUE_REQUEST
- 解决win7英文版下中文显示乱码问题
- yum失败