《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > H.264及AVS双模视频解码器中帧内预测的硬件设计与实现

H.264及AVS双模视频解码器中帧内预测的硬件设计与实现

2008-07-09
作者:姜 弢,周佩海,MIN Bah

??? 摘 要: 根據(jù)H.264/AVC及AVS的特點,設計出一種適合于幀內(nèi)預測" title="幀內(nèi)預測">幀內(nèi)預測解碼的硬件實現(xiàn)方式,并根據(jù)H.264和AVS幀內(nèi)預測運算上的相似性提出了基于可重構" title="可重構">可重構的并行結構,有利于提高解碼速度,并將該結構配合其他設計好的解碼器模塊,在FPGA上實現(xiàn)了高準清晰度的H.264及AVS視頻的實時解碼" title="實時解碼">實時解碼。
??? 關鍵詞: H.264? AVS? 幀內(nèi)預測? 視頻解碼系統(tǒng)

?

??? AVS是中國第一個具有自主知識產(chǎn)權的數(shù)字音視頻編解碼標準,全稱是《信息技術先進音視頻編碼標準》。AVS是基于我國創(chuàng)新技術和部分公開技術的自主標準,是國內(nèi)惟一的相關行業(yè)標準。H.264/AVC標準是由ISO/IEC的運動圖像專家組(MPEG)和ITU-T的視頻編碼專家組(VCEG)共同制定的新一代圖像壓縮標準。這兩種標準在編碼效率上較之以往的視頻壓縮標準都有顯著的提高,但與此同時硬件實現(xiàn)解碼的復雜度也隨之上升,給硬件設計帶來挑戰(zhàn)。本文針對H.264及AVS高清視頻解碼芯片幀內(nèi)預測模塊的設計進行論述,在分析H.264和AVS幀內(nèi)預測值求解算法的基礎上,利用其運算上的相似性,提出了一種針對片上系統(tǒng)(SoC)速度較快同時面積較小的基于可重構并行結構的硬件設計方法,從而達到資源的最優(yōu)化利用。
??? 在設計方法上采用自頂向下的方式,設計了C語言模型驗證解碼算法并為仿真提供測試向量。在設計的每一步都進行仿真,以保證設計的正確性。最后配合本項目其他設計模塊進行FPGA驗證,在FPGA上能夠?qū)崟r解碼高清晰度視頻,并用0.18μm工藝庫作了綜合,評估了電路面積和性能。
1 算法簡介
1.1 H.264幀內(nèi)預測算法簡介

??? H.264/AVC集成了H.263+幀內(nèi)預測的經(jīng)驗,通過其左邊和上邊已經(jīng)解碼后的像素值來預測當前塊,這些用作參考的像素值是沒有經(jīng)過去塊效應濾波的數(shù)據(jù)。每個宏塊" title="宏塊">宏塊可以按16×16或4×4兩種模式進行預測。如圖1,對于4×4塊,每個像素都可用17個最接近先前已編碼的像素(A~L,Q)的不同加權和來預測,共有9種預測模式,圖1示出了8個方向的預測模式。還有一種是DC模式,采用平均值進行預測。除了4×4亮度塊預測之外,還有16×16亮度預測模式和8×8色度預測模式。解碼時,按照所選的預測模式和參考像素得出預測值,然后與殘差相加便得到重建后的圖像數(shù)據(jù)。

?


??? 若選定MBAFF模式,每個slice由一系列16像素寬32像素高的宏塊對組成。每個宏塊對按照2個幀宏塊或是2個場宏塊操作,如圖2所示??梢愿鶕?jù)圖像不同區(qū)域的情況選擇最優(yōu)模式進行編碼,使其更為靈活。

?


1.2 AVS幀內(nèi)預測算法
??? AVS的幀內(nèi)預測技術沿襲了MPEG-4 AVC/H.264幀內(nèi)預測的思路,用相鄰塊的像素預測當前塊,采用代表空間域紋理方向的多種預測模式。但AVS亮度和色度幀內(nèi)預測都是以8×8塊為單位的。亮度塊采用5種預測模式,色度塊采用4種預測模式,而這4種模式中又有3種和亮度塊的預測模式相同。在編碼質(zhì)量相當?shù)那疤嵯?,AVS采用較少的預測模式,使方案更加簡潔,實現(xiàn)的復雜度大為降低。
1.3 預測模式的判斷
??? H.264和AVS的預測模式選擇算法思路相同,區(qū)別只是針對不同大小的塊,現(xiàn)以H.264的預測模式選擇進行說明。
對于H.264,4×4塊的幀內(nèi)預測模式選擇必須告知解碼器。對幀內(nèi)模式而言,相鄰的4×4塊的預測模式之間具有很強的相關性。根據(jù)當前4×4塊的左邊塊B和上邊塊A的預測模式可以預測當前塊的最可能模式(Most Probable Mode,MPM)。如果A、B塊使用的預測模式都是模式1,則對當前塊E的最佳預測模式也可能是模式1。為了利用這種聯(lián)系,預測編碼對4×4的幀內(nèi)模式進行信號標識。對每個當前塊E,編碼器和解碼器計算最可能的預測模式(A,B的最小預測模式)。如果A、B塊不能獲得(在條帶外或沒有使用4×4),則A、B相應的值設為2(DC模式)。編碼器為每個4×4塊發(fā)送一個標志符flag,如果標志符置1,則最可能的預測模式被使用。如果置0,由編碼器發(fā)送過來的預測模式rem_mode顯示模式的變化。如果它的值比當前最可能預測模式的值要小,則預測模式被設為rem_mode;否則,預測模式設為(rem_mode+1)。用這種方法,rem_imode只需要8個值(0~7)就可以標識當前的幀內(nèi)預測模式(0~8)。利用這種相關性可以減少編碼的比特數(shù)。
2 總體結構設計
??? 本文所設計總體結構如圖3,任務包括兩部分:(1)完成對幀內(nèi)預測模式下的像素值的預測;(2)完成對幀內(nèi)預測和幀間預測圖像像素的重建,將像素的重建值送入下一個模塊。

?

?

2.1 外部模塊結構
??? 其中FIFO是用來對從解碼器的其他模塊輸入當前宏塊數(shù)據(jù)進行緩存,并提供給IPRED。
??? (1)Firm ware:解碼器的軟件部分,向IPRED發(fā)送32位的cmd命令,命令中包括是否為MBAFF模式及當前宏塊鄰塊是否存在等。
??? (2)VLD:變字長解碼部分,往IPRED發(fā)送66位的預測模式mode。在4×4預測模式下有16個亮度小塊的預測模式和1個色度模塊的預測模式。亮度模式每個占4位色度,色度模式占兩位,即16×4+2=66,從高到底,依次為1~16的亮度塊預測模式,最低兩位為亮度模式。在16×16類型有1個亮度模式和1個色度模式,亮度占66位中的最高4位,色度緊跟后面2位。
??? (3)IQ:殘差的反量化部分,VLD通過IQ向IPRED轉發(fā)cbp數(shù)據(jù),用來判斷是否殘差。若cbp為0,則當前塊無殘差;cbp為1時說明當前塊有殘差。
??? (4)IT:殘差的反變化部分,其將反量化反變化后得到的殘差系數(shù)傳給IPRED。
??? (5)INT:在幀間預測中的插值運算、加權預測并發(fā)送一個宏塊的運動補償數(shù)據(jù)輸出到IPRED模塊。
2.2 內(nèi)部模塊結構
??? Ipred_main and reconstruction模塊是實現(xiàn)幀內(nèi)預測的核心部分。

??? 整個模塊的簡要工作流程如下:首先針對cmd命令進行解析,若為幀內(nèi)預測則利用命令對當前宏塊的臨塊可用性進行判斷,將參考的像素及參考預測模式從RAM中取出,再將參考預測模式送入模式判斷單元,并與VLD輸入到該模塊mode一起計算出當前塊所采用的預測模式。然后計算單元根據(jù)預測模式和參考像素值計算出像素預測值。接著利用cbp判斷出當前塊是否有殘差,從而決定是否提取殘差系數(shù),完成像素的重建;若為幀間預測,則首先從MC FIFO中提取運動補償數(shù)據(jù),與殘差系數(shù)相加便得到像素的重建值。預測工作流程圖如圖4。

?

?

3 可重構并行結構設計
??? 考慮到是H.264、AVS兩個標準的可復用" title="復用">復用性,若能找到其中可復用的部分,這對減少硬件資源開支將起很大的作用。根據(jù)上一節(jié)中對各種預測模式的算法介紹,可以分析出H.264中的Intra16x16、色度預測模式以及AVS中的色度預測模式在算法上很相似,可以將三個部分進行復用。
??? 除去可復用部分,現(xiàn)在剩余有18個預測模式,若每一個預測模式都對應一個預測器,則一共需要18個預測器。這雖然能夠達到實時解碼的要求,但是這種結構明顯是以犧牲系統(tǒng)的復雜度以及硬件資源為代價的,這在硬件的實現(xiàn)上也是不可取的??紤]到在解碼端,由于預測的模式已經(jīng)確定,所以每個塊中的像素點的預測值只需要計算一次,故在一次預測值的求解中,會有其他17個模塊處于空閑狀態(tài),這就造成很大的硬件資源浪費。此外還可以發(fā)現(xiàn)對于不同的模式,雖然對應著不同的預測值的求解方式,但是實際上多種模式之間可以共享一些運算模塊,從而尋求部分硬件資源共享的形式。
??? 通過分析幀內(nèi)預測解碼的特點,提出了一種將所有預測模式的計算都集中到一個運算單元,在不同的模式下分別對各個運算單元的各個模塊的參數(shù)進行控制,從而實現(xiàn)預測期的可重構。在這樣的結構下,每個單元可實現(xiàn)每一時鐘處理一個像素的能力。為了提高處理能力和速度,同時采用了8個運算模塊進行并行處理,圖5為設計框圖。

?

?

圖5 幀內(nèi)預測可重構并行結構設計框圖

?

??? 由圖5可見,該設計包含了5個主要模塊和8個運算模塊。其中參考像素點存儲在RAM中,根據(jù)預測需要從其中提取出來??刂颇K根據(jù)模式的判斷,對數(shù)據(jù)預處理模塊進行控制。數(shù)據(jù)預處理模塊是為了一些特定的模式而設立的,進行一些計算前的數(shù)據(jù)處理,尤其是對Plane模式下的數(shù)據(jù)處理。數(shù)據(jù)通過MUX模塊的選擇后分別送入8個并行的運算模塊,計算得到相應的預測值經(jīng)過Pred模塊輸出。
4 邏輯仿真與綜合
??? 編寫測試文件(test_bench),使這些測試向量正確地加載到要測試的模塊接口上。Verilog代碼在modelsim下解H.264和AVS碼流的部分波形圖如圖6、圖7。其中i_clk為時鐘信號,mb_type為表明當前宏塊是幀內(nèi)預測還是幀間預測,i_jvt_enable、i_avs_enable表示當前是H.264還是AVS,pred_data為像素的預測值;o_store_fifo_data是像素的重建值,rem_data為軟件模擬器得到的像素重建值,o_block_mode為當前塊的預測模式。

?

?

圖6 H.264部分的功能仿真波形

?

?

圖7 AVS部分的功能仿真波形


??? 用Synopsys的Design Compiler在0.18?滋m CMOS單元庫下綜合,最高頻率能夠達到66MHz。
??? 整個幀內(nèi)預測部分與H.264解碼器的其他部分集成在一起,通過了FPGA驗證,用Xilinx的Vertex 4000-6型FPGA,能夠?qū)崿F(xiàn)H.264高清晰度視頻的實時解碼。用CMOS綜合,最高頻率166MHz,可以實現(xiàn)高清晰度視頻的實時解碼。
??? 本文提出了一種H.264及AVS幀內(nèi)預測的硬件結構,采用Verilog語言設計實現(xiàn),用Xilinx的FPGA Vertex 4000進行了驗證,對H.264 baseline及AVS的高清晰度視頻碼流實現(xiàn)了實時解碼,并用0.18μm工藝庫作了綜合,評估了電路面積和性能。
參考文獻
[1] Changsung Kim,Hsuan-Huei?Shih and C.C.Jay Kuo.Multistage Mode Decision for Intra?Prediction in H.264 Codec.IS&T/SPIE 16th Annual Symposium EI,Visual Communications and Image Processing,Orlando,F(xiàn)lorida,2004,1.
[2] Changsung Kim,Hsuan-Huei Shih and C.C.Jay Kuo.Feature-Based Intra-Prediction Mode Decision for H.264.IEEE Proceedings of International Conference Image?Processing,submitted,Singapole,2004,10.
[3] 中國音視頻標準工作組.信息技術 先進音視頻編碼 第二部分:視頻(Information technology-Advance coding of?audio and video-part2:video(報批稿),2005.
[4] Joint Video Team(JVT) of ISO/IEC MPEG & ITU-T?VCEG,Proposed Draft Errata List with Revision-Marked?Corrections for H.264/AVC[M],2003,12.

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

相關內(nèi)容