摘 要: 提出了一種可配置的整數(shù)變換運算單元并將其用于H.264/AVC High Profile視頻編碼器的自適應變換模塊中。通過變換類型信號的配置,該變換單元可以完成相應的變換操作。本設計采用Altera公司的Cyclone II系列FPGA進行實現(xiàn)和驗證,布局布線后的最大工作頻率為63 MHz,采用4個可配置變換單元的變換模塊,可以滿足HD1080P@50幀/s視頻的實時編碼要求。
關鍵詞: 自適應變換;硬件復用;離散余弦變換;哈達瑪變換;H.264 High Profile視頻編碼器
2004年7月,JVT組織發(fā)布了H.264/AVC標準的高保真度擴展(FRExt)部分,該部分引進了自適應尺寸變換(ABT)[1],變換類型由4×4變換改為可以在4×4和8×8變換之間進行自適應選擇。
采用幀內4×4和幀內16×16預測模式得到的亮度分量預測殘差進行4×4 DCT;采用幀內8×8預測模式得到的亮度分量預測殘差進行8×8 DCT。采用幀間預測模式得到的亮度分量預測殘差,如果預測模式塊不大于8×8,則使用4×4 DCT,否則編碼器需要在4×4 DCT和8×8 DCT之間進行選擇。色度分量預測殘差全部使用4×4 DCT。H.264參考軟件JM采用的變換類型選擇算法是:分別求一個宏塊的亮度分量預測殘差的4×4 SATD和8×8 SATD,選取SATD值小的變換尺寸為離散余弦變換的變換尺寸。
1 可配置的變換運算單元的設計
該可配置的變換運算單元能根據(jù)配置信號完成二維的4×4正、反變換操作和一維的8×8正、反變換變換操作。這個運算單元的多個例化構成用于整個編碼器中的自適應變換模塊。
1.1 前向變換
(1)4×4整數(shù)余弦變換:根據(jù)矩陣理論中的克羅內克積和矩陣的對稱性[2],二維4×4 DCT能夠寫成:
(3)8×8整數(shù)余弦變換:通過二維變換的行列分解,二維4×4 DCT能夠寫成二維8×8 DCT:
Y8=Cf8X8Cf8T=Cf8(Cf8X8T)T(3)
參考文獻[3]給出了快速1D 8×8整數(shù)余弦變換算法。
(4)整合的前向變換單元:通過運算資源共享,式(1)、式(2)、式(3)中的運算能用同一個結構實現(xiàn),如圖1所示。對于4×4變換,當PHASE=1時,第一級運算為加法運算,得到的是一個4×4二維變換系數(shù)塊的第0行和第2行數(shù)據(jù);當PHASE=0時,第一級運算為減法運算,得到的是一個4×4二維變換系數(shù)塊的第1行和第3行數(shù)據(jù)。在最后一級加法中,實線是4×4變換的路徑,虛線是8×8變換的路徑。

1.2 反向變換
(1)4×4 整數(shù)余弦反變換:4×4 iDCT能進一步寫成:
(2)8×8哈達瑪變換:參考文獻[2]將一個8×8的預測殘差塊劃分成2個4×8塊進行運算。其一維變換表達式可以寫成:

參考文獻[3]給出了一維8×8整數(shù)余弦反變換的快速算法。
(4)整合的反向變換單元:式(4)、式(5)、式(6)中的運算也能用同一個結構中來實現(xiàn),整合后的運算單元如圖2所示。

1.3 可配置的變換運算單元
前向變換單元(圖1)和反向變換單元(圖2)有著類似的硬件結構,將它們整合到同一個運算單元中,如圖3所示。該可配置的變換運算單元結構圖一共需要36個加法器,圖中有4個只用于8×8變換的加法器沒有畫出。輸入互聯(lián)、中間互聯(lián)和輸出互聯(lián)結構為連線結構,根據(jù)變換類型確定每一級運算器的輸入并對輸出數(shù)據(jù)進行初等變換,使最后輸出的結果與輸入數(shù)據(jù)位置一一對應。
該運算單元的輸入為16個數(shù)據(jù):一個4×4/8×1的預測殘差塊或者反量化后的系數(shù)塊;輸出為8個數(shù)據(jù):一個4×2/8×1的變換(反變換)系數(shù)塊。PHASE信號只在4×4變換時有效。在每一級運算的操作數(shù)輸入過程中,采用操作數(shù)隔離法減少編碼過程中電路的無效計算操作以降低功耗。為了縮短關鍵路徑提高工作頻率,數(shù)據(jù)路徑采用2級流水線設計。

2 自適應的變換模塊設計
該自適應變換模塊的整體結構如圖4所示。該模塊中所有的4×4變換都采用直接二維變換方法,所有的8×8變換都采用行列分解方法。為了平衡4×4變換和8×8變換的吞吐量并且獲得更友好的量化模塊接口,自適應的變換模塊采用4個變換運算單元,并行處理32個數(shù)據(jù),即2個4×4塊或者一個8×8塊的4行/列,所有的運算都是16 bit運算。trans_type信號表明變換的類型,cnt信號計數(shù)變換進行的時鐘周期數(shù)。
當進行4×4變換時,變換運算單元0(2)和變換運算單元1(3)的輸入數(shù)據(jù)為同一個4×4塊,分別得到該4×4塊的0、3行和1、2行變換系數(shù)。因此該結構能同時處理2個4×4塊。
當進行8×8變換時,變換運算單元0--3是相同的運算單元,首先處理前4行,一維變換的結果存入轉置寄存器,然后進行后4行的一維變換。轉置寄存器中的系數(shù)經(jīng)過轉置后進行第二維變換。
一個宏塊的處理過程如圖5所示。按照標準,對宏塊中的4×4塊/8×8塊進行編號。如果進行4×4變換,數(shù)據(jù)按照2個4×4塊的數(shù)據(jù)排列順序輸入給運算單元;如果進行8×8變換,數(shù)據(jù)按照8×8塊的數(shù)據(jù)順序輸入給運算單元。4×4變換和8×8變換按圖5中橢圓圈內的標號所示順序進行。

3 綜合結果和性能分析
該設計使用Verilog HDL進行設計, QuartusII10.0進行綜合,TimeQuest Timing Analyzer進行時序分析。布局布線后工作頻率可以達到63 MHz。
進行變換類型選擇時,對亮度分量依次做4×4和8×8哈達瑪變換,分別需要8+1=9和6+3×5=21個時鐘周期。如果亮度分量進行4×4變換,則處理一個宏塊最多需要30+12+1=43個時鐘周期;如果亮度分量進行8×8變換,則處理一個宏塊最多需要30+21+4=55個時鐘周期。取最差情況,每個宏塊需要55個時鐘周期,則該變換模塊每秒的吞吐量為63 000 000/55=1 145 454個宏塊。HD1080P@50幀/s的視頻每秒鐘的數(shù)據(jù)量是1 920×1 080×50×1.5/(16×16)=607 500個宏塊。因此,該自適應的變換結構可以達到HD1080P@50幀/s視頻的實時編碼需求。
本文提出了一種用于H.264 High Profile視頻編碼器中的自適應變換模塊,該模塊可以完成編碼過程中需要的所有變換操作。該設計的吞吐率可以滿足HD1080P@50幀/s視頻的實時編碼需求。
參考文獻
[1] SULLIVAN G,TOPIWALA P,LUTHRA A.The H.264/AVC advanced video coding standard:overview and introduction to the fidelity range extensions[C].in:SPIE Conference on Applications of Digital Image Processing XXVII,2004.
[2] WIEN M.Variable blocksize transform for H.264/AVC.
IEEE Transoction.estimate power consumption[J].when supplied with 1.8 V and circuitssystem.Video Technology.,2003,13(7):604-613.
[3] Cheng Zhanyuan,Chen Chehong,Liu Binda,et al.High throughput 2-D transform architectures for H.264 advanced video coders[C].in IEEE Asia-Pacific Conference on Circuits and Systems,2004.2:1141-1144.
[4] JVT-J029:Joint Video Team(JVT) of ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6) 10th Meeting:Waikoloa,Hawaii,USA,8-12,2003(12).
[5] Liu Zhenyu,Zhou Junwei,Wang Dongsheng,et al.Register length analysis and VLSI optimization of VBS hadamard transform in H.264/AVC[J],IEEE Transactions on Circuits and Systems for Video Technology,2011,21(5) Issue:5:601-610.
