王 佳,殷海兵,周冰倩
(中國計量學(xué)院信息工程學(xué)院,浙江杭州310018)
碼率控制算法是在碼率受限的條件下通過動態(tài)的調(diào)整編碼參數(shù)來優(yōu)化視頻質(zhì)量。假如沒有進行碼率控制,當通過有限的信道帶寬傳送壓縮的比特流時緩沖區(qū)就會上溢或者下溢。在視頻編碼標準中,有幾種碼率控制算法已經(jīng)被推薦作為參考算法,比如MPEG-2的TM5、H.263的TMN8、MPGE-4的VM8、H.264AVC的G012。一些MPEG-2或H.263的碼率控制算法已經(jīng)有人提出了硬件實現(xiàn)方案[1]。對如H.264/AVC,它的碼率控制算法參考提案G012更為復(fù)雜,其直接硬件實現(xiàn)需要大量的門電路[2]。對如H.264/AVC視頻編碼器來說,G012的硬件消耗是非常大的,針對硬件實現(xiàn)的特點提出了一種適合硬件實現(xiàn)的碼率控制算法[3]。本文在H264/AVC編碼器Zig-zag宏塊編碼順序和宏塊級流水結(jié)構(gòu)的基礎(chǔ)上,利用時域和頻域的相關(guān)性,提出了一種新的低復(fù)雜度MAD預(yù)測算法,解決了硬件實現(xiàn)時的數(shù)據(jù)依賴問題。
通常硬件編碼器的實現(xiàn)面臨著兩個問題,數(shù)據(jù)吞吐和存儲帶寬。為了提高數(shù)據(jù)處理效率硬件編碼器通常采用Zigzag宏塊順序,宏塊級流水結(jié)構(gòu)。兩者的結(jié)合導(dǎo)致碼率控制算法實現(xiàn)時復(fù)雜的數(shù)據(jù)依賴關(guān)系。并且G012算法MAD預(yù)測模塊的高復(fù)雜度會消耗大量的硬件資源。
硬件編碼器為了實現(xiàn)數(shù)據(jù)的水平和垂直復(fù)用,通常采用Zig-zag[4]宏塊編碼順序代替軟件實現(xiàn)時的光柵掃描順序。編碼順序的改變導(dǎo)致數(shù)據(jù)的水平和垂直的依賴關(guān)系改變,如圖1所示,每3個宏塊行采用Zig-zag宏塊編碼順序。
通常情況下,H.264/AVC硬件編碼器宏塊級通常采用3級或者4級的流水結(jié)構(gòu)。如圖2所示,在宏塊流水開始前,通過碼率控制(RC)模塊獲取Qp,依次經(jīng)過整象素運動估計(IME),亞象素運動估計/幀內(nèi)預(yù)測(FME/INTRAL),熵編碼/去塊效應(yīng)濾波(EC/DB)3級流水[3]。
圖1 每3個宏塊行的Zig-zag宏塊編碼順序
圖2 3級宏塊流水結(jié)構(gòu)
H.264/AVC的碼率控制算法G012中,采用線性預(yù)測的方法計算MAD:
式中,兩個參數(shù)a1和a2采用線性回歸的方法進行更新。參數(shù)a1和a2的計算如下所示[3],計算復(fù)雜度很高,直接采用硬件實現(xiàn),會消耗大量的硬件資源。
針對Zigzag宏塊編碼順序和宏塊流水結(jié)構(gòu)所產(chǎn)生的數(shù)據(jù)依賴問題,以及MAD線性預(yù)測參數(shù)更新的高復(fù)雜度,提出了一種利用時域和空域相關(guān)性來預(yù)測當前編碼宏塊MAD值。如圖3所示,當前編碼宏塊MB(n,i),MB(n-1,i)為前一幀相同位置宏塊,MBU和MBL分別當前編碼宏塊上方和左邊宏塊,MBA、MBB和MBC位置依次如圖3所示。由于每3個宏塊行采用Zigzag宏塊編碼順序的特殊性,當前編碼宏塊只有上方和左邊已編碼宏塊可以用來進行預(yù)測。根據(jù)觀察和數(shù)據(jù)分析,MBL和MBU已經(jīng)前一幀相同位置MB(n-1,i)的相關(guān)性最大,可以直接采用這3個已編碼宏塊來預(yù)測當前宏塊值。綜合考慮3級宏塊流水結(jié)構(gòu)和邊界情況,具體MAD預(yù)測流程如圖4所示,其中w1和w2的值為7/8和3/4,。
圖3 當前預(yù)測宏塊和周圍宏塊
圖4 MAD預(yù)測流程圖
本次實驗基于JM10.2參考模型,改變宏塊編碼的光柵掃描順序為每3個宏塊行的Zigzag編碼順序,然后進行碼流重排,并仿真本文提出的低復(fù)雜度MAD預(yù)測算法。測試序列分別為低速運動序列“News”,高速運動序列“Foreman”和“Carphone”,復(fù)雜序列“Mobile”。測試碼率分別為 60,80,100,120kbps。實驗結(jié)果如表1,圖5所示。
表1 實驗結(jié)果對比
表1、圖5中,在相同的碼率條件下可以保持與G012相同的PSNR,視頻質(zhì)量沒有降低,但MAD預(yù)測部分復(fù)雜度大大降低。如表2所示,其中n表示一幀中的宏塊數(shù)目,與原始算法G012相比,Zig-zag編碼情況下MAD預(yù)測部分復(fù)雜度降低了92%,并解決了數(shù)據(jù)依賴問題,適合硬件實現(xiàn)。
圖5 Foreman和Carphone測試序列率失真曲線
表2 算法復(fù)雜度對比
[1] ChenChing-Yeh,Huang Chao-Tsung,Chen Yi-Hau,etal.Level C+Data Reuse Scheme for Motion Estimation With Corresponding Coding Orders[J].IEEE Transactions on CSVT,2006,16(4):553 -558.
[2] Chang Hsiu-Cheng,Chen Jia-Wei,Su Ching-Lung,etal.A 7mw to 183mw dynamic quality-scalable H.264 video encoder chip[C].San Francisco:IEEE International Conference,2 007:280 -603.
[3] Kuo Chih-Hung,Chang Li-Chuan,F(xiàn)an Kuan-Wei,etal.Hardware/Software Codesign of a Low-Cost Rate Control Scheme for H.264/AVC[J].IEEE Transactions on CSVT,2010,20(2):250 -261.
[4] Wu Ping-Tsung,Chang Tzu-Chun,Su Ching-Lung,etal.A H.264 basic-unit level rate control algorithm facilitating hardware realization[C].Las Vegas:IEEE International Conference,2008:2 158 -2 188.
[5] Yin Hai bing,Qi Hong gang,Jia Huizhu,etal.Efficient Macroblock Pipeline Structure in High Definition AVS Video Encoder VLSI Architecture[C].Paris:IEEE International Conference,2010:669 -672.