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

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

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

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

?

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

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

?


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

?


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

?

?

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

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

?

?

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

?

?

圖5 幀內(nèi)預(yù)測(cè)可重構(gòu)并行結(jié)構(gòu)設(shè)計(jì)框圖

?

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

?

?

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

?

?

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


??? 用Synopsys的Design Compiler在0.18?滋m CMOS單元庫下綜合,最高頻率能夠達(dá)到66MHz。
??? 整個(gè)幀內(nèi)預(yù)測(cè)部分與H.264解碼器的其他部分集成在一起,通過了FPGA驗(yàn)證,用Xilinx的Vertex 4000-6型FPGA,能夠?qū)崿F(xiàn)H.264高清晰度視頻的實(shí)時(shí)解碼。用CMOS綜合,最高頻率166MHz,可以實(shí)現(xiàn)高清晰度視頻的實(shí)時(shí)解碼。
??? 本文提出了一種H.264及AVS幀內(nèi)預(yù)測(cè)的硬件結(jié)構(gòu),采用Verilog語言設(shè)計(jì)實(shí)現(xiàn),用Xilinx的FPGA Vertex 4000進(jìn)行了驗(yàn)證,對(duì)H.264 baseline及AVS的高清晰度視頻碼流實(shí)現(xiàn)了實(shí)時(shí)解碼,并用0.18μm工藝庫作了綜合,評(píng)估了電路面積和性能。
參考文獻(xiàn)
[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] 中國音視頻標(biāo)準(zhǔn)工作組.信息技術(shù) 先進(jìn)音視頻編碼 第二部分:視頻(Information technology-Advance coding of?audio and video-part2:video(報(bào)批稿),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)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容