基于ARM9的媒體播放器的設(shè)計(jì)方案
計(jì)算機(jī)多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)飛速發(fā)展使得基于流媒體的多媒體應(yīng)用也被運(yùn)用在多種領(lǐng)域,特別是網(wǎng)絡(luò)可視電話、遠(yuǎn)程監(jiān)控、視頻點(diǎn)播領(lǐng)域。伴隨著計(jì)算機(jī)多媒體壓縮技術(shù)的成熟和網(wǎng)絡(luò)傳輸技術(shù)的發(fā)展,開發(fā)實(shí)時(shí)可靠、多功能、數(shù)字化、操作簡單的基于計(jì)算機(jī)網(wǎng)絡(luò)通訊技術(shù)和多媒體應(yīng)用的網(wǎng)絡(luò)化流媒體播放器已成為計(jì)算機(jī)、通信、消費(fèi)電子產(chǎn)品領(lǐng)域(3C產(chǎn)業(yè)-Computer、Communication、Consumer Electronics)技術(shù)發(fā)展的主要方向之一。
本文引用地址:http://2s4d.com/article/272737.htm2系統(tǒng)硬件設(shè)計(jì)
本文使用TQ2440開發(fā)板作為硬件平臺(tái)。
S3C2440AL是控制核心,負(fù)責(zé)控制所有輔助設(shè)備。存儲(chǔ)器采用SDRAM和Flash兩種類型,能滿足系統(tǒng)運(yùn)行和調(diào)試的需要?;径丝诎ㄒ蕴W(wǎng)接口、USB接口、兩個(gè)RS232的串口。A/D和D/A模塊主要用于現(xiàn)場數(shù)據(jù)的采集與控制信號(hào)的輸出。DC/DC模塊主要負(fù)責(zé)整個(gè)系統(tǒng)的供電。
S3C 2440AL是三星公司設(shè)計(jì)開發(fā)的基于精簡指令集的arm9核的CPU,工作頻率可以達(dá)到400MHz,且具有豐富的內(nèi)部設(shè)備,其中主要包括:存儲(chǔ)器管理單元MMU、16kB的指令緩沖器和16kB數(shù)據(jù)緩沖器、存儲(chǔ)器控制器(SDRAM控制器)、NANDFlash和NOR Flash控制器、4通道的外部DMA請求控制、3個(gè)串行口、SD存儲(chǔ)卡讀取接口、USB主機(jī)、USB設(shè)備、5個(gè)脈寬調(diào)制定時(shí)器。目前,S3C2440AL已廣泛地應(yīng)用于PDA、智能手機(jī)、數(shù)字多媒體等方面。
3系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)的軟件組成包括:嵌入式Linux操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序、圖形界面和瀏覽器程序,這些只是IPTV機(jī)頂盒軟件組成的關(guān)鍵部分。
3.1嵌入式操作系統(tǒng)的選擇及移植
本系統(tǒng)采用Linux作為操作系統(tǒng),并選用Linux2.6內(nèi)核在嵌入式微處理器S3C2410上移植,具體移植方法如下:
(1)準(zhǔn)備Linux2.6內(nèi)核移植所必需的文件(內(nèi)核壓縮包linux-2.6.tar.bz2及交叉編譯器arm -linuxgcc-3.4.1.tar.bz2),這些文件可到Linux官方網(wǎng)站免費(fèi)下載。
(2)利用Linux命令(mkdir,tar,mv及export)安裝交叉編譯器arm-linux-gcc-3.4.1.
(3)修改Makefile文件及相關(guān)硬件文件。由于內(nèi)核的編譯是根據(jù)Makefile文件的指示進(jìn)行的,Makefile文件來組織內(nèi)核的各模塊之間的關(guān)系,記錄了各個(gè)模塊之間的相互聯(lián)系和依賴關(guān)系。所以,開發(fā)人員要首先修改Linux2.6根目錄下的Makfile文件,修改的主要內(nèi)容是目標(biāo)代碼的類型和為編譯內(nèi)核指定一個(gè)編譯器。
(4)運(yùn)用Make命令編譯內(nèi)核生成內(nèi)核鏡像文件zImage文件,通過相應(yīng)的固化軟件把這個(gè)文件固化在系統(tǒng)相應(yīng)的存儲(chǔ)器中,完成Linux2.6內(nèi)核在arm微處理器上的移植。
3.2媒體播放器的總體架構(gòu)
系統(tǒng)實(shí)現(xiàn)原理:在嵌入式微處理器S3C2440AL的控制下,TQ2440開發(fā)板通過網(wǎng)絡(luò)接口接收來自內(nèi)容服務(wù)提供商的音視頻廣播信息,之后運(yùn)行圖形界面程序獲取音視頻信息,并在此基礎(chǔ)上生成音視頻節(jié)目清單,將信號(hào)傳至顯示屏進(jìn)行顯示,將節(jié)目呈現(xiàn)給用戶。用戶利用顯示系統(tǒng)提供的圖形界面和瀏覽器使用鍵盤、鼠標(biāo)進(jìn)行控制,觀看節(jié)目,其總體架構(gòu)如圖1所示。
圖1媒體播放器的總體架構(gòu)
3.2.1媒體播放器與網(wǎng)絡(luò)接口的實(shí)現(xiàn)
媒體播放器播放網(wǎng)絡(luò)上的多媒體文件時(shí)最大的特點(diǎn)是邊下載邊播放的"流式"特性。在IPTV應(yīng)用中,因?yàn)槎嗝襟w數(shù)據(jù)的流式特性需要媒體播放器與媒體服務(wù)器之間進(jìn)行信息交互,所以它們之間須共同遵循一個(gè)交互協(xié)議標(biāo)準(zhǔn)。本系統(tǒng)播放器采用RTSP協(xié)議與服務(wù)器之間建立及管理RTSP會(huì)話,通過網(wǎng)絡(luò)傳輸協(xié)議接收來自網(wǎng)絡(luò)上的媒體數(shù)據(jù)。媒體播放器數(shù)據(jù)接收流程如圖2所示。
圖2媒體播放器數(shù)據(jù)接收流程
3.2.2 TS流解析實(shí)現(xiàn)
在MPEG-2系統(tǒng)中根據(jù)傳輸媒體的質(zhì)量不同定義了兩種復(fù)合信息流:傳送流(TS:Transport Stream)和節(jié)目流(PS:Program Stream)。TS流與PS流的區(qū)別在于TS流的包結(jié)構(gòu)是固定長度的,而PS流的包結(jié)構(gòu)是可變長度的。PS包TS包在結(jié)構(gòu)上的這種差異,致使TS流比PS流對傳輸誤碼的抵抗能力更強(qiáng),因此在本設(shè)計(jì)中的網(wǎng)絡(luò)多媒體數(shù)據(jù)采用了TS的封裝格式。TS包的結(jié)構(gòu)如圖3所示,由包頭和包數(shù)據(jù)兩部分組成,包頭長度占4B,自適應(yīng)區(qū)和包數(shù)據(jù)共占184B,整個(gè)TS包長度相當(dāng)于4個(gè)ATM包長。
圖3 TS包的結(jié)構(gòu)
因?yàn)樵赥S流里可以填入很多東西,所以制定TS流標(biāo)準(zhǔn)的機(jī)構(gòu)就規(guī)定了PSI(Program SpecificInformation)表,其作用是從一個(gè)攜帶多個(gè)節(jié)目的某一個(gè)TS流中正確找到特定的節(jié)目。
PSI表包括以下四個(gè)表:
(1)PAT表(Program Association Table)即節(jié)目關(guān)聯(lián)表,它的主要作用是指出該傳輸流ID,以及該路傳輸流中所對應(yīng)的幾路節(jié)目流的MAP表和網(wǎng)絡(luò)信息表的PID.
(2)PMT表(Program Map Table)即節(jié)目映射表,該表的PID由PAT提供,通過該表可以得到一路節(jié)目中包含的信息。
(3)CAT表(Conditional Access Table)即條件訪問表,PID是0x01.CAT攜帶的是服務(wù)器的私有信息(CA系統(tǒng)就需要使用該表格實(shí)現(xiàn)節(jié)目的解密)。
(4)NIT表(Network Information Table)即網(wǎng)絡(luò)信息表,該表包括數(shù)字電視網(wǎng)中所有的傳輸流的物理傳輸網(wǎng)信息,包含節(jié)目的頻道調(diào)諧參數(shù)、頻率、符號(hào)率等,這些信息使得接收機(jī)可以按照用戶的選擇以很少的延時(shí)或無延時(shí)地改變頻道、調(diào)諧參數(shù),正確地解碼出TS.
所以TS流解析流程如圖4所示:先接收一個(gè)負(fù)載里為PAT的數(shù)據(jù)包,在整個(gè)數(shù)據(jù)包里找到一個(gè)PMT包的ID.然后再接收一個(gè)含有PMT的數(shù)據(jù)包,在這個(gè)數(shù)據(jù)包里找到有關(guān)填入數(shù)據(jù)類型的ID.之后就在接收到的TS包里找到含有這個(gè)ID的負(fù)載內(nèi)容就是填入的信息。根據(jù)填入的數(shù)據(jù)類型的ID的不同,在TS流復(fù)合多種信息,解有這些信息的傳輸包即可解出音視頻的PES包,最終解出音頻流和視頻流。
圖4 TS流解析流程
由于時(shí)間和資源有限,本設(shè)計(jì)中移植成熟的QT/Embedded庫到機(jī)頂盒的嵌入式系統(tǒng),作為其圖形界面類庫。Qt/Embedded采用frame buffer(幀緩沖)作為底層圖形接口。同時(shí),將外部輸入設(shè)備抽象為keyboard和mouse輸入事件。Qt/Embedded的應(yīng)用程序可以直接寫內(nèi)核緩沖幀,這避免開發(fā)者使用繁瑣的XLIB/Server系統(tǒng)。界面程序流程圖如圖5所示。
圖5界面程序流程圖
4結(jié)語
本系統(tǒng)利用TQ2440硬件平臺(tái)的優(yōu)勢,將Linux2.6.14內(nèi)核移植到開發(fā)板中,設(shè)計(jì)實(shí)現(xiàn)了一款基于嵌入式Linux的機(jī)頂盒流媒體播放器,完成了其與網(wǎng)絡(luò)接口的實(shí)現(xiàn),通過TS流的解析實(shí)現(xiàn),提供了對主流的MPEG-2、MPEG-4、H.264等格式文件的支持。該系統(tǒng)具有良好的可移植性和可擴(kuò)展性,能夠滿足市場需求的不斷變化。
脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理
評論