胡曉崠,何加銘,陳 平
(寧波大學(xué)通信技術(shù)研究所,浙江寧波315211)
串聯(lián)式緩沖池技術(shù)研究與應(yīng)用
胡曉崠,何加銘,陳 平
(寧波大學(xué)通信技術(shù)研究所,浙江寧波315211)
為有效解決流媒體點(diǎn)播無線數(shù)據(jù)下載不穩(wěn)定性問題。該文提出一種串聯(lián)式緩沖池結(jié)構(gòu)模型,該模型在網(wǎng)絡(luò)數(shù)據(jù)接收端與解碼器之間,實(shí)現(xiàn)有效數(shù)據(jù)緩沖,屏蔽數(shù)據(jù)傳輸速率不穩(wěn)定。經(jīng)主頻小于200MHz終端平臺(tái)上測(cè)試,實(shí)現(xiàn)媒體音樂點(diǎn)播流暢播放,效果良好。
流媒體;緩沖池;解碼
緩沖池技術(shù)思想是開辟在客戶端的一處內(nèi)存空間,當(dāng)某進(jìn)程需要使用緩沖區(qū)時(shí),提出申請(qǐng),由管理程序分配給它,用完后釋放緩沖區(qū).這樣可用少量的緩沖區(qū)為更多的進(jìn)程服務(wù)。隨著寬帶網(wǎng)絡(luò)發(fā)展,特別是寬帶接入技術(shù)的發(fā)展,網(wǎng)絡(luò)傳輸?shù)钠款i不斷打破,為網(wǎng)絡(luò)傳輸多媒體數(shù)據(jù)提供了很好的支撐環(huán)境。由普通GSM網(wǎng)絡(luò)9Kbps的傳輸速率,到GPRS網(wǎng)絡(luò)115kbps傳輸速度的明顯提升,而近年來升級(jí)到EDGE網(wǎng)絡(luò)的傳輸速率理論峰值達(dá)到384kbps。手持設(shè)備硬件性能的大幅提升與智能平臺(tái)豐富的應(yīng)用。在智能系統(tǒng)實(shí)現(xiàn)基于RTSP協(xié)議的流媒體點(diǎn)播系統(tǒng)已日趨完善,市場(chǎng)也趨于飽和。但是在非智能平臺(tái)的在線點(diǎn)播技術(shù)并不成熟,應(yīng)用程序甚少。本文設(shè)計(jì)實(shí)現(xiàn)一種基于MTK平臺(tái)6225處理芯片的在線AMR[1]格式音樂點(diǎn)播軟件,同時(shí)帶有播放控制與換膚等個(gè)性化功能。
緩沖池技術(shù)模型應(yīng)用廣泛,從大型服務(wù)器到小型移動(dòng)終端,從系統(tǒng)內(nèi)部體系結(jié)構(gòu)到數(shù)據(jù)庫技術(shù),都應(yīng)用到緩沖池技術(shù)思想。
CPU,通道和I/O設(shè)備之間,由于計(jì)算機(jī)外設(shè)的發(fā)展,會(huì)產(chǎn)生通道不足而產(chǎn)生的“瓶頸”現(xiàn)象,使并行程度受限制,因此引入了緩沖技術(shù)以改善CPU和I/O設(shè)備之間速度不匹配的情況和減少I/O設(shè)備對(duì)CPU的中斷次數(shù)及放寬對(duì)CPU的終端響應(yīng)要求。
DB2中的緩沖池是內(nèi)存中的一塊存儲(chǔ)區(qū)域,用于臨時(shí)讀入和更改數(shù)據(jù)庫頁。而從內(nèi)存訪問數(shù)據(jù)要比從磁盤訪問數(shù)據(jù)速度更快,由于連接至數(shù)據(jù)庫的應(yīng)用程序的大多數(shù)數(shù)據(jù)操作都在緩沖池中進(jìn)行,而因此緩沖池的存在可以有效提高數(shù)據(jù)庫系統(tǒng)的性能。
本文緩沖池開辟基于手機(jī)系統(tǒng)平臺(tái),版本為08A,手機(jī)芯片為6225,處理器ARM 7EJ,處理主頻104MHz,16M ROM與4M RAM,其中文件系統(tǒng)占用2M??梢钥闯隹晒┯脩羰褂玫腞AM和ROM極其有限,因此要實(shí)現(xiàn)流暢音頻點(diǎn)播需要克服以上問題。鑒于6225芯片處理能力較弱,因此音頻統(tǒng)一采用AMR-NB編碼格式。傳輸協(xié)議選用HTTP協(xié)議。流媒體點(diǎn)播系統(tǒng)平臺(tái)概述如表1所示。
表1 緩沖池應(yīng)用終端概況
通用的緩沖池設(shè)計(jì)只開辟一個(gè)內(nèi)存空間,根據(jù)終端可用內(nèi)存大小以及處理能力強(qiáng)弱,選擇開辟一定的內(nèi)存。待緩沖池緩沖溢出后,開始向解碼器發(fā)送數(shù)據(jù)。在網(wǎng)絡(luò)情況良好的條件下,同時(shí)保證緩沖池大于所點(diǎn)播內(nèi)容,那么可以保證播放的流暢性。一旦網(wǎng)絡(luò)狀況出現(xiàn)問題,不穩(wěn)定或者速率不夠,則會(huì)使用戶等待時(shí)間過長(zhǎng)。其次點(diǎn)播內(nèi)容大于緩沖池空間時(shí),中間會(huì)出現(xiàn)停頓現(xiàn)象。因此以上情況都會(huì)嚴(yán)重影響用戶的使用體驗(yàn)。
其次由于非智能機(jī)可用內(nèi)存空間極其有限,以本文所用平臺(tái)為例,可用內(nèi)存總計(jì)16M,出去系統(tǒng)本身以及應(yīng)用程序所占內(nèi)存,可供用戶使用的內(nèi)存極其有限。開辟一個(gè)大于媒體內(nèi)容的內(nèi)存空間很不現(xiàn)實(shí)。因此傳統(tǒng)緩沖池設(shè)計(jì)思想不適用于非智能機(jī)的流媒體系統(tǒng)設(shè)計(jì)。
鑒于傳統(tǒng)緩沖池的存在問題,本文提出了全新的本文設(shè)計(jì)了一個(gè)串聯(lián)式緩沖池[2]結(jié)構(gòu)模型。開辟4個(gè)連續(xù)內(nèi)存空間,即相對(duì)于普通單個(gè)緩沖池而言,有4個(gè)緩沖池以串聯(lián)方式排列。考慮到目前點(diǎn)播媒體AMR音樂文件在100k左右,同時(shí)考慮到點(diǎn)播系統(tǒng)擴(kuò)展性,后續(xù)媒體文件多在300k左右,因此在開辟緩沖池內(nèi)存時(shí)每個(gè)緩沖池大小為100k,地址連續(xù)。在接收服務(wù)器媒體數(shù)據(jù)時(shí),從第一個(gè)內(nèi)存地址開始依次接收,待緩沖池接收滿,則由下一個(gè)緩沖池開始接收。依次類推,直至最后的緩沖池。
同時(shí)要實(shí)現(xiàn)在線點(diǎn)播以及保證其播放的流暢性,必須使AMR數(shù)據(jù)包的下載速率與AMR解碼速率保持基本一致,甚至是下載速率可以略大于解碼速率。自適應(yīng)多速率[2](AdaptiveMu lti-Rate,AMR)是一種音頻編碼文件格式。解碼速率從最低的4.75kb到最高12.2kb。解碼速率基本與無線網(wǎng)絡(luò)匹配。
由于無線網(wǎng)絡(luò)的不穩(wěn)定性,會(huì)根據(jù)地點(diǎn)、信號(hào)強(qiáng)弱等問題影響下載速率,因此必須考慮其實(shí)際各地點(diǎn)與條件下的平均下載速率。當(dāng)點(diǎn)擊播放請(qǐng)求按鈕時(shí),socket[3]建立,并開始獲取數(shù)據(jù)。AMR數(shù)據(jù)包[4]直接下載至各個(gè)緩沖池而非解碼器,而是先存至緩沖池,待第一個(gè)緩沖池存滿后,提示可以開始播放,點(diǎn)擊播放則解碼器開始從緩沖池中讀取AMR數(shù)據(jù)包。同時(shí)其他緩沖池保持?jǐn)?shù)據(jù)包下載,直至數(shù)據(jù)結(jié)束標(biāo)志位,則關(guān)閉Socket,停止下載。因此在第一個(gè)緩沖池滿后,播放已經(jīng)開始,之后即使網(wǎng)絡(luò)不夠穩(wěn)定,在已經(jīng)播放的前提下,后臺(tái)同時(shí)進(jìn)行下載,因此整個(gè)過程始終保持流暢進(jìn)行。
結(jié)構(gòu)模型如圖1所示:
本文獨(dú)創(chuàng)的串聯(lián)式緩沖池模型非常有效地解決了無線網(wǎng)絡(luò)下載的不穩(wěn)定性,保證播放連續(xù)性。相對(duì)于以往單個(gè)緩沖池有更好的抗不穩(wěn)定性,尤其適合無線網(wǎng)絡(luò)數(shù)據(jù)接收。
圖1 串聯(lián)式緩沖池結(jié)構(gòu)模型框圖
常見內(nèi)存分配主要有3種方式:靜態(tài)內(nèi)存分配、棧分配和堆分配。而由于手機(jī)內(nèi)存資源通常極其有限,因此采用靜態(tài)內(nèi)存分配實(shí)現(xiàn)緩沖池極大影響手機(jī)運(yùn)行效率和速度。本文實(shí)現(xiàn)的緩沖池采用動(dòng)態(tài)內(nèi)存分配方式。在每個(gè)緩沖池?cái)?shù)據(jù)存滿并且被送至解碼器后,內(nèi)存空間即即使動(dòng)態(tài)釋放,投入隊(duì)列等待接收數(shù)據(jù)。
本文分配內(nèi)存于緩沖池時(shí),首先申請(qǐng)一大塊內(nèi)存作為內(nèi)存池,根據(jù)平臺(tái)內(nèi)存的剩余空間,本文申請(qǐng)了400kB的內(nèi)存大小,來作為整個(gè)緩沖池的內(nèi)存總和,也即內(nèi)存池。之后在點(diǎn)播系統(tǒng)運(yùn)行過程中,所有內(nèi)存請(qǐng)求都不再需要通過聯(lián)系系統(tǒng)的malloc或者new得到,而是通過從自己分配內(nèi)存從內(nèi)存池中分配得到4個(gè)100kB的緩沖池內(nèi)存空間,避免了頻繁的malloc操作所造成的低效,以及伴隨產(chǎn)生內(nèi)存泄露的可能。
如圖2所示,為本系統(tǒng)內(nèi)存池中緩沖池的內(nèi)存分配。
圖2 內(nèi)存池示意圖
同時(shí)本文使用一個(gè)指針數(shù)組數(shù)據(jù)結(jié)構(gòu)來管理空閑內(nèi)存塊。數(shù)組的指針分別指向不同大小的內(nèi)存空閑塊。4個(gè)數(shù)組大小一致。如圖3所示。
圖3 空閑指針數(shù)組
每塊的大小=2×(數(shù)組下標(biāo)+4),也就是說,數(shù)組0的指針指向大小為16Byte(16=2×(0+4)。整個(gè)內(nèi)存分配過程,是將空閑區(qū)指針傳給用戶,而不是調(diào)用系統(tǒng)的malloc或者new,因此效率很高。解碼器只是頻率申請(qǐng)讀寫B(tài)uffer,由于本文的串聯(lián)式緩沖池每個(gè)緩沖池大小固定,這樣對(duì)Buffer的頻繁申請(qǐng),基本都能從空閑數(shù)組中快速讀取,而其操作不過是從數(shù)組中取得相應(yīng)的指針而已,不但高效,而且避免了調(diào)用malloc失敗的風(fēng)險(xiǎn)。只有當(dāng)內(nèi)存池不能滿足用戶需求時(shí),才需充分調(diào)研系統(tǒng)malloc(或者new)來重新分配內(nèi)存。之后的實(shí)現(xiàn)過程完全一致。
AMR解碼速率和GPRS[5]理論與實(shí)測(cè)下載速率比較如表2所示。
表2 實(shí)測(cè)下載速率與AMR解碼速率對(duì)比
緩沖池緩沖時(shí)間及播放流暢性測(cè)試如表3所示。
表3 緩沖池緩沖等待時(shí)間及流暢性測(cè)試
由表3可以看出,文件大小超過100k時(shí),需要等待的緩沖時(shí)間都是一致的,并不會(huì)因?yàn)槌^容量大而需要增加等待時(shí)間。因此本文提出的這種全新串聯(lián)式緩沖池模型,相對(duì)于普通緩沖池,能更有效解決無線網(wǎng)絡(luò)數(shù)據(jù)連接不穩(wěn)定性問題,更適用于可用內(nèi)存極其有限的非智能機(jī)平臺(tái),在占用內(nèi)存很小的前提下,保證了播放的流程性。
[1]鄒麗恒.AMR在下一代網(wǎng)絡(luò)中的研究和改進(jìn)[D].北京:北京郵電大學(xué),2006.
[2]李玉萍.AMR語音編解碼的研究與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2008.
[3]姜毅,王兆青,曹麗.基于HTTP的實(shí)時(shí)信息傳輸方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,4(20):12-15.
[4]Ingemar Johansson.Bandwidth efficient AMR operation for VoIP[M].Lulel:Sweden,2003:3-4.
[5]廖旭金.淺談HTTP協(xié)議與XML技術(shù)的信息交換[J].科技咨詢導(dǎo)報(bào),2007,15(11):19-21.
Research and Implementation of Online Music Player HU Xiao-dong,HE Jia-m ing,CHEN Ping
(Instituteof Communication,Ningbo University,Ningbo Zhejiang315211,China)
To resolve thewireless stream ingmedia on-demand data download problem of instability effectively.This paper proposesa tandem buffer poolmodel,which between the receiver and decoder,to achievedatabuffereffectively and shield the data transfer rate instability.The test ismade on terminal platform which the frequency is less than 200Mhz.The effect is absolutely good.
stream player;buffer pool;decode
TP391
A
1001-9146(2010)05-0089-04
2010-07-20
科技部公共服務(wù)平臺(tái)創(chuàng)新基金資助項(xiàng)目(C26243314159);浙江省科技計(jì)劃資助項(xiàng)目(C31107);國(guó)際科技合作資助項(xiàng)目(DFA12120)
胡曉崠(1985-),男,浙江杭州人,在讀研究生,通信終端嵌入式系統(tǒng)核心技術(shù).