張瑩 郭卉 張志利
摘 要:采用美國(guó)飛思卡爾公司生產(chǎn)的一款基于ARM Cortex-A9體系結(jié)構(gòu)的高性能CPU 即i.MX6Q,對(duì)網(wǎng)絡(luò)音頻視頻播放進(jìn)行研究,制作了音頻視頻播放器平臺(tái),解決了本地和網(wǎng)絡(luò)進(jìn)行視頻播放的問(wèn)題,該平臺(tái)可以在Linux系統(tǒng)上播放音頻和視頻。
關(guān)鍵詞:Linux;ARM9;i.MX6Q;音視頻播放
ARM開(kāi)發(fā)平臺(tái)是當(dāng)前使用廣泛的主流嵌入式處理器體系結(jié)構(gòu),以ARM為核心的嵌入式系統(tǒng)在數(shù)字音頻播放器、數(shù)字機(jī)頂盒、游戲機(jī)、數(shù)碼相機(jī)、數(shù)字式電視機(jī)、GPS、機(jī)頂盒中得到廣泛采用 [ 1 ]。
本文網(wǎng)絡(luò)音頻視頻播放進(jìn)行研究,制作了音頻視頻播放器平臺(tái),解決了本地和網(wǎng)絡(luò)進(jìn)行視頻播放的問(wèn)題,該平臺(tái)可以在Linux系統(tǒng)上播放音頻和視頻。
1 硬件結(jié)構(gòu)
I.MX6Q是飛思卡爾公司推出的iMX6處理器后緊跟著推出的面向工業(yè)互聯(lián)網(wǎng),汽車(chē)電子,軍工,航天等領(lǐng)域的二次開(kāi)發(fā)參考設(shè)計(jì)平臺(tái),包含了一顆1.2GHz主頻的Cotex-A9處理器。
1.1 I.MX6Q的音頻接口電路
飛思卡爾公司的I.MX6Q為本音頻系統(tǒng)的核心,內(nèi)置視頻處理單元(VPU),支持多種格式的全雙工視頻影像處理,不占CPU資源。
三個(gè)硬件加速圖形處理單元(GPU):支持3D,2D圖形加速和矢量加速(Open VG)。
兩個(gè)獨(dú)立的影像處理單元(IPU):連接攝像頭和顯示通路以及相關(guān)的處理,同步和控制。
對(duì)總線(xiàn)擴(kuò)展器模式進(jìn)行設(shè)置,語(yǔ)音控制芯片為飛利浦公司的音頻控制芯片UDA1380,通訊方式為集成電路內(nèi)置音頻總線(xiàn)方式和集成電路總線(xiàn)方式。
1.2 I.MX6Q的顯示電路
LCD作為人機(jī)接口的終端被廣泛應(yīng)用,本文視頻系統(tǒng)功能中的播放功能采用LCD實(shí)現(xiàn)影像播放。
本系統(tǒng)作為功能實(shí)現(xiàn)為主要目的,對(duì)相應(yīng)時(shí)間、可視角度、刷新率沒(méi)有特殊要求,只考慮屏幕顯示圖像的精細(xì)程度及分辨率,采用3.5寸的液晶LCD QVGA。
2 音視頻驅(qū)動(dòng)實(shí)現(xiàn)
2.1 系統(tǒng)驅(qū)動(dòng)
在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過(guò)一組固定的入口來(lái)進(jìn)行,這組入口點(diǎn)是由每個(gè)設(shè)備的驅(qū)動(dòng)程序提供的[ 2 ]。
系統(tǒng)所需外部驅(qū)動(dòng)程序通過(guò)驅(qū)動(dòng)程序的file_operations結(jié)構(gòu)來(lái)實(shí)現(xiàn),該結(jié)構(gòu)函數(shù)是驅(qū)動(dòng)程序面向用戶(hù)的接口,在Linux 2.4里面,只要實(shí)現(xiàn)了file_operations里面的那些成員函數(shù),即實(shí)現(xiàn)了驅(qū)動(dòng)程序的編寫(xiě),讀取file_operation的函數(shù)指針,并且把控制權(quán)轉(zhuǎn)交給函數(shù),即完成設(shè)備驅(qū)動(dòng)程序。
具體方法是,在用戶(hù)自己編寫(xiě)定義file_operations結(jié)構(gòu)和設(shè)備驅(qū)動(dòng)函數(shù),編寫(xiě)時(shí)要注意此操作函數(shù)必須在內(nèi)核中進(jìn)行注冊(cè),否則不能識(shí)別。
2.2 音頻驅(qū)動(dòng)
在Linux下對(duì)本音視頻播放系統(tǒng)進(jìn)行編程時(shí)核心是操作聲卡設(shè)備的驅(qū)動(dòng)程序文件[ 3 ],主要有Mixer編程和DSP編程[ 4 ]。
3 系統(tǒng)綜合測(cè)試
使用網(wǎng)絡(luò)接口把Mplayer媒體播放器復(fù)制到系統(tǒng)平臺(tái)。實(shí)際測(cè)量中首先使用用Ping 命令查看是否網(wǎng)絡(luò)相通,網(wǎng)段要求一致,測(cè)試方法是在終端設(shè)備鍵入ping 192.168.2.99。退出使用 umount /mnt/nfs。進(jìn)入硬件系統(tǒng)后執(zhí)行mount o nolock 192.168.2.136:/ /mnt將代碼復(fù)制到到開(kāi)發(fā)平臺(tái)的ramdisk中,啟動(dòng)運(yùn)行mplayer,播放一個(gè)上傳的視頻文件,即可在LCD液晶屏上播放也可以在開(kāi)發(fā)板的/etc/init.d/rcS文件中加入上面的命令腳本, LCD播放效果如圖1所示。
4 總結(jié)
本文搭建了一個(gè)基于ARM為控制核心的網(wǎng)絡(luò)音視頻播放系統(tǒng),該系統(tǒng)采用飛思卡爾公司生產(chǎn)的一款基于CORTEX-A9內(nèi)核的高性能CPU即I.MX6Q。
對(duì)網(wǎng)絡(luò)音頻視頻播放進(jìn)行研究,制作了音頻視頻播放器平臺(tái),解決了本地和網(wǎng)絡(luò)進(jìn)行視頻播放的問(wèn)題,該平臺(tái)可以在Linux系統(tǒng)上播放音頻和視頻,對(duì)于嵌入式播放音視頻研究有一定的積極意義。
參考文獻(xiàn):
[1] 飛思科技產(chǎn)品研發(fā)中心,主流ARM嵌入式系統(tǒng)設(shè)計(jì)技術(shù)與實(shí)例精解.北京:電子工業(yè)出版社,2006.
[2] 于明,范書(shū)瑞,曾祥燁.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)教程[M].北京:電子工業(yè)出版社,2006.
[3] 何泉,賀玉梅.基于AT91RM9200的嵌入式音頻系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,(23):12-14.
[4] 高建華,王殊,基于I.MX6Q型微處理器和UDA1341型立體聲音頻編解碼器的嵌入式音頻系統(tǒng)設(shè)計(jì)[J].國(guó)外電子元器件,2006,(6):35-37.