H.264/AVC High Profile視頻編碼中自適應(yīng)變換模塊的設(shè)計(jì)
2011-12-28
作者:姜 英,王桂海
來源:來源:電子技術(shù)應(yīng)用2011年第11期
摘 要: 提出了一種可配置的整數(shù)變換運(yùn)算單元并將其用于H.264/AVC High Profile視頻編碼器的自適應(yīng)變換模塊中。通過變換類型信號(hào)的配置,該變換單元可以完成相應(yīng)的變換操作。本設(shè)計(jì)采用Altera公司的Cyclone II系列FPGA進(jìn)行實(shí)現(xiàn)和驗(yàn)證,布局布線后的最大工作頻率為63 MHz,采用4個(gè)可配置變換單元的變換模塊,可以滿足HD1080P@50幀/s視頻的實(shí)時(shí)編碼要求。
關(guān)鍵詞: 自適應(yīng)變換;硬件復(fù)用;離散余弦變換;哈達(dá)瑪變換;H.264 High Profile視頻編碼器
2004年7月,JVT組織發(fā)布了H.264/AVC標(biāo)準(zhǔn)的高保真度擴(kuò)展(FRExt)部分,該部分引進(jìn)了自適應(yīng)尺寸變換(ABT)[1],變換類型由4×4變換改為可以在4×4和8×8變換之間進(jìn)行自適應(yīng)選擇。
采用幀內(nèi)4×4和幀內(nèi)16×16預(yù)測(cè)模式得到的亮度分量預(yù)測(cè)殘差進(jìn)行4×4 DCT;采用幀內(nèi)8×8預(yù)測(cè)模式得到的亮度分量預(yù)測(cè)殘差進(jìn)行8×8 DCT。采用幀間預(yù)測(cè)模式得到的亮度分量預(yù)測(cè)殘差,如果預(yù)測(cè)模式塊不大于8×8,則使用4×4 DCT,否則編碼器需要在4×4 DCT和8×8 DCT之間進(jìn)行選擇。色度分量預(yù)測(cè)殘差全部使用4×4 DCT。H.264參考軟件JM采用的變換類型選擇算法是:分別求一個(gè)宏塊的亮度分量預(yù)測(cè)殘差的4×4 SATD和8×8 SATD,選取SATD值小的變換尺寸為離散余弦變換的變換尺寸。
1 可配置的變換運(yùn)算單元的設(shè)計(jì)
該可配置的變換運(yùn)算單元能根據(jù)配置信號(hào)完成二維的4×4正、反變換操作和一維的8×8正、反變換變換操作。這個(gè)運(yùn)算單元的多個(gè)例化構(gòu)成用于整個(gè)編碼器中的自適應(yīng)變換模塊。
1.1 前向變換
(1)4×4整數(shù)余弦變換:根據(jù)矩陣?yán)碚撝械目肆_內(nèi)克積和矩陣的對(duì)稱性[2],二維4×4 DCT能夠?qū)懗桑?br/>
(3)8×8整數(shù)余弦變換:通過二維變換的行列分解,二維4×4 DCT能夠?qū)懗啥S8×8 DCT:
Y8=Cf8X8Cf8T=Cf8(Cf8X8T)T(3)
參考文獻(xiàn)[3]給出了快速1D 8×8整數(shù)余弦變換算法。
(4)整合的前向變換單元:通過運(yùn)算資源共享,式(1)、式(2)、式(3)中的運(yùn)算能用同一個(gè)結(jié)構(gòu)實(shí)現(xiàn),如圖1所示。對(duì)于4×4變換,當(dāng)PHASE=1時(shí),第一級(jí)運(yùn)算為加法運(yùn)算,得到的是一個(gè)4×4二維變換系數(shù)塊的第0行和第2行數(shù)據(jù);當(dāng)PHASE=0時(shí),第一級(jí)運(yùn)算為減法運(yùn)算,得到的是一個(gè)4×4二維變換系數(shù)塊的第1行和第3行數(shù)據(jù)。在最后一級(jí)加法中,實(shí)線是4×4變換的路徑,虛線是8×8變換的路徑。
1.2 反向變換
(1)4×4 整數(shù)余弦反變換:4×4 iDCT能進(jìn)一步寫成:
(2)8×8哈達(dá)瑪變換:參考文獻(xiàn)[2]將一個(gè)8×8的預(yù)測(cè)殘差塊劃分成2個(gè)4×8塊進(jìn)行運(yùn)算。其一維變換表達(dá)式可以寫成:
參考文獻(xiàn)[3]給出了一維8×8整數(shù)余弦反變換的快速算法。
(4)整合的反向變換單元:式(4)、式(5)、式(6)中的運(yùn)算也能用同一個(gè)結(jié)構(gòu)中來實(shí)現(xiàn),整合后的運(yùn)算單元如圖2所示。
1.3 可配置的變換運(yùn)算單元
前向變換單元(圖1)和反向變換單元(圖2)有著類似的硬件結(jié)構(gòu),將它們整合到同一個(gè)運(yùn)算單元中,如圖3所示。該可配置的變換運(yùn)算單元結(jié)構(gòu)圖一共需要36個(gè)加法器,圖中有4個(gè)只用于8×8變換的加法器沒有畫出。輸入互聯(lián)、中間互聯(lián)和輸出互聯(lián)結(jié)構(gòu)為連線結(jié)構(gòu),根據(jù)變換類型確定每一級(jí)運(yùn)算器的輸入并對(duì)輸出數(shù)據(jù)進(jìn)行初等變換,使最后輸出的結(jié)果與輸入數(shù)據(jù)位置一一對(duì)應(yīng)。
該運(yùn)算單元的輸入為16個(gè)數(shù)據(jù):一個(gè)4×4/8×1的預(yù)測(cè)殘差塊或者反量化后的系數(shù)塊;輸出為8個(gè)數(shù)據(jù):一個(gè)4×2/8×1的變換(反變換)系數(shù)塊。PHASE信號(hào)只在4×4變換時(shí)有效。在每一級(jí)運(yùn)算的操作數(shù)輸入過程中,采用操作數(shù)隔離法減少編碼過程中電路的無(wú)效計(jì)算操作以降低功耗。為了縮短關(guān)鍵路徑提高工作頻率,數(shù)據(jù)路徑采用2級(jí)流水線設(shè)計(jì)。
2 自適應(yīng)的變換模塊設(shè)計(jì)
該自適應(yīng)變換模塊的整體結(jié)構(gòu)如圖4所示。該模塊中所有的4×4變換都采用直接二維變換方法,所有的8×8變換都采用行列分解方法。為了平衡4×4變換和8×8變換的吞吐量并且獲得更友好的量化模塊接口,自適應(yīng)的變換模塊采用4個(gè)變換運(yùn)算單元,并行處理32個(gè)數(shù)據(jù),即2個(gè)4×4塊或者一個(gè)8×8塊的4行/列,所有的運(yùn)算都是16 bit運(yùn)算。trans_type信號(hào)表明變換的類型,cnt信號(hào)計(jì)數(shù)變換進(jìn)行的時(shí)鐘周期數(shù)。
當(dāng)進(jìn)行4×4變換時(shí),變換運(yùn)算單元0(2)和變換運(yùn)算單元1(3)的輸入數(shù)據(jù)為同一個(gè)4×4塊,分別得到該4×4塊的0、3行和1、2行變換系數(shù)。因此該結(jié)構(gòu)能同時(shí)處理2個(gè)4×4塊。
當(dāng)進(jìn)行8×8變換時(shí),變換運(yùn)算單元0--3是相同的運(yùn)算單元,首先處理前4行,一維變換的結(jié)果存入轉(zhuǎn)置寄存器,然后進(jìn)行后4行的一維變換。轉(zhuǎn)置寄存器中的系數(shù)經(jīng)過轉(zhuǎn)置后進(jìn)行第二維變換。
一個(gè)宏塊的處理過程如圖5所示。按照標(biāo)準(zhǔn),對(duì)宏塊中的4×4塊/8×8塊進(jìn)行編號(hào)。如果進(jìn)行4×4變換,數(shù)據(jù)按照2個(gè)4×4塊的數(shù)據(jù)排列順序輸入給運(yùn)算單元;如果進(jìn)行8×8變換,數(shù)據(jù)按照8×8塊的數(shù)據(jù)順序輸入給運(yùn)算單元。4×4變換和8×8變換按圖5中橢圓圈內(nèi)的標(biāo)號(hào)所示順序進(jìn)行。
3 綜合結(jié)果和性能分析
該設(shè)計(jì)使用Verilog HDL進(jìn)行設(shè)計(jì), QuartusII10.0進(jìn)行綜合,TimeQuest Timing Analyzer進(jìn)行時(shí)序分析。布局布線后工作頻率可以達(dá)到63 MHz。
進(jìn)行變換類型選擇時(shí),對(duì)亮度分量依次做4×4和8×8哈達(dá)瑪變換,分別需要8+1=9和6+3×5=21個(gè)時(shí)鐘周期。如果亮度分量進(jìn)行4×4變換,則處理一個(gè)宏塊最多需要30+12+1=43個(gè)時(shí)鐘周期;如果亮度分量進(jìn)行8×8變換,則處理一個(gè)宏塊最多需要30+21+4=55個(gè)時(shí)鐘周期。取最差情況,每個(gè)宏塊需要55個(gè)時(shí)鐘周期,則該變換模塊每秒的吞吐量為63 000 000/55=1 145 454個(gè)宏塊。HD1080P@50幀/s的視頻每秒鐘的數(shù)據(jù)量是1 920×1 080×50×1.5/(16×16)=607 500個(gè)宏塊。因此,該自適應(yīng)的變換結(jié)構(gòu)可以達(dá)到HD1080P@50幀/s視頻的實(shí)時(shí)編碼需求。
本文提出了一種用于H.264 High Profile視頻編碼器中的自適應(yīng)變換模塊,該模塊可以完成編碼過程中需要的所有變換操作。該設(shè)計(jì)的吞吐率可以滿足HD1080P@50幀/s視頻的實(shí)時(shí)編碼需求。
參考文獻(xiàn)
[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.