任懷魯,張德學
(山東科技大學信息科學與工程學院,山東 青島 266590)
MPEG-4 AVC/H.264(以下簡稱為 H.264/AVC)標準[1]與 MPEG-2 標準相比,碼流節省了 50% 以上[2-3]。H.264標準中所用的編碼技術主要有幀內預測、運動估計、整形變換、環路濾波等。H.264/AVC性能的提高是以高復雜度和大運算量為代價的,為了能夠實時用H.264/AVC標準編碼圖像,人們對H.264/AVC的高效算法和硬件結構做了大量的工作。在這些工作中,很多研究者把重心放到了幀內4×4預測部分,這是因為幀內4×4預測在整個H.264/AVC標準中占有很大的比重,而且比較難以用硬件設計。
H.264/AVC預測編碼部分分為幀內預測和幀間預測,幀內預測用于減少視頻圖像空間上的冗余,幀間預測用于減少視頻圖像時間上的冗余。根據預測技術的不同,H.264/AVC中的圖像可以分為I,P,B幀,每一幀都由宏塊(16×16的像素塊)組成。宏塊可以分為幀內宏塊(以幀內預測技術編碼)和幀間宏塊(以幀間預測技術編碼)。I幀只由幀內宏塊組成,P幀和B幀可以由幀內宏塊或幀間宏塊組成。參考文獻[4]中的研究發現,在場景變換比較劇烈的視頻序列中,即使在P幀和B幀圖像中,幀內宏塊的數量也要高于幀間宏塊的數量。幀內宏塊按預測塊的大小又可分為幀內4×4宏塊(I4MB)和幀內16×16宏塊(I16MB)。其中在圖像細節比較細膩的圖像中幀內4×4宏塊將占據絕對大的比例。本文在H.264的參考軟件JM15.1中對foreman_cif碼流作了測試(IPPP,260幀,QP設為24),結果表明I4MB的比例占整個幀內宏塊數的85.9%。由此可見,幀內4×4預測在整個H.264/AVC視頻編碼過程中占有非常重要的地位。
但是I4MB宏塊中的各個4×4塊之間有著嚴重的數據依賴性,這使幀內4×4預測成為H.264/AVC編碼器中的一個主要瓶頸。在之前的設計中,主要有3種方法緩解幀內4×4預測過程中的數據依賴性問題:第一種方法是在幀內4×4預測的閑置周期中讓硬件執行幀內16×16預測[5-7],這可以提高硬件的利用率,但是它的關鍵路徑長度并沒有改變,不適用于高性能的視頻編碼器;第二種方法是重新對I4MB 的4×4塊進行重排序[8-9],它可以在一定程度上解決各個4×4塊間的數據依賴性問題,但是仍有至少5個4×4塊的數據依賴性問題它是解決不了的;第三種方法是采用原始圖像進行幀內預測[10-11],但是它會導致解碼端和編碼端的重構圖像不一致,有較大圖像PSNR損失。
針對這種情況,本文提出了一種新的硬件結構,在沒有明顯的圖像PSNR損失和沒有增加額外硬件資源的前提下,可以使硬件的利用率幾乎達到100%,使處理一個宏塊的時鐘周期數減少到215個。
一個I4MB可以分為16個4×4塊,編碼一個幀內4×4塊首先需要用各種模式執行幀內預測,進而進行模式判決,得出最佳模式,把用最佳模式預測出的像素與原始像素做差,把殘差傳送給重構循環模塊。由重構循環模塊得出的重構數據進一步作為之后4×4塊的參考像素。在DCT變換和量化之后的數據需輸出給之后的模塊(熵編碼)進行進一步處理。
幀內4×4預測以之前已經重構的邊沿像素作為參考像素,幀內4×4塊最多可以有13個參考像素,根據預測方向的不同幀內4×4預測有8種預測模式[3],此外幀內4×4預測還有一種沒有方向特性的DC模式(即是可得參考像素的平均值)。
對于每一個4×4塊都要用這9種模式遍歷執行幀內4×4預測,由模式判決算法選出最優預測模式[12]。模式判決所做的工作主要是評估幀內預測各種模式的SATD(Sum of Absolute Transformed Difference)值。T代表著Hadamard變換。
重構循環主要包括DCT變換、量化(Q)、反量化(IQ)和IDCT變換4個部分。在IDCT變換之后需把得出的殘差數據與預測像素相加,得出重構像素,一個4×4塊邊沿部分的重構像素(其位置如圖1所示)將作為之后4×4塊的參考像素。
I4MB的16個4×4塊是按照zig-zag的順序進行編碼的,如圖1a所示。在一個4×4塊進行預測之前必須保證相鄰的(左、上、右上、左上)4×4塊已經重構完成,這就導致相鄰的4×4塊之間有很復雜的數據依賴關系,如圖1b所示。在圖1b中,箭頭所指4×4塊必須等待箭頭開始端所在4×4塊完成重構循環之后才可進行預測。因此,幀內4×4預測(和模式判決)和重構循環之間無法用流水線的方式實現,它們之間只能串行執行(其時序如圖2a所示),這會導致編碼器的硬件利用率很低。而且由于幀內4×4預測模式比較多,I4MB分成的4×4塊也比較多,使整個宏塊的執行時間增長了1倍,已經成為了整個H.264編碼器中的瓶頸。

圖1 4×4塊掃描順序和數據依賴關系
在之前針對幀內4×4預測的研究中,或者沒能徹底解決幀內4×4預測的關鍵路徑過長的問題,或者使圖像的質量有較大損失。為了解決1.2節中所分析的數據依賴性問題,又不令圖像的質量有較大損失,筆者提出以下解決方案:在模式判決時使用原始圖像進行幀內預測,當模式判決完成后,上一個4×4塊的重構數據也已經準備好,再用重構像素和選擇的最佳模式進行一次幀內預測,把得到的預測數據和殘差數據交給重構循環模塊,而幀內預測和模式判決模塊則在同時對下一個4×4塊用原始圖像預測并進行模式判決。此方法可使幀內預測(帶模式判決)模塊和重構循環模塊完全流水線化,同時又克服了文獻[10-11]中用原始圖像預測所導致的編碼端和解碼端重構數據不一致的問題,減少了圖像PSNR損失(時序見圖2b)。

圖2 幀內4×4預測原始時序和所提出方案的流水線時序
筆者提出的幀內4×4預測整體結構如圖3所示,與傳統的幀內預測結構相比,主要不同是:采用16像素并行結構,1個周期可以生成16個預測像素和16個重構像素;用原始圖像進行模式判決,用重構圖像進行幀內4×4預測,幀內4×4預測模塊和重構循環模塊完全流水線執行。這樣1個4×4塊可在13個時鐘周期內生成最佳預測數據,1個宏塊可以在215個時鐘周期內完成整個幀內4×4預測過程。以下對其中的主要模塊進行介紹。

圖3 所提出的幀內4×4預測整體結構
幀內預測算法[3]主要就是以2抽頭或者3抽頭濾波器組成,為了提高硬件的利用率,筆者設計了一種通用的可處理所有幀內4×4預測模式的濾波器,如圖4所示。而且幀內4×4預測的算法中并不是所有位置的像素都各不相同,各種模式最多只有13個各不相同的值,由此最多只需用13個如圖4a所示的PE濾波器就可以了。幀內4×4預測的整體結構如圖4b所示。

圖4 提出的幀內4×4處理單元和16并行預測結構
整個重構循環模塊也是16像素并行的,其結構如圖5所示。重構循環模塊的IDCT與DCT模塊結構相同,反量化(IQ)和量化(Q)模塊結構相似,所以圖5只給出了DCT變換和量化模塊的詳細結構圖。首先一個二維DCT變換可變換成兩個一維的DCT變換,一維的DCT變換也可以采用蝶形結構分兩級完成,其結構如圖5所示。筆者采用的DCT變換結構有8個一維DCT變換模塊,其中4個做行變換,4個做列變換,中間的交叉互聯(cross connection)結構可實現DCT變換中間參數的行列轉換。量化模塊的處理單元參照參考文獻[1]中所述算法設計,量化模塊除量化處理單元外還包括一個存儲H.264/AVC標準中的量化矩陣的ROM和一個用于計算量化過程中所需參數的參數計算器(Parameters Calculator)。量化模塊有16個并行的處理單元,可并行處理16個像素。

圖5 重構循環模塊
對于第3節中所提出的算法,基于H.264/AVC的參考軟件JM15.1進行了測試。其主要參數配置是:測試序列 foreman_cif,260 幀,全I幀,30 f/s(幀/秒)。在QP 從4變化到48時所提算法與JM15.1參考算法的PSNR變化如圖6所示。結果顯示所提出的算法與JM15.1中的參考算法平均只有0.03 dB的PSNR損失。

圖6 所提算法在各種QP下的PSNR值及與JM15.1中的比較
對提出的幀4×4預測的硬件結構用SMIC 0.13 μm工藝庫進行了綜合。結果顯示,在SMIC 0.13 μm工藝下,用synopsys的DC綜合工具把時鐘約束設為250 MHz時,所需門數為116000(以一個NAND2X1為單位),它與之前相關設計的對比如表1所示。

表1 所提出幀內4×4預測結構的性能及與之前工作的對比
文獻[5]中由于沒有處理好幀內4×4預測的數據依賴問題,它處理一個宏塊的時間很長;文獻[10]和[11]都是采用原始圖像預測,圖像質量損失比較大;文獻[13]為了減少幀內4×4預測的延遲采用了多了幀內4×4預測核并行執行的方法,但是這使面積有了很大的增加。
針對H.264/AVC標準中幀內4×4預測過程中所存在的數據依賴性問題,本文中提出了一種新的解決方案,它通過使用原始像素進行模式判決和使用重構像素進行幀內預測的方法,使幀內預測和重構循環可以采用流水線技術執行,同時與直接用原始圖像做幀內預測的方案相比又有效地減少了圖像的PSNR損失。本設計采用了16像素并行結構,此結構可以在215個時鐘周期內完成一個宏塊的幀內預測。最后,本文對所設計的結構面向ASIC作了綜合,與以往的相關工作相比較,結果顯示本設計在沒有增加額外的資源的情況下,達到了更高的性能。
[1]ITU-T Rec.H.264/AVC.Advanced video coding for generic audiovisual services[S].2005.
[2]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE TCSVT,2003,13(7):560-576.
[3]蘇磊,李國源,張家謀.基于幀內空間域預測的快速文理逼近算法[J].電視技術,2004,28(9):11-14.
[4]SHAFIQUE M,BAUER L,HENKEL J.A parallel approach for high performance hardware design of intra prediction in H.264/AVC video codec[C]//Proc.IEEE DATE 2009.[S.l.]:IEEE Press,2009:1434-1439.
[5]HUANG Y W,HSIEH B Y,CHEN T C,et al.Analysis,fast algorithm,and VLSI architecture design for H.264/AVC intra frame coder[J].IEEE TCSVT,2005,15(3):378-401.
[6]KU C W,CHENG C C,YU G S,et al.A high-definition H.264/AVC intra-frame codec IP for digital video and still camera applications[J].IEEE TCSVT,2006,16(8):917-928.
[7]LIN Y K,KU C W,LI D W,et al.A 140-MHz 94 k gates HD1080p 30-frames/s intra-only profile H.264/AVC encoder[J].IEEE TCSVT,2009,19(3):432-436.
[8]SMAOUI S,LOUKIL H,BEN ATITALLAH A,et al.An efficient pipeline execution of H.264/AVC intra 4x4 frame design[C]//Proc.20107th International Multi-Conference on Systems Signals and Devices(SSD).[S.l.]:IEEE Press,2010:1-5.
[9]JIN G H,JUNG J S,LEE H J.An efficient pipelined architecture for H.264/AVC intra frame processing[C]//Proc.IEEE ISCAS 2007.[S.l.]:IEEE Press,2007:1605-1608.
[10]CHUANG T D,CHEN Y H,TSAI C H,et al.Algorithm and architecture design for intra prediction in H.264/AVC high profile[EB/OL].[2011-05-01].http://video.ee.ntu.edu.tw/publication/paper/[C][2007][PCS][Tzu-Der.Chuang][1].pdf.
[11]DING L F,CHEN W Y,TSUNG P K.A 212 Mpixels/s 4096 imes 2160p multiview video encoder chip for 3D/quad full HDTV applications[J].IEEE Journal of Solid-State Circuits,2010,45(1):46-58.
[12]王海勇,孫雁飛,吳啟宗.H.264編碼中幀內預測算法研究[J].電視技術,2009,33(8):9-12.
[13]KUO H C,LIN Y L.An H.264/AVC full-mode Intra-frame Encoder for 1080HD Video[C]//Proc.IEEE ICME 2008.[S.l.]:IEEE Press,2008:1037-1040.