楊銳 劉宏杰 周永錄
摘 要:本文主要是基于Sigma嵌入式網(wǎng)絡(luò)流媒體解碼平臺(tái),設(shè)計(jì)一個(gè)可提供網(wǎng)絡(luò)多媒體信息瀏覽、選擇、解碼、播放和顯示的播放系統(tǒng)。
【關(guān)鍵詞】Sigma嵌入式 音視頻解碼 播放系統(tǒng)
建立在嵌入式網(wǎng)絡(luò)音視頻解碼系統(tǒng)硬件平臺(tái)和系統(tǒng)底層固件實(shí)現(xiàn)高音質(zhì)數(shù)字音頻、高清晰數(shù)字視頻、高分辨數(shù)字圖像等本地或網(wǎng)絡(luò)多媒體信息的瀏覽、選擇、解碼、播放和顯示等功能的播放系統(tǒng)在軟件設(shè)計(jì)上主要包括底層軟件設(shè)計(jì)和應(yīng)用層軟件設(shè)計(jì)。
1 軟件系統(tǒng)總體結(jié)構(gòu)
有些高清播放機(jī)的應(yīng)用軟件設(shè)計(jì)主要分為主控模塊,播放器模塊,瀏覽器,系統(tǒng)管理模塊,增值業(yè)務(wù)模塊。本文設(shè)計(jì)的嵌入式網(wǎng)絡(luò)音視頻解碼播放系統(tǒng)按照面向?qū)ο蟮脑O(shè)計(jì)方法,將系統(tǒng)功能分布到各個(gè)基于類的對(duì)象中,在對(duì)象之間的協(xié)同工作上執(zhí)行程序。應(yīng)用系統(tǒng)劃分為以下模塊:
(1)入口模塊main,作為執(zhí)行軟件的入口函數(shù),即C++程序通用的main函數(shù);
(2)響應(yīng)用戶控制模塊GuiControl, C++類,提供用于響應(yīng)用戶命令的各種功能;
(3)界面繪制模塊GuiRender,C++類,實(shí)現(xiàn)界面繪制使用的底層功能;
(4)界面分析模塊GuiParse,C++類,進(jìn)行XML界面配置文件的讀取和分析;
(5)媒體資源播放引擎MSPE,封裝媒體資源解碼播放相關(guān)功能,提供API接口。
本文設(shè)計(jì)的嵌入式網(wǎng)絡(luò)音視頻解碼播放系統(tǒng)軟件總體結(jié)構(gòu)如圖1所示。
以上模塊中,入口模塊、響應(yīng)用戶控制模塊、界面繪制模塊、界面分析模塊是可執(zhí)行文件的一部分。媒體資源播放引擎單獨(dú)封裝為動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)媒體資源播放相關(guān)功能的封裝性和重用性。
模塊結(jié)構(gòu)如圖2所示。
2 底層軟件設(shè)計(jì)
嵌入式網(wǎng)絡(luò)音視頻解碼系統(tǒng)底層固件是各種應(yīng)用系統(tǒng)的軟件基礎(chǔ)架構(gòu),主要由SMP8634 XOS、引導(dǎo)程序(Zboot)、ROM監(jiān)控程序(Yamon)、Linux內(nèi)核(Kernel)、硬件驅(qū)動(dòng)程序(Drivers)和文件系統(tǒng)(Filesys)等幾個(gè)部分組成,具有模塊化、可裁減、可升級(jí)、可固化、可移植等特點(diǎn)。底層軟件數(shù)據(jù)流如圖3所示。
2.1 SMP8634/5 XOS
是SMP8634/5處理器的第一階段引導(dǎo)程序,芯片出廠時(shí)已經(jīng)固化在處理器芯片的ROM中,無(wú)須進(jìn)行改動(dòng),其功能是提供上電復(fù)位后硬件的基本初始化以及FLASH所保存環(huán)境變量XENV狀態(tài)、電源工作狀態(tài)DRAM工作狀態(tài)、ZBOOT存在狀態(tài)的校驗(yàn)檢查,為加載第二階段ZBOOT引導(dǎo)程序做好準(zhǔn)備。
2.2 Zboot
SMP8634/5處理器是采用Zboot作為第二階段的bootloader,固化在硬件平臺(tái)上的FLASH芯片中,完成硬件平臺(tái)系統(tǒng)時(shí)鐘、DMA控制器、UART、中斷、GPIO等相關(guān)硬件的初始化,并加載運(yùn)行YAMON或Linux內(nèi)核的功能。本設(shè)計(jì)中,采用SIGMA公司提供的ZBOOT2.5.0-2.8.0源碼包,通過(guò)SIGMA SMP8634/5專用開(kāi)發(fā)環(huán)境進(jìn)行編譯,得到可執(zhí)行代碼,并燒寫到硬件平臺(tái)上的FLASH芯片中。
2.3 YAMON
YAMON是基于MIPS處理器板的ROM監(jiān)控程序,在ZOOT引導(dǎo)后加載,作為MIPS處理器板的底層監(jiān)控臺(tái),為MIPS處理器板提供內(nèi)存操作、Linux內(nèi)核加載運(yùn)行、FLASH程序燒寫、XENV環(huán)境變量設(shè)置等SHELL功能。本設(shè)計(jì)中,采用SIGMA公司提供的Yamon2.06源碼包,通過(guò)SIGMA SMP8634/5專用開(kāi)發(fā)環(huán)境進(jìn)行編譯,得到可執(zhí)行代碼,并燒寫到硬件平臺(tái)上的FLASH芯片中。
2.4 Linux Kernel
本設(shè)計(jì)中,Linux Kernel是指運(yùn)行在硬件平臺(tái)之上的嵌入式操作系統(tǒng)內(nèi)核,采用固化在硬件平臺(tái)上的FLASH芯片中,完成對(duì)整個(gè)硬件平臺(tái)的控制管理和調(diào)度,并作為應(yīng)用層軟件的運(yùn)行環(huán)境。采用的Linux內(nèi)核版本號(hào)是2.6.15,通過(guò)對(duì)此內(nèi)核的裁剪和配置,使之與硬件平臺(tái)所具有的硬件芯片及接口相匹配。
2.5 Drivers
本設(shè)計(jì)中,Drivers指硬件平臺(tái)上各類硬件部件的linux驅(qū)動(dòng)程序模塊,包括了SMP8634/5主芯片所含各個(gè)硬件模塊的驅(qū)動(dòng)以及外圍接口芯片的驅(qū)動(dòng),可通過(guò)內(nèi)核的配置和整個(gè)Linux 內(nèi)核集成在一起,也可作為單獨(dú)的驅(qū)動(dòng)模塊在運(yùn)行過(guò)程中進(jìn)行動(dòng)態(tài)的加載和卸載。
2.6 Filesys
Filesys指支持linux內(nèi)核以及應(yīng)用層軟件運(yùn)行的文件系統(tǒng),在本設(shè)計(jì)中,可針對(duì)不同需要,采用基于NOR FLASH 的CRAMFS文件系統(tǒng)、或基于硬盤/CF卡的EXT2/EXT3文件系統(tǒng)等多種形式
3 入口模塊設(shè)計(jì)
3.1 模塊概述
本模塊是執(zhí)行文件的入口函數(shù),初始化用戶控制設(shè)備(遙控器或鍵盤),初始化基于響應(yīng)用戶控制模塊GuiControl類的對(duì)象gui,初始化媒體資源播放引擎MSPE,以便使用其API接口,讀取存儲(chǔ)在系統(tǒng)Flash中 App Params分區(qū)的配置參數(shù),初始化音視頻環(huán)境設(shè)置。在循環(huán)中接受用戶命令,送交用戶控制模塊處理,檢測(cè)全局變量顯示信息標(biāo)志m_info,調(diào)用GuiControl類接口函數(shù)顯示更新播放信息,收到用戶命令為POWER鍵值,則進(jìn)行系統(tǒng)軟關(guān)機(jī)或軟開(kāi)機(jī)。
3.2 算法和流程
如圖4所示。
4 XML界面配置文件設(shè)計(jì)
界面在屏幕上的完整顯示稱為頁(yè)面(OsdPage),列表、菜單、圖片(Bitmap)、字符串(String)等界面元素是包含在頁(yè)面中的項(xiàng)目,一個(gè)列表(List)可包含多個(gè)列表項(xiàng)(ListItem);一個(gè)菜單(Menu)可包含多個(gè)菜單項(xiàng)(MenuItem),一個(gè)菜單項(xiàng)又可有多個(gè)子菜單項(xiàng)。各個(gè)界面元素,又可根據(jù)用戶命令產(chǎn)生事件(Event),并規(guī)定事件觸發(fā)的命令(Command)。
因此,按照上述上下級(jí)包含關(guān)系設(shè)計(jì)XML結(jié)構(gòu),頂級(jí)XML節(jié)點(diǎn)可包含多個(gè)OsdPage節(jié)點(diǎn),OsdPage節(jié)點(diǎn)可包含多個(gè)List節(jié)點(diǎn)、Menu節(jié)點(diǎn)、Bitmap節(jié)點(diǎn)、String節(jié)點(diǎn)。List節(jié)點(diǎn)可包含多個(gè)ListItem節(jié)點(diǎn),Menu節(jié)點(diǎn)可包含多個(gè)MenuItem節(jié)點(diǎn),也可包含Menu節(jié)點(diǎn)作為下級(jí)菜單,Item節(jié)點(diǎn)可包含Event節(jié)點(diǎn)。在OsdPage節(jié)點(diǎn)外,還有一個(gè)ScreenFormat節(jié)點(diǎn),配置屏幕分辨率;多個(gè)Popup節(jié)點(diǎn),配置彈出信息提示框;多個(gè)TextTable節(jié)點(diǎn),配置信息表的顯示,TextTable節(jié)點(diǎn)中又可包含多個(gè)textItem節(jié)點(diǎn),配置信息表中的一行一格內(nèi)容;多個(gè)Command節(jié)點(diǎn),配置彈出信息提示框的顯示;多個(gè)Slider節(jié)點(diǎn),配置滾動(dòng)條的顯示。
XML結(jié)構(gòu)如圖5所示。
參考文獻(xiàn)
[1]編輯部.IPTV與OTT的時(shí)代已經(jīng)到來(lái)[J].家庭影院技術(shù).2013,01.
[2]2014年1月份通信業(yè)經(jīng)濟(jì)運(yùn)行情況[EB/OL].http://www.miit.gov.cn. 2014.03.03
[3]2018年全球IPTV用戶數(shù)將達(dá)1億[EB/OL].http://www.91.com.2013.12.26
[4]金偉.IPTV機(jī)頂盒現(xiàn)狀與趨勢(shì)的研究[J]. 電信科學(xué). 2006,03.
[5]個(gè)人便攜式媒體播放機(jī)(PMP)解決方案現(xiàn)狀及未來(lái)展望[EB/OL]. http://club.tom.com/ item_154_107_0_1.html.
[6]郯道宗.選購(gòu)高清播放機(jī)務(wù)須了解其技術(shù)本質(zhì)[J].實(shí)用影音技術(shù).2009,12.
[7]易勇平.嵌入式硬盤播放器設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國(guó)地質(zhì)大學(xué),2012.
[8]Sigma Designs Company.SMP8634 datasheet [EB/OL].http://www.sigmadesigns.com.
[9]劉波,王榮國(guó),洪雨,趙明慧,劉麗娟.各種視頻編碼標(biāo)準(zhǔn)簡(jiǎn)介[J].北京:有線電視技術(shù).2006,10.
[10]李偉強(qiáng).嵌入式多媒體器的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林:東北師范大學(xué),2010.
[11]MPEG[EB/OL].http://baike.baidu.com/link?url=9_GT0CgRO-MhcQJXMyJn32289TBBZ1lrw780yHJC-oFC4Hh2HuFBFhE19Kvcq7G_.
[12]MPEG全揭示[EB/OL]. http://www.people.com.cn/GB/channel5/569/20000721/154432.html, 2000-12-29
[13]劉富強(qiáng).數(shù)字視頻與視頻信息處理[M].北京:機(jī)械工業(yè)出版社.2004.4-106.
[14]林福宗.多媒體技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社.2003:269-312
[15]Information technology—Coding of audio-visualobject--part 2:Audio,ISO/IEC.2002.
[16]岑斌,肖鋼,程振波,周濤明,流媒體技術(shù)綜述[J].北京:中國(guó)有線電視,2003
[17]湯寶偉,王勁林,陳曉,李挺屹,一種基于嵌入式的流媒體播放系統(tǒng)的是基于實(shí)現(xiàn)[J],廣播與電視技術(shù),2003.
[18]嵌入式操作系統(tǒng)[EB/OL].http://baike.baidu.com/link?url=MLlaB2OgG0j1NkMqvpuVmPUo1nY5JzYm2qS-fVtBA4Qh0x_c78NsUHdN5QM9wltE
[19]魏晨曦.基于SMP8655的UPnP AV終端的設(shè)計(jì)與實(shí)現(xiàn)[D].廣東:華南理工大學(xué),2012.
[20]耿建平,何學(xué)良.基于SMP8653的高清播放機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2012,36(5).
作者簡(jiǎn)介
楊銳(1974-),女,曾畢業(yè)于云南師范大學(xué)獲得碩士研究生學(xué)歷?,F(xiàn)為云南農(nóng)業(yè)職業(yè)技術(shù)學(xué)院講師。研究方向?yàn)檐浖こ獭?/p>
作者單位
1.云南農(nóng)業(yè)職業(yè)技術(shù)學(xué)院 云南省昆明市 650031
2.云南大學(xué)云南省電子計(jì)算中心 云南省昆明市 6500223