android 4.4 本地播放 一首mp3的流程
以一首mp3的播放流程来理解audio 架构与代码流程。
播放命令
通过网络adb连接板子 cmd中输入:
am start -a "android.intent.action.VIEW" -t "audio/mp3" -d "file:///data/mytest/zl_cd.mp3"
1.
创建播放器
AmSuperPlayer
AwesomePlayer
new AudioPlayer
2.
音频文件探测
MP3Extractor
3.
OMXCodec
MP3采用软件的方式进行解码
//SoftMP3::onQueueFilled
//notifyEmptyBufferDone(inHeader);
//notifyFillBufferDone(outHeader);
4.
AudioTrack 播放线程
AudioTrack 获取到软件解码后的数据,并写入audioflinger的buff中
//AudioTrack->binder->audioflinger
AudioTrack::set
AudioTrack::createTrack_l
AudioFlinger::createTrack
AudioFlinger::PlaybackThread::threadLoop()
AudioFlinger::PlaybackThread::threadLoop_write() audioflinger Threads.cpp
ssize_t framesWritten = mNormalSink->write(mMixBuffer + offset, c