Android Audio代码分析9 - AudioTrack::write函数
在最初的代码testWriteByte中,创建完AudioTrack对象后,调用了AudioTrack对象的write函数实现播放。
今天就来看看write函数的实现。
*****************************************源码*************************************************
**********************************************************************************************
源码路径:
frameworks\base\media\java\android\media\AudioTrack.java
#################说明################################################
###################################################################
&&&&&&&&&&&总结&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、写播放数据,其实最终写到了一个audio_track_cblk_t结构体中。
2、audio_track_cblk_t结构体在AudioFlinger中的TrackBase类的构造函数中创建。
创建的时候首先从Client申请一块内存,然后将内存地址强制转换成audio_track_cblk_t的指针。
结构体audio_track_cblk_t的最后一个成员便是指向数据的指针。
3、至此,只是将数据写到了AudioFlinger,AudioFling如何使用这些数据,最终实现播放,还需要继续学习。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
今天就来看看write函数的实现。
*****************************************源码*************************************************
**********************************************************************************************
源码路径:
frameworks\base\media\java\android\media\AudioTrack.java
#################说明################################################
###################################################################
&&&&&&&&&&&总结&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、写播放数据,其实最终写到了一个audio_track_cblk_t结构体中。
2、audio_track_cblk_t结构体在AudioFlinger中的TrackBase类的构造函数中创建。
创建的时候首先从Client申请一块内存,然后将内存地址强制转换成audio_track_cblk_t的指针。
结构体audio_track_cblk_t的最后一个成员便是指向数据的指针。
3、至此,只是将数据写到了AudioFlinger,AudioFling如何使用这些数据,最终实现播放,还需要继续学习。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&