基于SoC的MPEG-4視頻解碼加速器
引言
本文引用地址:http://dyxdggzs.com/article/170661.htm隨著(zhù)MPEG-4應用的普及, 符合MPEG-4標準的視頻在手持設備上的應用越來(lái)越廣泛, SoC技術(shù)可以在完成其它功能的同時(shí), 在手持設備上低成本低功耗的實(shí)現MPEG-4視頻解碼。而基于SoC的解碼方案可以有多種, 例如采用CPU 內核軟件解碼,也可引入DSP核, 或者設計專(zhuān)用的硬件加速電路。但是, 軟件解碼在系統繁忙時(shí)難以滿(mǎn)足實(shí)時(shí)性要求,引入DSP核會(huì )使SoC的芯片成本大為增加, 所以本文將MPEG-4的解碼電路作為SoC芯片中的一個(gè)硬件加速模塊來(lái)實(shí)現。
在手持設備應用中, MPEG-4 視頻簡(jiǎn)單層(Simple Profile) 最為常用, 而其中計算量最大的部分是反離散余弦變換( Inverse Discrete CosineTransform ) , 所以反離散余弦變換的實(shí)現是加速MPEG-4 解碼的關(guān)鍵。有很多優(yōu)秀的設計專(zhuān)門(mén)以處理IDCT為目標.本文描述的MPEG-4解碼加速器基于AMBA 總線(xiàn), 作為高速總線(xiàn)(AHB) 上的一個(gè)主設備, 對四個(gè)亮度塊(block) 和兩個(gè)色差塊組成的宏塊(macrob lock) 一起做IDCT 運算, 并根據配置完成IDCT前的反量化和IDCT后運動(dòng)補償的圖像疊加, 最終將結果寫(xiě)回顯存。整個(gè)過(guò)程高度并行處理。
本文第1部分主要介紹IDCT快速算法的選擇和優(yōu)化, 第2部分討論硬件結構和設計技巧, 第3部分介紹仿真驗證和綜合結果。
1 二維DCT?IDCT 算法描述及快速算法的選擇和優(yōu)化
1.1 算法描述
對于輸入矩陣f (x , y ) {0≤i, j N }, 它的離散余弦變換式如下:

反變換式如下:

直接計算IDCT , 每個(gè)象素點(diǎn)f ( i, j ) 都需要計算N2次乘法, 一個(gè)塊有N2 個(gè)象素點(diǎn), 總共需要N4 次乘法計算, 因此計算量相當大。
1.2 快速算法的選擇
二維IDCT 可以寫(xiě)成:

上式括號內是對F (u, v ) 的一行作一維IDCT 變換, 括號外是對行IDCT 的結果做一維列IDCT變換。如不考慮系數2/N , 二維的IDCT 就分解為對矩陣F (u, v ) 先做行IDCT 再做列IDCT 的2N 次一維IDCT 變換。(本文中取N = 8)。
對于一維IDCT 有許多優(yōu)秀的快速算法。其中一種是將IDCT 原始的變換矩陣分解成幾個(gè)利于計算的變換矩陣, 然后逐步計算。還有一種是利用了IDCT的奇偶對稱(chēng)性以及余弦函數的和差化積性質(zhì)最大程度的共用乘法器。雖然后一種的乘法次數為12次, 少于前一種的16次,但由于前一種的乘法集中在輸入附近, 也就是說(shuō)絕大部分乘法的其中一個(gè)乘數是輸入F(k ) , 因而可以通過(guò)提前判斷輸入F(k ) 中是否有較多的0 元素從而直接跳過(guò)一部分的乘加運算, 達到加速的目的。MPEG-4 解碼的IDCT 輸入中, 有大量的0, 所以前一種的算法更有利于MPEG-4 解碼。其算法流程如圖1。

圖1 chen 算法流程Ci= cos( iπ/16)
評論