《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于TMS320DM642的AVS實時解碼軟件優(yōu)化
基于TMS320DM642的AVS實時解碼軟件優(yōu)化
摘要: 本文把AVS解碼軟件移植到TMS320DM642平臺上,并進行了優(yōu)化,。編碼數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給DM642,,完成視頻解碼后輸出到顯示器。目前,,對于標(biāo)清視頻(720×576),,解碼速度達到了30fps,完全滿足實時需求,。
Abstract:
Key words :

  AVS是中國自主制定的第二代音視頻編碼標(biāo)準(zhǔn),。從編碼效率上看,AVS與H.264/AVC相當(dāng),,比MPEG-2高兩倍,;從編碼的復(fù)雜度上看,AVS的編碼復(fù)雜度相當(dāng)于H.264的70%,,解碼復(fù)雜度相當(dāng)于H.264的30%,。同時,AVS不需要交納高額的專利費用,,具有很廣闊的市場前景,,如:數(shù)字音視頻存儲、IPTV和視頻監(jiān)控等,。

  TMS320DM642是TI公司推出的一款面向多媒體信號處理的DSP,,采用了C64x核。它具有極強的處理能力,、高度的靈活性和可編程性,,同時又集成了音視頻和網(wǎng)絡(luò)通信等外設(shè),特別適用于多媒體通信應(yīng)用,。DM642可應(yīng)用于基于IP的音視頻傳輸,、數(shù)字視頻記錄、機器視覺,、醫(yī)學(xué)成像,、安全監(jiān)視和數(shù)字相機等領(lǐng)域。

  本文把AVS解碼軟件移植到DM642平臺上,,并進行了優(yōu)化,,對于標(biāo)清視頻,解碼速度達到30fps,,完全滿足實時播放的要求,。

  AVS標(biāo)準(zhǔn)

  AVS的解碼過程如圖1所示。

<a class=AVS解碼器" border="0" height="146" hspace="0" src="http://files.chinaaet.com/images/20100812/1108e0f1-19a6-476b-ba9a-2fbd144daf73.jpg" width="500" />

圖1 AVS解碼器

  AVS視頻編解碼標(biāo)準(zhǔn)中的核心技術(shù)包括:幀內(nèi)預(yù)測,、1/4精度像素插值,、特殊的幀間預(yù)測運動補償,、8×8整數(shù)變換、量化,、二維熵編碼和去塊效應(yīng)環(huán)內(nèi)濾波等,。

  AV

 

S亮度和色度幀內(nèi)預(yù)測都是以8×8塊為單位的。亮度塊采用5種預(yù)測模式,,色度塊采用4種預(yù)測模式,。在編碼效率基本相同的情況下,AVS采用了更少的預(yù)測模式,,使算法的復(fù)雜度大大降低,。

 

  對于幀間的運動補償,AVS采用了4種塊:16×16,,16×8,,8×16及8×8,可以更好地刻畫物體運動,,提高運動搜索的準(zhǔn)確性,,同時降低了運動矢量和塊模式傳輸?shù)拈_銷,從而提高壓縮效率,,降低了編解碼實現(xiàn)的復(fù)雜度,。AVS與H.264、MPEG-4一樣,,采用了1/4像素插值,,但與H.264的6抽頭1/2像素插值和雙線性1/4像素插值不同,AVS采用了兩種4抽頭濾波器對1/2和1/4像素進行插值,,在不降低性能的情況下減少了插值所需要的參考像素點,,減小了數(shù)據(jù)存取帶寬需求。

  8×8的整數(shù)變換可以在16位處理器上無失真的實現(xiàn),,克服了早期的8×8變換不能無失真的缺點,,同時又比H.264中4×4的整數(shù)變換有更好的去相關(guān)性。

  在AVS熵編碼過程中,,所有的語法元素和殘差數(shù)據(jù)都是以指數(shù)哥倫布碼的形式映射成二進制比特流。采用指數(shù)哥倫布碼的優(yōu)勢在于:一方面,,它的硬件復(fù)雜度比較低,,可以根據(jù)閉合公式解析碼字;另一方面,,它可以根據(jù)編碼元素的概率分布,,靈活地確定以k階指數(shù)進行哥倫布碼編碼,如果k選得恰當(dāng),,則編碼效率可以逼近信息熵,。利用解碼后的數(shù)據(jù),,通過查表得到殘差數(shù)據(jù)。

  AVS采用了兩個級別的環(huán)路濾波,,只對邊界的兩個像素進行濾波,。與H.264的4個級別和邊界3個像素的環(huán)路濾波相比,復(fù)雜度大為降低,。

  TMS320 DM642平臺

  TMS320DM642/C64x系列芯片基于超長指令字結(jié)構(gòu)VelociTI.2,,在8個功能單元里擴展了88條新的指令,以增強其在視頻/圖像應(yīng)用中的性能,,并提高了視頻處理的并行性,。

  本文的實驗平臺采用SEED公司的VPM642板卡,其主要配置如下:600MHz的TMS320DM642 DSP芯片,;DM642外部擴展4MB Flash, 32MB SDRAM,,可用于大量視頻圖像數(shù)據(jù)和程序的存儲;4路視頻端口(PAL/NTSC制式或S端子),;10/100M以太網(wǎng)接口,;板上JTAG仿真接口,通過JTAG仿真器可以方便地進行視頻壓縮算法的仿真調(diào)試,。

  AVS在DM642上的實時解碼

  針對DSP的特點,,本文采用了大量行之有效的優(yōu)化方法,使得解碼速度大大提升,。除了使用C6000編譯器提供的編譯選項-pm,、-o3、-no debug以外,,其他優(yōu)化措施主要包括以下幾個方面,。

  程序結(jié)構(gòu)的調(diào)整

  為了滿足DSP結(jié)構(gòu)的需要,本文對AVS解碼軟件的程序結(jié)構(gòu)進行了調(diào)整,。

  PC上的程序是在解碼一幀后再進行環(huán)路濾波,,需要兩次把數(shù)據(jù)從片外搬移到片內(nèi)。本文對此進行了修改,,在每個宏塊解碼完成以后就對該宏塊進行濾波,。如圖2所示。

環(huán)路濾波示意圖

圖2 環(huán)路濾波示意圖

  在解碼一個宏塊完成以后,,先對每個8×8亮度塊的垂直邊界BsV00,、BsV01、BsV10,、BsV11和色度塊BsV00(U),、BsV01(V)進行濾波,濾波的結(jié)果作為輸入,再對水平邊界進行濾波,。

  使用內(nèi)聯(lián)指令和數(shù)據(jù)打包

  C6000編譯器提供了許多內(nèi)聯(lián)函數(shù)(instrinsics),,如_add2、_avgu4,、_dotpsu4等,。內(nèi)聯(lián)函數(shù)是直接與C6000匯編指令映射的在線函數(shù)。不易用C/C++語言實現(xiàn)功能的匯編指令都有對應(yīng)的內(nèi)聯(lián)函數(shù),。

  對C6000的存儲器進行訪問是很費時的,。要提高C6000的數(shù)據(jù)處理效率,應(yīng)使1條Load/Store指令能夠訪問多個數(shù)據(jù),。當(dāng)程序需要對一連串的字符型,、短型數(shù)據(jù)進行訪問時,可以使用數(shù)據(jù)打包,,一次讀寫4個字符型,、2個短型數(shù)據(jù),并使用_dotpsu4,、_add2等指令進行處理,。

 

  本文在優(yōu)化過程中廣泛采用了內(nèi)聯(lián)指令和數(shù)據(jù)打包,對于水平位置1/2像素插值,,使用內(nèi)聯(lián)指令和數(shù)據(jù)打包的效果如表1所示,。

  使用線性匯編

  經(jīng)過C語言優(yōu)化的解碼程序如果仍然達不到實時的要求,則需要繼續(xù)進行匯編優(yōu)化,。與標(biāo)準(zhǔn)的匯編語言相比,,采用線性匯編語言進行編程不用考慮并行指令的安排、指令延遲和寄存器的使用,,以上工作均由匯編優(yōu)化器自動完成,,而且,所產(chǎn)生的代碼效率可以達到手工匯編的95%~100%,。

  由于IDCT在程序中使用頻繁,,比較占用時間,且程序相對簡單,。本文對此進行了線性匯編優(yōu)化,,優(yōu)化前和優(yōu)化后的時間比較見表2。

  QDMA的合理使用

  QDMA(快速存儲器直接訪問)是DMA和EDMA的進一步發(fā)展,,其提交傳輸申請的速度比DMA和EDMA快很多,。實際上,QDMA是C6000中搬移數(shù)據(jù)效率最高的手段之一,。QDMA支持靈活的數(shù)據(jù)傳輸,它可以完成一維到一維的數(shù)據(jù)傳輸,也可以完成二維到一維或一維到二維的數(shù)據(jù)傳輸,。

  對于數(shù)據(jù)量較大的傳輸,,要盡量采用

 

QDMA。本文對QDMA進行了實驗,,在將兩場數(shù)據(jù)合并為一幀數(shù)據(jù)時,,分別采用memcpy和QDMA,其時間統(tǒng)計見表3,。

 

  Cache的合理分配

  TMS320DM642提供了256KB的片上RAM,,它既可以當(dāng)作普通RAM使用,也可以配置為Cache,。DM642的Cache設(shè)置可以是32KB,、64KB、128KB,、256KB不等,。設(shè)置的Cache越大,命中率越高,,但留給程序使用的片內(nèi)RAM也就越少,。為了可以把使用頻率較高的數(shù)據(jù)和代碼放置在片內(nèi),本文采用了128KB的Cache和128KB片內(nèi)RAM的配置方案,。

  采用了以上的優(yōu)化策略,,AVS標(biāo)清視頻在DM642上的解碼速度達到30fps,完全滿足了IPTV(25fps)實時播放的要求,。

  結(jié)語

  AVS解碼在DSP上的實時實現(xiàn)具有重要的意義,,它可以應(yīng)用到IPTV、數(shù)字視頻監(jiān)控等領(lǐng)域,,具有很好的市場應(yīng)用前景,。

  參考文獻

  1. 李方慧等. TMS320C6000系列DSPs原理與應(yīng)用(第2版). 電子工業(yè)出版社,2005年6月

  2. 中華人民共和國國家標(biāo)準(zhǔn)信息技術(shù) 先進音視頻編碼 第2部分:視頻 2006年2月

  3. 楊陽,基于OMAP平臺的AVS解碼實現(xiàn). 電子設(shè)計應(yīng)用,,2006.No.4

  4. 畢厚杰. 新一代視頻壓縮編碼標(biāo)準(zhǔn)—H.264/AVC. 人民郵電出版社,,2005(M)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。