一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MediaPlayer中創(chuàng)建AudioTrack的過程

 ScorpioRen360 2012-12-19
使用MediaPlayer播放音視頻時,會創(chuàng)建AudioTrack對象用于播放音頻數(shù)據(jù)。下面就來看看MediaPlayer創(chuàng)建AudioTrack的過程:

1.創(chuàng)建AudioTrack對象
MediaPlayer類中并沒有直接創(chuàng)建AudioTrack,而是把創(chuàng)建AudioTrack對象的操作放在了MediaPlayerService類的內(nèi)部類AudioOutput中
具體代碼是在 MediaPlayerService::AudioOutput::open函數(shù)中,通過新建(new)一個AudioTrack對象,賦給AudioOutput類的成員變量mTrack來實現(xiàn)的。
mTrack是AudioTrack類型的指針變量。

另外,AudioOutput類不但是MediaPlayerService的內(nèi)部類,還是繼承自MediaPlayerBase::AudioSink的派生類。

既然知道了AudioTrack對象是在AudioOutput::open函數(shù)中創(chuàng)建的,那么接下來我們就看看AudioOutput類對象是在哪里創(chuàng)建的,以及AudioOutput::open是在什么時候被調(diào)用的。

2.創(chuàng)建AudioOutput類對象
在MediaPlayerService::Client::setDataSource函數(shù)中,當(dāng)使用AudioFlinger進行軟件混音時會創(chuàng)建AudioOutput類對象mAudioOutput。
然后調(diào)用播放器的setAudioSink函數(shù),把mAudioOutput對象賦值給相應(yīng)播放器的AudioSink對象。
假設(shè)播放的是本地音視頻,在GB、ICS中默認(rèn)的播放器框架是StagefrightPlayer,對應(yīng)的播放器對象是AwesomePlayer。
最后調(diào)用AwesomePlayer::setAudioSink函數(shù),把mAudioOutput賦給AwesomePlayer類的MediaPlayerBase::AudioSink類型的mAudioSink成員變量。
AwesomePlayer類的成員變量mAudioSink又作為創(chuàng)建AudioPlayer類對象的構(gòu)造函數(shù)參數(shù),傳遞給AudioPlayer類成員變量mAudioSink,它也是MediaPlayerBase::AudioSink類型的變量。

這樣就把MediaPlayerService中創(chuàng)建的AudioOutput類對象,最終傳遞給了AudioPlayer的成員mAudioSink,以待播放時使用。

3.調(diào)用AudioOutput::open函數(shù)
由于創(chuàng)建AudioTrack對象是在AudioOutput::open函數(shù)中進行的,所以清楚什么時候調(diào)用AudioOutput::open函數(shù)就很重要。
根據(jù)2中我們已經(jīng)知道了AudioOutput對象已經(jīng)賦給了AudioPlayer的成員mAudioSink,所以只要知道調(diào)用mAudioSink的open函數(shù),也就知道了調(diào)用AudioOutput::open函數(shù)的處理。
查找AudioPlayer類可知,調(diào)用mAudioSink的open函數(shù)是在AudioPlayer::start函數(shù)中進行的。
   在AudioPlayer::start函數(shù)中,當(dāng)mAudioSink對象不為空(NULL)時,就調(diào)用了mAudioSink的open函數(shù)。并且設(shè)置了參數(shù)默認(rèn)文件格式為AudioSystem::PCM_16_BIT,默認(rèn)audio sink緩沖區(qū)個數(shù)為DEFAULT_AUDIOSINK_BUFFERCOUNT,值為4。然后調(diào)用mAudioSink的start函數(shù),即MediaPlayerService::AudioOutput::start函數(shù)進行音頻數(shù)據(jù)輸出。MediaPlayerService::AudioOutput::start函數(shù)中又調(diào)用了AudioTrack的start函數(shù)。
   當(dāng)mAudioSink對象為空(NULL)時,則直接創(chuàng)建AudioTrack對象,然后調(diào)用AudioTrack對象的start函數(shù)。目前為止,還沒有遇到過直接創(chuàng)建AudioTrack對象的處理,因為mAudioSink對象不為空。
AudioPlayer::start函數(shù)是在用戶調(diào)用MediaPlayer的start函數(shù)后一步步被執(zhí)行到的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    成人精品一区二区三区综合| 国产麻豆一线二线三线| 日韩国产亚洲欧美激情| 亚洲国产精品无遮挡羞羞| 日韩精品一区二区一牛| 麻豆蜜桃星空传媒在线观看| 成人欧美精品一区二区三区| 国产欧美日韩不卡在线视频| 欧美尤物在线观看西比尔| 少妇激情在线免费观看| 国产偷拍精品在线视频| 欧美国产日韩变态另类在线看| 黑色丝袜脚足国产一区二区| 日本精品理论在线观看| 欧美午夜色视频国产精品| 国产情侣激情在线对白| 国产熟女高清一区二区| 国产精品午夜一区二区三区| 99热在线精品视频观看| 国内午夜精品视频在线观看| 久久精品国产熟女精品| 日本熟女中文字幕一区| 色偷偷亚洲女人天堂观看| 国产午夜福利在线观看精品| 国产午夜精品美女露脸视频| 国产综合欧美日韩在线精品 | 国产av一区二区三区久久不卡| 日韩毛片视频免费观看| 日本久久中文字幕免费| 亚洲精品一区三区三区| 久久精品国产99国产免费| 精品国产亚洲av久一区二区三区 | 婷婷亚洲综合五月天麻豆| 免费精品国产日韩热久久| 欧美日韩一级黄片免费观看| 高潮日韩福利在线观看| 中文字幕人妻一区二区免费| 人妻一区二区三区在线| 国产一区二区三区免费福利| 国产人妻熟女高跟丝袜| 国产精品香蕉免费手机视频|