《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > AVS解碼器中幀內(nèi)預測模塊的設計與實現(xiàn)

AVS解碼器中幀內(nèi)預測模塊的設計與實現(xiàn)

2009-05-27
作者:袁 鯤,張衛(wèi)寧,李曉燕,趙建全

  摘 要: 闡述了AVS視頻解碼器的總體框架,詳細分析了幀內(nèi)預測的原理與算法,提出了一種可行的幀內(nèi)預測解碼器的硬件設計, 給出了每一模塊的功能和結(jié)構(gòu)的詳細介紹,并建立了一種高效的存儲機制。通過FPGA平臺的驗證,表明本設計完全滿足AVS標清視頻的實時解碼要求。
  關鍵詞: 音視頻編碼標準;解碼器;幀內(nèi)預測; 現(xiàn)場可編程門陣列

?

  隨著信息技術(shù)和計算機互聯(lián)網(wǎng)的飛速發(fā)展,多媒體信息已成為人類獲取信息的重要載體。經(jīng)數(shù)字化處理后的多媒體信息具有易加密、抗干擾、可再生等優(yōu)點,但其數(shù)據(jù)量大的特點也對信息存儲設備及通信網(wǎng)絡均提出了很高要求。因此,尋找更有效的編解碼技術(shù)已成為目前電子領域的主要研究問題之一。
  AVS(Audio Video Coding Standard)標準是由中國數(shù)字音視頻編解碼技術(shù)標準工作組(簡稱AVS工作組)提出、具有自主知識產(chǎn)權(quán)的數(shù)字音視頻編解碼技術(shù)標準。AVS標準包括系統(tǒng)、視頻、音頻、移動視頻等9個部分,其中《第2部分 視頻》[1](簡稱AVS視頻)于2006年3月實施, 主要面向高清晰度和高質(zhì)量數(shù)字電視廣播、數(shù)字存儲媒體和其他相關應用。它具有四個主要特點[2]:(1)先進性,以H.264標準為起點,選用的技術(shù)具有國際前沿水平;(2)性能高,編碼效率比MPEG-2高2倍以上,與H.264的編碼效率相當;(3)復雜度低,算法復雜度明顯低于H.264;(4)專利授權(quán)模式簡單,費用明顯低于同類標準。
  本文就AVS解碼器的幀內(nèi)預測模塊的設計與實現(xiàn)進行討論,介紹了AVS解碼器總體設計的架構(gòu)和各功能模塊。在介紹了幀內(nèi)預測原理的基礎上,詳細描述了一種適于AVS幀內(nèi)預測解碼的硬件實現(xiàn)方法,提出了可行的流水線并行操作與存儲機制。最后給出了實驗數(shù)據(jù)與仿真波形。
1 解碼器總體設計結(jié)構(gòu)
  解碼器的結(jié)構(gòu)[3]由系統(tǒng)控制模塊(System controller)和各功能模塊(Data processing)兩大部分組成,如圖1所示。

  功能模塊之間的數(shù)據(jù)以8×8塊為單位流水處理,輸入的碼流經(jīng)過變長解碼模塊VLD(Variable Length Decoder)解析后,一部分反饋給系統(tǒng)控制模塊,該模塊可以接收標志信號、轉(zhuǎn)換相應控制狀態(tài)、發(fā)出使能信號、并統(tǒng)一時序等,控制各功能模塊之間的數(shù)據(jù)傳遞與通信;一部分經(jīng)過反掃描模塊IZZ(Inverse ZigZag)、反量化模塊IQ(Inverse Quantizer)和反變換模塊IT(Inverse Transformer)恢復原始殘差數(shù)據(jù);一部分經(jīng)過幀間預測(interframe prediction)或者幀內(nèi)預測IPRED(Intraframe PREDiction)模塊恢復預測值,并與殘差值疊加,由環(huán)路濾波模塊LF(Loop Filter)處理, 重建的數(shù)據(jù)回寫入WB(Write Back)SDRAM,為顯示(Display)輸出使用和后續(xù)的預測提供參考。
2 幀內(nèi)預測模塊的原理與設計
  幀內(nèi)預測技術(shù)是一項提高I幀壓縮性能的關鍵技術(shù)。幀內(nèi)預測的壓縮原理是利用圖像內(nèi)部特別是圖像平滑部分相鄰像素間的相關性來降低編碼碼率,也就是通過減少空間冗余來實現(xiàn)壓縮的目的。
2.1 幀內(nèi)預測原理
  幀內(nèi)預測是利用當前塊左邊和上邊可用的相鄰塊的邊緣像素進行預測,得到當前塊的預測值,再將預測值與實際的像素值相減得到預測殘差。編碼時只對量值較小的預測殘差進行熵編碼,以減少碼流的大小,這樣就可以達到既精確又高效的壓縮目的。
  解碼時用已解碼的相鄰塊邊緣像素值和當前塊的預測模式求得當前塊的預測值,再與IT、IQ處理后恢復的殘差值疊加,即可重構(gòu)原始圖像像素值。這里用作參考的像素值是沒有經(jīng)過環(huán)路濾波的數(shù)據(jù),環(huán)路濾波過程要在一幀的數(shù)據(jù)預測完成時才進行。
2.2 AVS幀內(nèi)預測算法
  AVS解碼器的幀內(nèi)預測都是以8×8塊為單位,分為亮度(luma)和色度(chroma)預測兩種,如圖2所示。其中,色度預測包括17個參考像素點,有4種預測模式;亮度預測包括33個參考像素點,有5種預測模式。

  亮度和色度的某些預測模式相同,綜合起來包括以下6種[1](其中,r[i]和c[i](i=0~16)分別為上邊和左邊參考像素點(r、c可表示亮度或色度),預測完成后得到一個8×8的預測樣本矩陣predMatrix):
  (1)Vertical模式
  若r[i](i=1~8)可用,則利用上邊沿像素垂直預測:
  predMatrix[x,y]=r[x+1](x,y=0~7)
  (2)Horizontal模式
  若r[i](i=1~8)可用,則利用左邊沿像素水平預測:
  predMatrix[x,y]=c[x+1](x,y=0~7)
  (3)DC預測模式
  (a)若r[i]、c[i](i=0~9)都可用,則利用當前像素值對應上邊、左邊參考像素的低通濾波值預測:
  predMatrix[x,y]=((r[x]+2×r[x+1]+r[x+2]+2)>>2+(c[y]+2×c[y+1]+c[y+2]+2)>>2)>>1(x,y=0~7);否則
  (b)若r[i](i=0~9)可用,則利用當前像素值對應上邊參考像素的低通濾波值預測:
  predMatrix[x,y]=(r[x]+2×r[x+1]+r[x+2]+2)>>2
 ?。▁,y=0~7);否則
  (c)若c[i](i=0~9)可用,則利用當前像素值對應左邊參考像素的低通濾波值預測:
  predMatrix[x,y]=(c[y]+2×c[y+1]+c[y+2]+2)>>2
  (x,y=0~7);否則
  (d)predMatrix[x,y]=128(x,y=0~7)。
  (4)Down_left預測模式
  若r[i]、c[i](i=1~16)均可用,則利用當前像素所在的對應連線兩端的參考像素的低通濾波值預測為:
?  predMatrix[x,y]=(r[x,y+1]+2×r[x,y+2]+r[x,y+3]+2)>>2+(c[x,y+1]+2×c[x,y+2]+c[x,y+3]+2)>>2)>>1(x,y=0~7)
  (5)Down_right預測模式
  若r[i]、c[i](i=0~16)均可用,則利用當前像素所在的對應連線頂端的參考像素的低通濾波值預測:
  如果x=y,predMatrix[x,y]=(c[1]+2×r[0]+r[1]+2)>>2
 ?。▁,y=0~7);
  如果x>y,predMatrix[x,y]=(r[x-y+1]+2×r[x-y]+r[x-y-1]+2)>>2(x,y=0~7);
  如果y>x,predMatrix[x,y]=(c[y-x+1]+2×c[y-x]+c[y-x-1]+2)>>2(x,y=0~7)。
  (6)Plane預測模式
  若r[i]、c[i](i=1~8)均可用,
?  predMatrix[x,y]=Clip1((ia+(x-3)×ib+(y-3)×ic+16)>>5)(x,y=0~7)。
  
???
2.3 幀內(nèi)預測的硬件設計
  文中所設計的幀內(nèi)預測總體結(jié)構(gòu)如圖3所示。包括三部分:TopIICT模塊、TopIntrapred模塊和Topcombination模塊。TopIICT模塊完成經(jīng)過反整數(shù)余弦變換IICT(Inverse Integer Cosine Transformer)求得殘差數(shù)據(jù);TopIntrapred模塊完成由預測模式和相鄰參考值求得預測值;Topcombination模塊完成對上述兩組數(shù)據(jù)的重建,恢復原始數(shù)據(jù)并存儲。因為對于4:2:0采樣格式的視頻序列,一個宏塊的亮度包含四個8×8塊,而兩個色度均只包含一個8×8塊的特點,這就決定了一個宏塊的亮度和兩種色度預測是可以并行執(zhí)行的,所以如圖3的總體結(jié)構(gòu)對亮度和色度均適用。其中加入FIFO的設計是為了緩沖兩路數(shù)據(jù),并統(tǒng)一時序,使系統(tǒng)能夠并行操作。

?

2.3.1 TopIICT子模塊結(jié)構(gòu)
  TopIICT模塊是幀內(nèi)和幀間預測都會使用到的模塊,并且由于其復雜的運算過程使得其耗時較多,其他與之并行的模塊都要等待該模塊,以便統(tǒng)一時序進行下一步處理。該模塊設計的效率偏低,不僅會影響系統(tǒng)效率,還會造成存儲其他等待數(shù)據(jù)對空間的占用和浪費。因此,本文針對該模塊提出了如圖4所示的一種高效可行的并行流水操作的硬件設計方法。

?


  處理的數(shù)據(jù)以8×8塊為單位,TopIICT模塊在第一個時鐘以8×16 bit并行接收一組8個像素的數(shù)據(jù),送入第一級的行處理子模塊row1,并由EN1sign控制模塊控制行處理子模塊rowN(N=2~8),對接下來7個時鐘依次接收的7組行數(shù)據(jù)流水處理。同樣,由EN2sign控制模塊控制第二級的列處理子模塊colN(N=1~8),對第一級的數(shù)據(jù)按列重分組后流水處理,最后由Rdsign控制模塊控制第二級的數(shù)據(jù)再次按行重分組,從位寬8×9 bit的輸出端口經(jīng)過八個時鐘串行輸出,完成對一個8×8塊的變換。由于設計中前兩級都采用了流水例化8個子模塊,使得8組數(shù)據(jù)可以在系統(tǒng)中并行操作,雖然硬件開銷有所增加,但實驗表明,TopIICT模塊的運行速度顯著提高。
2.3.2 TopIntrapred子模塊結(jié)構(gòu)
  前面指出,由于亮度和色度預測模式具有相容性,所以可以將兩種預測設計在一個模塊中,如圖5所示。


  設計中,Blockjudge子模塊的功能是由系統(tǒng)計數(shù)的BlockNum變量判斷當前塊在一幀圖像中的位置,從而決定當前塊的相鄰塊邊緣像素的可用性,為下一子模塊提供參考像素。Intrapred子模塊的功能是利用參考像素值及其可用性,結(jié)合解析出來的預測模式語法元素,共同求得當前塊的預測值。其中,六種預測模式都已并行掛起,某個塊具體解碼時由當前塊的預測模式所決定。該部分設計同樣是以8×8塊為單位,一個8×8塊的預測結(jié)束后,位寬8×8bit的輸出端口由8個時鐘依次輸出得到的8組行數(shù)據(jù)。
2.3.3 Topcombination子模塊及存儲機制
  該部分主要實現(xiàn)將預測值和殘差值兩組數(shù)據(jù)的疊加,重建原始數(shù)據(jù)并存儲于RAM空間。對處理完的數(shù)據(jù)存儲有兩條途徑:一是將所有數(shù)據(jù)存儲于外部RAM空間,以備幀間預測時用作參考像素,或是一幀像素存儲完成后進行環(huán)路濾波;二是將當前塊的邊緣像素存儲于片內(nèi)RAM,以備當前幀其他塊幀內(nèi)預測時用作參考像素,避免因頻繁從外部RAM讀取數(shù)據(jù)造成的耗時。以色度Cb的存儲機制為例介紹,如圖6所示。

  對于4:2:0采樣格式的視頻序列,一個宏塊的亮度對應一個8×8塊的色度,所以設計中開辟的片內(nèi)RAM空間位寬64 bit,深度由一幀圖像以亮度宏塊為單位的長度LengthinMB決定,大小為2×LengthinMB+1。其中,地址addr0始終用來存儲每個色度塊的最右列的八個重建后的像素值。由于重建的過程以行數(shù)據(jù)為基本單位,所以要等一個塊的最后一行數(shù)據(jù)重建完才能將每一行的最后一個重建值組成一個新的64 bit數(shù)據(jù)存入addr0。由于每一個塊的最右列像素僅被其右邊的一個塊用作參考像素,且右邊塊在解碼順序上又是緊接著當前塊,所以每個預測完成塊的最右列都可以覆蓋前一塊的最右列的存儲地址,使該空間重復利用以達到節(jié)省的目的。而一幀圖像每一行最后一個塊的右邊緣不再存入addr0,而是以0x80代替,以便下一行第一個塊使用。
  地址addrN(N=2M-1,M=1~LengthinMB)用來存儲一行LengthinMB個塊的每個塊最下列八個像素,以備下一行對應塊用作參考,且在下一行對應塊最下列重建后被覆蓋。因為當前塊的最下列要等待一行的數(shù)據(jù)重建后才會被下一行的對應塊用作參考像素。
  而地址addrN(N=2M,M=1~LengthinMB)則是用來存儲一行LengthinMB個塊的每塊右下一個像素,以備下一行對應塊的右邊塊用作左上參考值。由于該像素的特殊性,對于這些數(shù)據(jù)的存儲也要特殊對待。在當前塊重建完成并存儲該像素點于對應地址之前,先將對應地址的原數(shù)據(jù)左移8位,以備下一塊用作左上參考值,再將當前塊該像素存入對應地址的低8位。當重建一幀圖像的最后一行的塊時,用0x80代替最下列和右下像素,以便下一幀第一行塊的使用。
  色度Cr的存儲機制與Cb完全相同,且二者是順序執(zhí)行的,而亮度也和色度的存儲機制基本一致,且與色度并行。只是由于亮度預測需要更多的參考點,RAM空間的深度也要相應增加。這一片內(nèi)RAM存儲機制的建立,大大減少了系統(tǒng)與外部RAM的數(shù)據(jù)通信,縮短了系統(tǒng)的運行周期,有助于實時性的提高。
3 實驗結(jié)果
  按此方案設計的幀內(nèi)預測解碼單元,在Xilinx的ISE環(huán)境下,用Verilog HDL硬件描述語言實現(xiàn),并采用Xst工具進行綜合, Modelsim工具進行仿真,與C語言實現(xiàn)的AVS解碼器參考代碼 rm52j 的中間結(jié)果進行比較,結(jié)果表明二者完全一致。該設計完全滿足幀內(nèi)預測解碼器的要求,仿真結(jié)果如圖7所示。

?


  根據(jù)AVS幀內(nèi)預測的特點,提出了一種AVS幀內(nèi)預測解碼器的硬件結(jié)構(gòu),充分利用了流水線、并行、資源復用等設計思想,并盡可能少使用存儲器資源,非常適合于ASIC設計。用Xilinx公司的Virtex4系列的XC4VSX35型FPGA,綜合出來的頻率達到133 MHz,完全滿足AVS標準清晰度(720×576,30 f/s)視頻的實時解碼要求。


參考文獻
[1] 數(shù)字音視頻編碼技術(shù)標準工作組.信息技術(shù) 先進音視頻編碼 第2部分:視頻(GB/T 200090.2-2006).中國國家標準化管理委會,2006.
[2] 生濱.AVS視頻編解碼芯片關鍵部件的體系結(jié)構(gòu)研究與設計博士畢業(yè)論文.
[3] 胡倩,張珂,虞露.AVS 視頻解碼器的一種結(jié)構(gòu)設計與硬件實現(xiàn)[J].浙江大學工學報,2006(12).
[4] 高文,黃鐵軍.信源編碼標準AVS及其在數(shù)字電視中的應用[J].電視技術(shù),2003(11).
[5] 王爭,劉佩林.AVS幀內(nèi)預測算法及其解碼器的硬件實現(xiàn)[J].計算機工程與應用,2006(19).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。