《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > H.264視頻解碼器中幀內(nèi)預(yù)測(cè)模塊的硬件設(shè)計(jì)
H.264視頻解碼器中幀內(nèi)預(yù)測(cè)模塊的硬件設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第10期
宋 健,王祖強(qiáng),秦 盼
(山東大學(xué) 信息科學(xué)與工程學(xué)院,山東 濟(jì)南250100)
摘要: 提出一種能實(shí)時(shí)處理的H.264/AVC幀內(nèi)預(yù)測(cè)硬件結(jié)構(gòu)。通過(guò)對(duì)H.264/AVC各個(gè)預(yù)測(cè)模式的分析,設(shè)計(jì)了一個(gè)通用運(yùn)算單元,提高了硬件資源的可重用性。采用4個(gè)并行運(yùn)算單元計(jì)算預(yù)測(cè)值,對(duì)運(yùn)算比較復(fù)雜的plane模式預(yù)處理,并設(shè)計(jì)模式預(yù)測(cè)器,加快了系統(tǒng)處理速度。硬件電路結(jié)構(gòu)已通過(guò)RTL級(jí)仿真及綜合,并在Altera公司的Cyclone II FPGA平臺(tái)上進(jìn)行了驗(yàn)證和測(cè)試。
中圖分類號(hào): TN919.8
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)10-0053-03
Hardware design of intra prediction in H.264 video decoder
Song Jian,Wang Zuqiang,Qin Pan
College of Information Science and Engineering,Shandong University,Jinan 250100,China
Abstract: A hardware architecture for real-time implementation of intra prediction is proposed. According to analyzing all intra prediction modes, this paper designs a processing element, the processing element improves the reusability of hardware resources. In order to improve the processing speed, four parallel processing elements are employed, plane mode precomputation and mode predictor are adopted. The intra prediction decoder has pass RTL level emulation and synthesis; it has verification and test on cyclone II FPGA platform.
Key words : H.264;decoder;intra prediction;hardware


    H.264/AVC是由國(guó)際電信聯(lián)盟(ITU)和國(guó)際標(biāo)準(zhǔn)化組織(ISO)共同提出的最新一代數(shù)字視頻壓縮標(biāo)準(zhǔn),它吸取了以往壓縮技術(shù)的精華,又引進(jìn)了其他壓縮技術(shù)無(wú)法比擬的許多新技術(shù),因此,H.264在通信領(lǐng)域得到了廣泛應(yīng)用。H.264/AVC壓縮效率很高,但算法的復(fù)雜度和運(yùn)算量同時(shí)也大大增加,為了滿足視頻解碼實(shí)時(shí)性的要求,尋求更有效的解碼技術(shù)成為重要的研究課題。
    幀內(nèi)預(yù)測(cè)是視頻編解碼中重要的一部分,其主要功能是降低圖像的空間冗余。本文根據(jù)H.264/AVC 幀內(nèi)預(yù)測(cè)的特點(diǎn)并結(jié)合對(duì)其算法的分析,提出了一種幀內(nèi)預(yù)測(cè)硬件電路結(jié)構(gòu),有效地減少了硬件電路面積,提高了解碼的性能。
1 H.264幀內(nèi)預(yù)測(cè)算法介紹
    H.264視頻解碼器中,對(duì)于I和SI宏塊類型采用幀內(nèi)預(yù)測(cè)來(lái)解碼。幀內(nèi)預(yù)測(cè)模塊的輸入是當(dāng)前宏塊相鄰左邊塊和上邊塊環(huán)路濾波前的像素值及參考預(yù)測(cè)模式,輸出是當(dāng)前宏塊的預(yù)測(cè)值。預(yù)測(cè)值與反變換反量化得到的殘差值重構(gòu),得到宏塊的像素值。完成后,當(dāng)前宏塊的部分像素值和預(yù)測(cè)模式要進(jìn)行存儲(chǔ),為后面宏塊解碼提供參考值。
    H.264中亮度預(yù)測(cè)分兩類,一類是針對(duì)圖像中含有大量細(xì)節(jié)的部分采用4×4塊的預(yù)測(cè)模式(有9種預(yù)測(cè)模式);另一類是對(duì)圖像中比較平緩的區(qū)域采用16×16塊的預(yù)測(cè)模式(有4種預(yù)測(cè)模式)。色度預(yù)測(cè)是8×8塊的預(yù)測(cè)模式,有4種預(yù)測(cè)模式,這4種預(yù)測(cè)模式與亮度16×16的預(yù)測(cè)模式相似,也有豎直、水平、DC和平面模式。所有的預(yù)測(cè)模式都是根據(jù)左邊塊和上邊塊的參考值,計(jì)算當(dāng)前宏塊的預(yù)測(cè)值。
2 硬件實(shí)現(xiàn)
    根據(jù)幀內(nèi)預(yù)測(cè)算法,硬件結(jié)構(gòu)劃分為predmode模塊、plane模塊、prediction模塊、reconstruct模塊、left_pixels模塊、predmode_ram、prediction_ram、sample和prediction_output模塊。如圖1所示,其中l(wèi)eft_pixels、prediction_ram、predmode _ram、sample和prediction_output模塊都是存儲(chǔ)單元,分別存儲(chǔ)的是當(dāng)前宏塊左邊塊的參考值、當(dāng)前宏塊上邊塊參考值、當(dāng)前宏塊上邊塊的參考預(yù)測(cè)模式、提取的參考像素值和當(dāng)前宏塊預(yù)測(cè)值輸出;predmode模塊預(yù)測(cè)計(jì)算出當(dāng)前塊的預(yù)測(cè)模式;plane模塊是對(duì)plane預(yù)測(cè)模式的預(yù)處理;prediction模塊是幀內(nèi)預(yù)測(cè)的核心計(jì)算單元,4個(gè)PE單元并行運(yùn)算,一個(gè)時(shí)鐘周期解碼出一個(gè)4×4的一列4個(gè)預(yù)測(cè)值;reconstruct模塊的功能是實(shí)現(xiàn)重構(gòu)。

2.1 predmode模塊設(shè)計(jì)
    Intra_16×16和Intra_Chroma的預(yù)測(cè)模式可通過(guò)語(yǔ)法元素解析直接獲得,所以本模塊的主要任務(wù)是解析Intra_4×4的預(yù)測(cè)模式。
    本模式預(yù)測(cè)器的輸入是當(dāng)前4×4亮度塊的luma_4×4BlkIdx(塊索引)、解析的語(yǔ)法元素和當(dāng)前宏塊的信息。輸出是當(dāng)前宏塊的16個(gè)子塊的預(yù)測(cè)模式mb_predmode。predmode_ram中存儲(chǔ)的是當(dāng)前宏塊上邊一行4×4塊的預(yù)測(cè)模式,如圖2陰影部分所示。左邊塊的預(yù)測(cè)模式存儲(chǔ)在predmode模塊內(nèi)。對(duì)于高清圖像(分辨率為1 920×1 080)來(lái)說(shuō),predmode_ram需要的存儲(chǔ)空間為1 080 bit。

    如圖3所示,E是當(dāng)前塊,A是左邊塊,B是上邊塊,D是左上邊塊,C是右上邊塊。predmode模塊的結(jié)構(gòu)如圖4所示,圖中predmode_B模塊的作用是獲得當(dāng)前宏塊E的上邊塊B的預(yù)測(cè)模式,預(yù)測(cè)當(dāng)前宏塊E的子塊0、1、4、5,需要從predmode_ram中讀取上邊塊的參考預(yù)測(cè)模式,其他子塊的上邊塊參考預(yù)測(cè)模式是當(dāng)前塊已解碼子塊的預(yù)測(cè)模式。predmode_A模塊的作用是獲得當(dāng)前宏塊E的左邊塊A的預(yù)測(cè)模式,預(yù)測(cè)當(dāng)前塊E的子塊0、2、8、10時(shí),左邊塊預(yù)測(cè)模式從reg_A里讀取。當(dāng)宏塊E的16個(gè)子塊預(yù)測(cè)完成時(shí),把5、7、13、15子塊的預(yù)測(cè)模式存儲(chǔ)到reg_A中,為下個(gè)宏塊模式預(yù)測(cè)提供左邊塊參考值。

 

 

2.2 prediction模塊設(shè)計(jì)
    prediction模塊是整個(gè)幀內(nèi)預(yù)測(cè)的核心計(jì)算模塊。prediction模塊的功能是根據(jù)獲得的參考像素,在不同預(yù)測(cè)模式下采用不同的預(yù)測(cè)公式計(jì)算當(dāng)前塊的預(yù)測(cè)值。幀內(nèi)預(yù)測(cè)共有17種預(yù)測(cè)模式,通常若對(duì)每種預(yù)測(cè)模式都設(shè)計(jì)預(yù)測(cè)器,當(dāng)求解一個(gè)預(yù)算值時(shí),其他16個(gè)模式處于空閑,這就造成了很大的資源浪費(fèi)。通過(guò)分析各個(gè)模式所對(duì)應(yīng)的運(yùn)算法則,可以發(fā)現(xiàn)這些運(yùn)算法則的共同特點(diǎn)是:(1)計(jì)算每個(gè)位置預(yù)測(cè)值最多需要4個(gè)參考樣本像素;(2)計(jì)算公式都可由加法和移位操作完成計(jì)算。根據(jù)各個(gè)預(yù)測(cè)模式的相似點(diǎn),把17種預(yù)測(cè)模式集合到一個(gè)運(yùn)算單元中,可大大節(jié)約硬件資源。
    圖5給出了PE的設(shè)計(jì),該P(yáng)E的特點(diǎn)是:(1)Horizontal或Vertical預(yù)測(cè)模式中在獲得參考值x0后,在bypass控制下不需要經(jīng)過(guò)運(yùn)算單元直接獲得預(yù)測(cè)值;(2)DC模式,該模式的預(yù)測(cè)值是一個(gè)平均值。對(duì)于Intra_4×4_DC模式,用2個(gè)PE單元(PE0和PE1)在1個(gè)時(shí)鐘周期就可解得預(yù)測(cè)值。Intra_16x16_DC模式需要4個(gè)時(shí)鐘周期,假設(shè)左邊和上邊的參考像素值分別命名為L(zhǎng)0~L15和U0~U15,前3個(gè)時(shí)鐘周期,PE0的輸入分別為(L0,L1,L2,L3)、((L0+L1+L2+L3),U0,U1,U2)、((L0+L1+L2+L3+U0+U1+U2),U3,0,0),輸出存儲(chǔ)在PE_reg中作為下個(gè)時(shí)鐘周期的輸入,PE1、FE2、PE3的輸入類同,最后一個(gè)時(shí)鐘周期把PE0、PE1、PE2、PE3作為PE0的輸入求出DC模式的預(yù)測(cè)值;(3)其他預(yù)測(cè)模式,如(A+2B+C+2)>>2和plane預(yù)處理單元的輸出都能經(jīng)過(guò)此運(yùn)算單元完成預(yù)測(cè)值的計(jì)算。

    為了提高解碼速度,滿足視頻解碼實(shí)時(shí)性的要求,采用4個(gè)運(yùn)算單元PE0、PE1、PE2和PE3同時(shí)運(yùn)行, 4個(gè)運(yùn)算單元4個(gè)時(shí)鐘周期可以解碼出一個(gè)4×4塊,提高了解碼速度。
2.3 plane模塊設(shè)計(jì)
2.3.1 簡(jiǎn)化 plane預(yù)測(cè)模式

    Intra_16×16_Plane模式和色度塊Intra_chroma_Plane模式是幀內(nèi)預(yù)測(cè)中最復(fù)雜的預(yù)算模式,為了滿足系統(tǒng)實(shí)時(shí)處理的要求,可提前預(yù)算plane模式需要的一些參數(shù)。本文以Intra_16×16_Plane為例介紹如何簡(jiǎn)化plane模式,Intra_chroma_Plane方法類同。
    在plane模式運(yùn)算中要用到乘法,為了節(jié)約硬件資源,采用移位來(lái)實(shí)現(xiàn)乘法,其中參數(shù)a、b、c的計(jì)算公式為:
    

    上述公式,首先求得A后,pred(0,1)、pred(0,2)、pred(0,3)的值是在A的基礎(chǔ)上加上c、2c、3c,然后再進(jìn)行移位和clip。pred(1,0)、pred(2,0)、pred(3,0)的值只是在A的基礎(chǔ)上加上b、2b、3b,然后再進(jìn)行移位和clip。所以提前求得A、b、c,預(yù)算值是在A的基礎(chǔ)上加上b或者c的倍數(shù),本方法可大大優(yōu)化plane模式。
2.3.2 plane模式硬件設(shè)計(jì)
    plane模式的關(guān)鍵是求得參數(shù)H和V,其硬件設(shè)計(jì)如圖6所示。以V為例介紹本電路。
  
    舉例說(shuō)明本運(yùn)算單元如何計(jì)算出參數(shù)H:
    當(dāng)a=a11、b=a12、c=a3、d=a3、sum=0、mux1=0、IS6=0、IS7=0、shift1=0、shift2=1時(shí),就可以求得A1+A3。a=a21、b=a22、c=a51、d=a52、sum=0、mux1=0、IS6=0、IS7=0、shift1=1、shift2=2時(shí),就可以求得A2+A5,并依照這個(gè)運(yùn)算單元可求出A4+A6和A8+A7。
    本電路4個(gè)時(shí)鐘周期就可以求得H或V,所以共需要8個(gè)時(shí)鐘周期求H和V。本方法與通常方法相比,只計(jì)算一次A、b、c的值,其他位置的預(yù)測(cè)值只需要在A的基礎(chǔ)上加上b或者c的倍數(shù),降低了復(fù)雜度。
3 實(shí)驗(yàn)結(jié)果
    本設(shè)計(jì)使用Verilog HDL完成硬件代碼的編寫(xiě),并用Altera公司的Quartus II 8.0進(jìn)行代碼的仿真和綜合。圖7為核心單元prediction模塊的仿真結(jié)果,PE0_out、PE1_out、PE2_out、PE3_out9為4個(gè)并行單元的輸出。采用Altera公司的Cyclone II進(jìn)行本設(shè)計(jì)FPGA驗(yàn)證,本設(shè)計(jì)占用的邏輯資源數(shù)量較少,節(jié)約了硬件資源。
    本文根據(jù)H.264幀內(nèi)預(yù)測(cè)的特點(diǎn),提出了一種并行處理的硬件實(shí)現(xiàn)方法。該方法能夠提高幀內(nèi)預(yù)測(cè)的處理速度,節(jié)約了硬件資源,滿足了高清視頻的解碼要求。
參考文獻(xiàn)
[1] ISO/IEC 14496-10.draft ITU-T recommendation and final international standard of joint video specification(ITU-TRec.H.264/AVC) [S].2003.
[2] SAHIN E,HAMZAOGLU I.An efficient intra prediction hardware architecture for H.264 Video Decoding[M].IEEE,2009.
[3] Wang Xi.A parallel intra prediction architecture for H.264 video decoding[M].IEEE,2007.
[4] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)-H.264/AVC(第二版). 2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。