《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于OMAP3的視頻解碼器的通用解碼方案
基于OMAP3的視頻解碼器的通用解碼方案
來源:單片機(jī)與嵌入式系統(tǒng)
王偉 劉培德
山東經(jīng)濟(jì)學(xué)院
摘要:   本文以O(shè)MAP3530為例,,分析了0MAP平臺(tái)的硬件結(jié)構(gòu)與軟件編程特點(diǎn);總結(jié)了TI公司提供的專用圖像圖形處理庫(IMGLIB)的使用技巧,,并與OMAPl510進(jìn)行了部分比較;在流行的視頻編解碼標(biāo)準(zhǔn)的基礎(chǔ)上,,提出了基于OMAP3的視頻解碼器的通用解碼方案,。
Abstract:
Key words :

  本文以O(shè)MAP3530為例,分析了0MAP平臺(tái)的硬件結(jié)構(gòu)與軟件編程特點(diǎn);總結(jié)了TI公司提供的專用圖像圖形處理庫(IMGLIB)的使用技巧,,并與OMAPl510進(jìn)行了部分比較;在流行的視頻編解碼標(biāo)準(zhǔn)的基礎(chǔ)上,,提出了基于OMAP3的視頻解碼器的通用解碼方案。
  1 OMAP平臺(tái)簡介
  開放式多媒體應(yīng)用平臺(tái)OMAP結(jié)合高性能,、低功耗的DSP核與控制性能強(qiáng)大的ARM內(nèi)核,,是一種開放式的,、可編程的體系結(jié)構(gòu),目前主要有OMAP1X,、OMAP2X和OMAP3X系列,。以O(shè)MAP3530為例,硬件結(jié)構(gòu)如圖1所示,。
  

  1.1 OMAP3530的硬件平臺(tái)
  0MAP3530的硬件平臺(tái)主要由ARM內(nèi)核,、DSP內(nèi)核以及流量控制器(Traffic Controler,TC)組成,。
  (1)ARM內(nèi)核
  OMAP3530采用ARM Cortex-A8核,,工作主頻最高可達(dá)720 MHz。它包括存儲(chǔ)器管理單元,、16 KB的高速指令緩沖存儲(chǔ)器,、16 KB的數(shù)據(jù)高速緩沖存儲(chǔ)器和256K字的二級(jí)Cache;片內(nèi)有64 KB的內(nèi)部SRAM,為液晶顯示等應(yīng)用提供了大量的數(shù)據(jù)和代碼存儲(chǔ)空間,。CortexA8內(nèi)核采用13級(jí)流水線,、32位的RISC處理器架構(gòu),。系統(tǒng)中的控制寄存器對(duì)MMU,、Cache和讀寫緩存控制器進(jìn)行存取操作。ARM內(nèi)核具有整個(gè)系統(tǒng)的控制權(quán),,可以設(shè)置DSP,、TC以及各種外設(shè)的時(shí)鐘及其他工作參數(shù),控制DSP的運(yùn)行停止,。OMAP3530平臺(tái)可支持包含繪圖,、多媒體內(nèi)容和Java程序的先進(jìn)應(yīng)用。
  (2)DSP內(nèi)核
  TMS320C64X+內(nèi)核具有最佳的功耗性能比,,工作主頻最高為520 MHz;它具有高度的并行能力,,32位讀寫和功能強(qiáng)大的EMIF,雙流水線的獨(dú)立操作以及雙MAC的運(yùn)算能力,。它采用3項(xiàng)關(guān)鍵的革新技術(shù):增大的空閑省電區(qū)域,、變長指令和擴(kuò)大的并行機(jī)制。其結(jié)構(gòu)針對(duì)多媒體應(yīng)用高度優(yōu)化,,適合低功耗的實(shí)時(shí)語音圖像處理,。另外,TMS320C64X+內(nèi)核增加了固化了算法的硬件加速器,,來處理運(yùn)動(dòng)估計(jì),、8×8的DCT/IDCT和1/2像素插值,降低了視頻處理的功耗,。
  (3)流量控制器
  流量控制器TC用于控制ARM,、DSP,、DMA以及本地總線對(duì)OMAP3530內(nèi)所有存儲(chǔ)器(包括SRAM,SDRAM,、Flash和ROM等)的訪問,。
  OMAP3530具有豐富的外圍接口,如液晶控制器,、存儲(chǔ)器接口,、攝像機(jī)接口、空中接口,、藍(lán)牙接口,、通用異步收發(fā)器、I2C主機(jī)接口,、脈寬音頻發(fā)生器,、串行接口、主客戶機(jī)USB口,、安全數(shù)字多媒體卡控制器接口,、鍵盤接口等。這些豐富的外圍接口使應(yīng)用OMAP的系統(tǒng)具有更大的靈活性和可擴(kuò)展性,。
  1.2 OMAP3530的軟件平臺(tái)
  利用OMAP可以建立兩個(gè)操作系統(tǒng):基于ARM的操作系統(tǒng)(如WinCE,、Linux等),以及基于DSP的DSP/BIOS,。連接兩個(gè)操作系統(tǒng)使用的核心技術(shù)是DSP/BIOS橋,。0MAP支持多種實(shí)時(shí)多任務(wù)操作系統(tǒng)在ARM微處理器上工作,用來對(duì)ARM微處理器進(jìn)行實(shí)時(shí)多任務(wù)調(diào)度管理,,對(duì)TMS320C64X+進(jìn)行控制和通信;同時(shí),,支持多種實(shí)時(shí)多任務(wù)操作系統(tǒng)在TMS320C64X+上工作,實(shí)現(xiàn)復(fù)雜的多媒體信號(hào)處理,。DSP/BIOS橋包含DSP管理器,、DSP管理服務(wù)器、DSP和外圍接口鏈接驅(qū)動(dòng)器,。DSP/BIOS橋提供運(yùn)行在Cortex-A8上的應(yīng)用程序和運(yùn)行TMS320C64X+上的算法之間的通信管理服務(wù),。開發(fā)者可以利用DSP/BIOS橋中的應(yīng)用編程接口控制在DSP中實(shí)時(shí)任務(wù)的執(zhí)行,并同DSP交換任務(wù)運(yùn)行結(jié)果和狀態(tài)消息,。在這個(gè)環(huán)境下,,開發(fā)者可以調(diào)用局部DSP網(wǎng)關(guān)組件來實(shí)現(xiàn)諸如視頻、音頻和語音等功能,。因此,,開發(fā)者不需要了解DSP和DSP/BIOS橋,就能開發(fā)新的應(yīng)用軟件。使用標(biāo)準(zhǔn)應(yīng)用編程接口開發(fā)的應(yīng)用軟件,,與基于0MAP的未來無線設(shè)備兼容,。
  2 視頻編碼標(biāo)準(zhǔn)與OMAP圖形圖像庫應(yīng)用
  2.1 視頻編碼標(biāo)準(zhǔn)

  從1988年開始,ISO/IEC MPEG和ITU-T針對(duì)不同的應(yīng)用制訂了一系列視頻編碼國際標(biāo)準(zhǔn),。MPEG的有MPEG-1,、MPEG-2、MPEG-4標(biāo)準(zhǔn),,ITU-T的有H.261,、H.263、H_263+/H.263++以及H.264標(biāo)準(zhǔn),。2001年12月,,ISO和ITU-T正式成立聯(lián)合視頻小組(Joint Video Team,JVT)共同制定新的H.264編碼標(biāo)準(zhǔn),。2002年6月,,我國信息產(chǎn)業(yè)部制訂了我國的數(shù)字音視頻編碼技術(shù)標(biāo)準(zhǔn)(Audio-Video Coding Standard,AVS),。AVS是我國具備自主知識(shí)產(chǎn)權(quán)的第二代信源編碼標(biāo)準(zhǔn),。與目前比較流行的標(biāo)準(zhǔn)(如MPEG-2、MPEG-4,、H.263,、H.264)相比,從編碼效率來看,,MPEG-4是MPEG-2的1.4倍,,AVS和H.264都是MPEG-2的2倍以上;從算法復(fù)雜度上來看,H.264的算法在編碼端比MPEG-2復(fù)雜4~5倍,,在解碼端復(fù)雜2~3倍,而AVS在復(fù)雜度上比H.264有較大幅度降低,,且不需要交納高昂的專利費(fèi)用,。
  目前,應(yīng)用比較廣泛的視頻編碼標(biāo)準(zhǔn)中,,基本上都有如下的步驟:將圖像序列編碼為幀內(nèi)模式和幀問模式兩種,,并且分別進(jìn)行編碼。采用幀內(nèi)編碼時(shí),,直接對(duì)8×8的像素塊進(jìn)行DCT變換,,然后將量化系數(shù)進(jìn)行變長編碼后形成輸出碼流;另一路經(jīng)反量化、反DCT變換后形成恢復(fù)圖像,,直接存入幀存儲(chǔ)器,。采用幀間編碼時(shí),對(duì)原始數(shù)據(jù)的每個(gè)塊先進(jìn)行運(yùn)動(dòng)估計(jì),并與經(jīng)運(yùn)動(dòng)估計(jì)后的預(yù)測(cè)圖像相減,,產(chǎn)生差分圖像,,接著進(jìn)行DCT變換和量化,并同運(yùn)動(dòng)矢量數(shù)據(jù)一起編碼形成碼流;另一路經(jīng)反量化,、反DCT變換后形成恢復(fù)圖像,,存入幀存儲(chǔ)器,用于下一步的運(yùn)動(dòng)估計(jì),。
  不同的標(biāo)準(zhǔn)具有各自的特點(diǎn),,例如MPEGl與H.261采用整像素,MPEG4和H.263采用半像素,,H.264與AVS采用1/4至1/8像素精度的運(yùn)動(dòng)估計(jì),,H.261采用單參考幀,H.264與AVS采用多參考幀等,。特別是目前的H.264標(biāo)準(zhǔn),,采用整數(shù)DCT/IDCT、幀內(nèi)預(yù)測(cè),、多模式運(yùn)動(dòng)估計(jì),、去塊效應(yīng)濾波器等先進(jìn)技術(shù),造成了極大的算法復(fù)雜度,,對(duì)硬件實(shí)時(shí)解碼提供了很高的要求,。
  2.2 OMAP圖形圖像庫(IMGLIB)應(yīng)用
  針對(duì)圖像與視頻處理的需要,TI提供了IMGLIB庫供C程序調(diào)用,。庫里內(nèi)容主要有2部分:
 ?、儆布铀俨糠帧S蓞R編語言編寫,,但是計(jì)算由硬件的加速模塊來實(shí)現(xiàn),,無法修改。例如DCT/IDCT都是針對(duì)8×8塊進(jìn)行的,,變換矩陣已經(jīng)固定,,硬件加速指令共有16種,其中DCT/IDCT各1條,,運(yùn)動(dòng)估計(jì)指令10條,,插值指令4條。
 ?、谲浖铀俨糠?。用匯編語言編寫,包括矩陣量化反量化,、JPEG變長編碼,、一維/二維離散小波變換反變換及小波包變換反變換,,以及圖像的直方圖計(jì)算、邊緣檢測(cè),、帶移位操作的3×3掩模操作等,。這些軟件加速指令都提供了標(biāo)準(zhǔn)的C接口,用戶可以直接調(diào)用,,也可以模仿編寫規(guī)則編譯生成自己的庫文件,。
  在視頻編解碼過程中,運(yùn)動(dòng)估計(jì),、DCT/IDCT和像素插值占據(jù)了大量的運(yùn)算時(shí)間,,0MAP平臺(tái)提供的硬件加速單元可以高效地完成上述運(yùn)算,而幾乎不占用CPU時(shí)鐘(這里,,不占用是指運(yùn)算過程,,實(shí)際上數(shù)據(jù)的輸入輸出仍需要花費(fèi)少量時(shí)間);同時(shí),優(yōu)化的軟件加速單元也可以較快地完成運(yùn)算,。以DCT/IDCT為例,,耗時(shí)情況如表1所列。
  
 
  由表1可知,,硬件DCT耗時(shí)約為軟件DCT的1/7,,硬件IDCT耗時(shí)約為軟件IDCT的1/4.5。因此,,采用硬件加速模塊可以極大地提高運(yùn)算速度并降低功耗,。
  對(duì)于最新的H.264以及AVS標(biāo)準(zhǔn),需要采用OMAP3530才能發(fā)揮0MAP系列的硬件加速優(yōu)勢(shì),。OMAP3530的硬件加速器集成了加速模塊的半像素插值,,采用的整數(shù)DCT/IDCT類變換硬件加速模塊,而且集成了去塊效應(yīng)濾波器,。在通用計(jì)算機(jī)上,,H.264的解碼過程中各部分所需的時(shí)間如表2所列。
  
 
  從表2中可以看出,,在H.264的解碼過程中,,環(huán)路濾波、插值以及反變換反量化占據(jù)了超過70%的計(jì)算時(shí)間,。因此,用0MAP3530來進(jìn)行H.264以及AVS的解碼時(shí),,如果能有效地利用0MAP3530的硬件加速資源,,可以提高計(jì)算效率,實(shí)現(xiàn)實(shí)時(shí)解碼,。另外,,除了硬件加速器之外,0MAP3530的體系結(jié)構(gòu)比較適合于視頻處理,這主要基于以下考慮:
 ?、倌壳笆袌?chǎng)上推出的整合了ARM與DSP的多媒體專用芯片并不多,,OMAP可以使用單一芯片實(shí)現(xiàn)嵌入式操作系統(tǒng)(Linux、WinCE等)的功能,,并且可以獲得TI廣大的第三方提供的豐富的算法支持,。基于操作系統(tǒng)的編程更靈活方便,,便于產(chǎn)品的軟件升級(jí),。相比之下,單一的DSP無法實(shí)現(xiàn)操作系統(tǒng)的功能,,若額外采用ARM構(gòu)建操作系統(tǒng),,成本以及硬件軟件復(fù)雜度無疑會(huì)大于采用OMAP平臺(tái)。
 ?、诠牡目紤],。表3列出了OMAPl510上運(yùn)行MPEG4解碼時(shí)的功耗情況。
  
 
  可以看出,,在OMAPl510平臺(tái)上,,對(duì)于QCIF(常用的標(biāo)準(zhǔn)化圖像格式)、15 fps的應(yīng)用來說,,功耗在9.9~28.5mW,。對(duì)于常見的650 mAh時(shí)的手機(jī)電池,大概可以連續(xù)工作34~59小時(shí),,這對(duì)一般的應(yīng)用來說顯然是夠用的,。而TI的另一款專用多媒體處理芯片DM642,其功耗為1.5W,,是OMAP的50~150倍,。對(duì)于便攜式的多媒體終端而言,由于并不需要太高的運(yùn)算處理能力,,采用OMAP平臺(tái)既能滿足需要,,又可以節(jié)約電池電力。
 ?、鬯俣鹊目紤],。TMS320C64X+最多可以并行執(zhí)行8條指令,所以理論上的最大速度是4 160 MIPS(520MHz),。這一點(diǎn)相比目前最快的多媒體處理芯片DM642(4 800 MIPS,,600 MHz)來說稍低,但兩者的目標(biāo)定位不同,。DM642主要用于實(shí)時(shí)編碼等對(duì)速度要求較高的場(chǎng)合,,而0MAP主要用于手持設(shè)備的解碼,。以H.264算法的Base Profilc為例,復(fù)雜度比MPEG-4高20%~30%,。對(duì)于MPEG4,,在QCIF、15 fps下需要28 MIPS;對(duì)應(yīng)的H.264算法的Base Profile要求40 MIPS的運(yùn)算速度,。
 ?、艹绦蚪Y(jié)構(gòu)的考慮。DSP的片內(nèi)內(nèi)存速度最快,,但是非常有限,,所以必須將片外的數(shù)據(jù)倒入內(nèi)存。由于目前的編碼方式全都是采用基于宏塊的,,每個(gè)宏塊至多16×16,,所以比較通用的辦法是采用,DMA方式將要用到的數(shù)據(jù)提前倒入片內(nèi),。DMA傳送速度很快,,所以可以并行也可以串行傳送。
 ?、蒈浖铀俚目紤],。可以仿照IMGLIB的編寫規(guī)則用匯編語言對(duì)耗時(shí)最多的部分進(jìn)行重寫,,同時(shí)結(jié)合TI公司的數(shù)據(jù)手冊(cè)進(jìn)行C語言級(jí)以及匯編級(jí)的程序優(yōu)化,。由于TI公司編譯器的編譯效率一直在提高,從通用及可讀性的角度上講,,推薦采用C語言,。
  3 實(shí)時(shí)視頻解碼在OMAP上的軟件實(shí)現(xiàn)
  在OMAP上開發(fā)程序通常分為兩部分:ARM端負(fù)責(zé)控制、顯示等;DSP端負(fù)責(zé)數(shù)據(jù)處理,。采用TI公司提供的DSP開發(fā)工具CCS在這兩端分別開發(fā),,視頻解碼流程如圖2所示。
  
 
  ARM端:初始化整個(gè)OMAP3530芯片,,包括ARM,、DSP、TC等的時(shí)鐘設(shè)置,,DSP的開啟關(guān)閉以及復(fù)位,,LCD、定時(shí)器等各個(gè)外設(shè)的初始化,。在啟動(dòng)完成后,,ARM內(nèi)核就一直查詢共享內(nèi)存中的某一標(biāo)志位,當(dāng)查詢到一幀解碼結(jié)束時(shí),,就啟動(dòng)LCD專用DMA,,在LCD上進(jìn)行顯示。
  DSP端:負(fù)責(zé)壓縮的解碼,。將壓縮碼流放置在SDRAM中,。與基于PC的解碼程序的主要區(qū)別在于,由于DSP的片內(nèi)內(nèi)存有限,,所以不可能將當(dāng)前幀以及參考幀都放在片內(nèi),,所以以宏塊為單位在SDRAM與片內(nèi)內(nèi)存之間進(jìn)行數(shù)據(jù)傳遞。另外,,由于在液晶屏上顯示時(shí)需要轉(zhuǎn)換成RGB圖像,,所以,在每一幀結(jié)束后都要通過YUV轉(zhuǎn)RGB來實(shí)現(xiàn)實(shí)時(shí)顯示,。
  4 實(shí)驗(yàn)結(jié)果
  在0MAP3530平臺(tái)上實(shí)現(xiàn)了AVS解碼,,表4給出了OMAP3530上的實(shí)驗(yàn)數(shù)據(jù)。
  
 
  結(jié)語
  TI公司提出的0MAP體系結(jié)構(gòu)開放性好,,在這種體系結(jié)構(gòu)下編寫的程序移植方便,,適合于多媒體平臺(tái)的應(yīng)用。越來越多的廠商選用OMAP芯片作為移動(dòng)多媒體視頻的載體,,OMAP與流行的視頻標(biāo)準(zhǔn)的結(jié)合在移動(dòng)通信與多媒體信號(hào)處理方面也將有良好的應(yīng)用前景,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。