基于ARM的MPEG4視頻解碼器
,通過本文所總結的ARM7TDMI上視頻解碼的優(yōu)化方法,可以使MPEG4視頻解碼節(jié)約大量的數(shù)據(jù)處理時間。由實驗結果可見,本視頻解碼器能較好地滿足低分辨率、低幀率場合實時解碼的要求。 4 MPEG4視頻解碼的嵌入式系統(tǒng)實現(xiàn) 實現(xiàn)本解碼器的主要硬件平臺是Easy ARM2200,如圖5所示。它是一款功能強大的32位ARM單片機開發(fā)板,采用了Philips公司的ARM7TDMIS核,以及總線開放的單片機LPC2210,具有JTAG調試功能。 圖5 Easy ARM2200開發(fā)板 開發(fā)板上除了提供鍵盤、LED和RS232等一些常用功能部件外,還具有4Mb SRAM、16Mb FLASH、IDE硬盤接口、CF存儲卡接口、以太網(wǎng)接口和Modem接口等。 本文選擇在μClinux操作系統(tǒng)上調試MPEG4解碼程序。調試過程分為以下幾個步驟: 圖6 為一個基于μClinux的嵌入式系統(tǒng)典型框架結構圖。 圖6 基于μClinux嵌入式系統(tǒng)框圖 (1) 建立μClinux開發(fā)環(huán)境 為了實現(xiàn)基于μClinux的應用系統(tǒng)的開發(fā),建立或擁有一個完備的μClinux開發(fā)環(huán)境是十分必要的。建立μClinux開發(fā)環(huán)境主要包括以下3個步驟: 在完成上述所有工作后,一個嵌入式應用開發(fā)平臺就已經(jīng)搭建好了。在這個平臺之上,可以根據(jù)不同需要開發(fā)嵌入式應用。 (2) 在μClinux下開發(fā)應用程序 基于μClinux系統(tǒng)的應用程序的開發(fā),通常是在標準Linux平臺上用交叉編譯工具armelfgcc來完成的。ADS和armelfgcc都是ARM公司提供的軟件開發(fā)工具,它們都支持ARM指令集,但部分偽指令集不同。因此為了將在ADS1.2環(huán)境下優(yōu)化好的源代碼移植到armelfgcc環(huán)境下,就需要對源代碼的偽指令作修改, 然后用armelfgcc編譯源文件,以生成可在目標板上運行的可執(zhí)行程序。 (3) 添加應用程序到目標系統(tǒng)并調試 要在硬件板上調試,就必須首先把應用軟件的可執(zhí)行程序添加到目標系統(tǒng)中。有多種途徑可以達到這一目的。本文使用的是網(wǎng)絡方法,通過以太網(wǎng)接口從網(wǎng)絡添加用戶程序到目標系統(tǒng)中運行。 完成上述工作后,MPEG4解碼程序就可以在μClinux系統(tǒng)上運行了,解碼結果數(shù)據(jù)流通過以太網(wǎng)動態(tài)傳輸?shù)絇C機上。對幾個典型QCIF格式圖像解碼的幀率如表5所列。 表5 在μClinux操作系統(tǒng)中MPEG4視頻解碼的幀率 觀察發(fā)現(xiàn)與前面的軟件仿真結果是一致的。對于序列news、miss_am和salesman這些運動動作不太大的圖像,解碼幀率明顯較高;而對于foreman、carphone和trevor這些運動動作較大的圖像,解碼幀率就較低。 實驗結果表明,本系統(tǒng)可以實現(xiàn)低幀率、低分辨率的嵌入式MPEG4視頻實時解碼。 5 結束語 本文重點研究了基于ARM開發(fā)平臺對MPEG4實時解碼的算法優(yōu)化及其硬件實現(xiàn)。主要完成了以下幾方面工作: 針對ARM7TDMI的體系結構,對解碼的關鍵部分進行了算法優(yōu)化和代碼優(yōu)化,從而極大地提高了解碼速度;針對具體的硬件平臺——基于ARM7TDMI的Eeay ARM2200開發(fā)板,建立了μClinux開發(fā)環(huán)境,在其上開發(fā)應用程序,添加到目標系統(tǒng)中并調試,最后完成了15fps的MPEG4視頻解碼嵌入式系統(tǒng)的實時實現(xiàn)。 隨著人們對視覺媒體的要求越來越高,基于嵌入式系統(tǒng)視頻解碼技術將具有越來越廣闊的前景。 |