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