《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > H.264視頻解碼器中幀內(nèi)預(yù)測模塊的硬件設(shè)計
H.264視頻解碼器中幀內(nèi)預(yù)測模塊的硬件設(shè)計
來源:電子技術(shù)應(yīng)用2011年第10期
宋 健,王祖強(qiáng),秦 盼
(山東大學(xué) 信息科學(xué)與工程學(xué)院,山東 濟(jì)南250100)
摘要: 提出一種能實(shí)時處理的H.264/AVC幀內(nèi)預(yù)測硬件結(jié)構(gòu)。通過對H.264/AVC各個預(yù)測模式的分析,設(shè)計了一個通用運(yùn)算單元,提高了硬件資源的可重用性。采用4個并行運(yùn)算單元計算預(yù)測值,對運(yùn)算比較復(fù)雜的plane模式預(yù)處理,并設(shè)計模式預(yù)測器,加快了系統(tǒng)處理速度。硬件電路結(jié)構(gòu)已通過RTL級仿真及綜合,并在Altera公司的Cyclone II FPGA平臺上進(jìn)行了驗(yàn)證和測試。
中圖分類號: TN919.8
文獻(xiàn)標(biāo)識碼: A
文章編號: 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是由國際電信聯(lián)盟(ITU)和國際標(biāo)準(zhǔn)化組織(ISO)共同提出的最新一代數(shù)字視頻壓縮標(biāo)準(zhǔn),它吸取了以往壓縮技術(shù)的精華,又引進(jìn)了其他壓縮技術(shù)無法比擬的許多新技術(shù),因此,H.264在通信領(lǐng)域得到了廣泛應(yīng)用。H.264/AVC壓縮效率很高,但算法的復(fù)雜度和運(yùn)算量同時也大大增加,為了滿足視頻解碼實(shí)時性的要求,尋求更有效的解碼技術(shù)成為重要的研究課題。
    幀內(nèi)預(yù)測是視頻編解碼中重要的一部分,其主要功能是降低圖像的空間冗余。本文根據(jù)H.264/AVC 幀內(nèi)預(yù)測的特點(diǎn)并結(jié)合對其算法的分析,提出了一種幀內(nèi)預(yù)測硬件電路結(jié)構(gòu),有效地減少了硬件電路面積,提高了解碼的性能。
1 H.264幀內(nèi)預(yù)測算法介紹
    H.264視頻解碼器中,對于I和SI宏塊類型采用幀內(nèi)預(yù)測來解碼。幀內(nèi)預(yù)測模塊的輸入是當(dāng)前宏塊相鄰左邊塊和上邊塊環(huán)路濾波前的像素值及參考預(yù)測模式,輸出是當(dāng)前宏塊的預(yù)測值。預(yù)測值與反變換反量化得到的殘差值重構(gòu),得到宏塊的像素值。完成后,當(dāng)前宏塊的部分像素值和預(yù)測模式要進(jìn)行存儲,為后面宏塊解碼提供參考值。
    H.264中亮度預(yù)測分兩類,一類是針對圖像中含有大量細(xì)節(jié)的部分采用4×4塊的預(yù)測模式(有9種預(yù)測模式);另一類是對圖像中比較平緩的區(qū)域采用16×16塊的預(yù)測模式(有4種預(yù)測模式)。色度預(yù)測是8×8塊的預(yù)測模式,有4種預(yù)測模式,這4種預(yù)測模式與亮度16×16的預(yù)測模式相似,也有豎直、水平、DC和平面模式。所有的預(yù)測模式都是根據(jù)左邊塊和上邊塊的參考值,計算當(dāng)前宏塊的預(yù)測值。
2 硬件實(shí)現(xiàn)
    根據(jù)幀內(nèi)預(yù)測算法,硬件結(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模塊都是存儲單元,分別存儲的是當(dāng)前宏塊左邊塊的參考值、當(dāng)前宏塊上邊塊參考值、當(dāng)前宏塊上邊塊的參考預(yù)測模式、提取的參考像素值和當(dāng)前宏塊預(yù)測值輸出;predmode模塊預(yù)測計算出當(dāng)前塊的預(yù)測模式;plane模塊是對plane預(yù)測模式的預(yù)處理;prediction模塊是幀內(nèi)預(yù)測的核心計算單元,4個PE單元并行運(yùn)算,一個時鐘周期解碼出一個4×4的一列4個預(yù)測值;reconstruct模塊的功能是實(shí)現(xiàn)重構(gòu)。

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

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

 

 

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

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

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

    上述公式,首先求得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è)計
    plane模式的關(guān)鍵是求得參數(shù)H和V,其硬件設(shè)計如圖6所示。以V為例介紹本電路。
  
    舉例說明本運(yùn)算單元如何計算出參數(shù)H:
    當(dāng)a=a11、b=a12、c=a3、d=a3、sum=0、mux1=0、IS6=0、IS7=0、shift1=0、shift2=1時,就可以求得A1+A3。a=a21、b=a22、c=a51、d=a52、sum=0、mux1=0、IS6=0、IS7=0、shift1=1、shift2=2時,就可以求得A2+A5,并依照這個運(yùn)算單元可求出A4+A6和A8+A7。
    本電路4個時鐘周期就可以求得H或V,所以共需要8個時鐘周期求H和V。本方法與通常方法相比,只計算一次A、b、c的值,其他位置的預(yù)測值只需要在A的基礎(chǔ)上加上b或者c的倍數(shù),降低了復(fù)雜度。
3 實(shí)驗(yàn)結(jié)果
    本設(shè)計使用Verilog HDL完成硬件代碼的編寫,并用Altera公司的Quartus II 8.0進(jìn)行代碼的仿真和綜合。圖7為核心單元prediction模塊的仿真結(jié)果,PE0_out、PE1_out、PE2_out、PE3_out9為4個并行單元的輸出。采用Altera公司的Cyclone II進(jìn)行本設(shè)計FPGA驗(yàn)證,本設(shè)計占用的邏輯資源數(shù)量較少,節(jié)約了硬件資源。
    本文根據(jù)H.264幀內(nèi)預(yù)測的特點(diǎn),提出了一種并行處理的硬件實(shí)現(xiàn)方法。該方法能夠提高幀內(nèi)預(yù)測的處理速度,節(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)載。