文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)08-0050-04
AVS(Audio Video coding Standard)是由中國數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)工作組制定的標(biāo)準(zhǔn),是國內(nèi)第一個(gè)針對(duì)音視頻產(chǎn)業(yè)需求而制定的標(biāo)準(zhǔn)。AVS-P2標(biāo)準(zhǔn)面向標(biāo)清、高清視頻編碼應(yīng)用,其采用了與H.264類似的技術(shù)框架。AVS標(biāo)準(zhǔn)在獲得高編碼效率的同時(shí)降低了實(shí)現(xiàn)的復(fù)雜度[1]。
幀內(nèi)預(yù)測(cè)編碼器包含編碼過程和重建過程兩個(gè)方向的碼流分支。編碼過程包括幀內(nèi)預(yù)測(cè)模式選擇、整數(shù)DCT變換、量化、熵編碼等過程;重建過程則將編碼過程中量化后的殘差系數(shù)進(jìn)行反量化反變換,最終得到重建像素[2]。圖1所示為幀內(nèi)預(yù)測(cè)編碼器的硬件架構(gòu)。編碼器在預(yù)測(cè)一個(gè)8×8像素塊時(shí),需要使用相鄰塊的重建像素作為參考樣本,編碼器需要等待相鄰子宏塊完成最優(yōu)預(yù)測(cè)模式選擇、變換量化和反量化反變換后才能對(duì)當(dāng)前子宏塊進(jìn)行預(yù)測(cè),這種編碼方法需要合理設(shè)計(jì)編碼流水結(jié)構(gòu)來保證編碼速度。針對(duì)上述問題,本文提出一種幀內(nèi)預(yù)測(cè)硬件結(jié)構(gòu),使用重建像素作為參考樣本,具有相同預(yù)測(cè)值求解算法的預(yù)測(cè)模式共用一個(gè)預(yù)測(cè)器,在進(jìn)行編碼時(shí)無需等待參考樣本重建過程,其并行處理電路結(jié)構(gòu)提高了數(shù)據(jù)處理速度并且兼顧了編碼圖像的質(zhì)量。
1 幀內(nèi)預(yù)測(cè)算法分析
AVS幀內(nèi)預(yù)測(cè)亮度塊和色度塊均采用8×8塊,亮度塊共有5種預(yù)測(cè)模式,色度塊有4種預(yù)測(cè)模式,其中色度預(yù)測(cè)模式有3種與亮度預(yù)測(cè)模式算法相同。幀內(nèi)預(yù)測(cè)模式如表1所示。
參考文獻(xiàn)[3]提出的幀內(nèi)預(yù)測(cè)電路使用原始像素作為預(yù)測(cè)塊的參考樣本,在這一預(yù)測(cè)過程中編碼器無需等待相鄰塊完成重建過程,這種方法雖然提高了編碼的速度,但也降低了編碼圖像的質(zhì)量[4]。針對(duì)上述問題,本文設(shè)計(jì)了幀內(nèi)預(yù)測(cè)的并行流水線結(jié)構(gòu),在對(duì)8×8像素子宏塊進(jìn)行幀內(nèi)預(yù)測(cè)時(shí),像素重建過程與像素預(yù)測(cè)過程同時(shí)進(jìn)行,幀內(nèi)預(yù)測(cè)編碼器無需等待重建過程,提高了編碼效率。具體流水線設(shè)計(jì)如下文所述。
AVS標(biāo)準(zhǔn)中規(guī)定,對(duì)一幀圖像進(jìn)行編碼時(shí)是以宏塊為單位進(jìn)行編碼,宏塊內(nèi)編碼則是以子宏塊編號(hào)依次進(jìn)行,亮度塊與色度塊分別編碼。在對(duì)圖3所示8×8子宏塊F進(jìn)行幀內(nèi)預(yù)測(cè)時(shí),相鄰的上邊和左邊宏塊已經(jīng)完成了重建過程,參考樣本存入寄存器中等待使用。當(dāng)前預(yù)測(cè)塊F為0號(hào)子宏塊時(shí),幀內(nèi)預(yù)測(cè)使用的參考樣本均來自相鄰宏塊的重建像素且參考樣本A、B、C、D、E均可用;當(dāng)前預(yù)測(cè)塊F為1號(hào)子宏塊時(shí),來自相鄰宏塊的參考樣本A、B、E和來自0號(hào)子宏塊的參考樣本C可用,其他參考樣本均不可用;當(dāng)前預(yù)測(cè)塊F為2號(hào)子宏塊時(shí),分別來自0號(hào)和1號(hào)子宏塊的參考樣本A、B和來自相鄰宏塊的參考樣本C、E可用,其他參考樣本均不可用,對(duì)于來自1號(hào)子宏塊的參考樣本,只用到參考樣本塊B中的第一個(gè)樣本(即參考樣本r[9]),由于相鄰像素之間相似度很大,本文使用參考樣本r[8]代替r[9],這樣只需使用0號(hào)子宏塊的重建像素;當(dāng)前預(yù)測(cè)塊F為3號(hào)子宏塊時(shí),來自0號(hào)、1號(hào)和2號(hào)子宏塊的參考樣本E、A、C和來自相鄰宏塊的參考樣本B可用,宏塊內(nèi)的依賴性最強(qiáng)。同樣可以得出,色度子宏塊編碼時(shí)在宏塊中沒有依賴性。所以在對(duì)子宏塊逐塊進(jìn)行編碼時(shí),可以在亮度子宏塊預(yù)測(cè)過程之間插入色度子宏塊的預(yù)測(cè)過程。幀內(nèi)預(yù)測(cè)器流水線設(shè)計(jì)如圖4所示。由于1號(hào)、2號(hào)子宏塊的參考樣本均只來自0號(hào)子宏塊的重建像素,因此可以依次對(duì)這兩個(gè)子宏塊進(jìn)行預(yù)測(cè),再對(duì)V色度子宏塊進(jìn)行預(yù)測(cè),最后對(duì)3號(hào)子宏塊進(jìn)行預(yù)測(cè)。在對(duì)色度塊進(jìn)行預(yù)測(cè)的同時(shí)亮度塊進(jìn)行重建,在流水編碼時(shí)無需等待相鄰子宏塊的重建像素,提高了工作效率。
3 并行幀內(nèi)預(yù)測(cè)電路硬件設(shè)計(jì)
幀內(nèi)預(yù)測(cè)編碼器的另一個(gè)設(shè)計(jì)重點(diǎn)是模式預(yù)測(cè)電路的硬件設(shè)計(jì)。參考文獻(xiàn)[5-6]提出了針對(duì)H.264中幀內(nèi)預(yù)測(cè)的可重構(gòu)硬件電路。該電路可根據(jù)預(yù)測(cè)模式的不同對(duì)運(yùn)算模塊和數(shù)據(jù)通路進(jìn)行重構(gòu),從而達(dá)到對(duì)資源的最優(yōu)化利用。其缺點(diǎn)是像素塊處理速度慢,不利于實(shí)現(xiàn)高清實(shí)時(shí)編碼。參考文獻(xiàn)[7-8]針對(duì)預(yù)測(cè)值求解算法相同的模式設(shè)計(jì)了一個(gè)共用的預(yù)測(cè)器,從而優(yōu)化硬件資源。本文采用第二種方法,通過分析各預(yù)測(cè)模式之間的關(guān)系,設(shè)計(jì)出一個(gè)模式通用的預(yù)測(cè)器,并采用8路數(shù)據(jù)并行處理,解決了可重構(gòu)硬件電路處理速度慢的問題。
分析亮度和色度的預(yù)測(cè)模式算法,本文將幀內(nèi)模式預(yù)測(cè)電路分為兩部分,亮度塊預(yù)測(cè)模式通用電路模塊和Plane模式預(yù)測(cè)電路模塊。
3.1 亮度預(yù)測(cè)模式電路設(shè)計(jì)
本文設(shè)計(jì)了8像素并行處理結(jié)構(gòu),即預(yù)測(cè)電路一個(gè)時(shí)鐘完成8個(gè)像素預(yù)測(cè),完成一個(gè)8×8子宏塊所有模式的預(yù)測(cè)并得到最優(yōu)預(yù)測(cè)模式最多需要8×5=40個(gè)時(shí)鐘。分析模式預(yù)測(cè)算法,Vertical和Horizontal模式直接輸出參考樣本為預(yù)測(cè)樣本值,即預(yù)測(cè)值為對(duì)應(yīng)行或列的r[i]或c[i]值,只需要將參考像素RAM中的值直接輸出;DC、Down_Left和Down_Right模式結(jié)構(gòu)中,均有兩次(a+2×b+c+2)>>2的運(yùn)算過程,其中a、b、c為求取預(yù)測(cè)值相對(duì)應(yīng)的參考像素,將其轉(zhuǎn)化為兩個(gè)并行結(jié)構(gòu)的硬件電路,該電路只包含移位和加法器模塊,硬件結(jié)構(gòu)簡(jiǎn)單。該亮度預(yù)測(cè)模式硬件電路如圖5所示。
3.2 Plane預(yù)測(cè)模式電路設(shè)計(jì)
Plane預(yù)測(cè)模式是幀內(nèi)預(yù)測(cè)中運(yùn)算最復(fù)雜的模式[9],圖6所示是本文設(shè)計(jì)的Plane預(yù)測(cè)模式硬件電路。由于參數(shù)ia、ib、ic、ih和iv均是由已知的參考樣本經(jīng)過運(yùn)算得到的,因此可以在編碼流水中提前在參考像素RAM中取出相應(yīng)的參考像素并計(jì)算出ia、ib和ic的值供預(yù)測(cè)Plane模式時(shí)使用。在Plane預(yù)測(cè)模式中使用到的乘法運(yùn)算均用移位來代替,節(jié)省了硬件資源。
為了簡(jiǎn)化Plane模式的硬件結(jié)構(gòu),假設(shè)A=ia+(-3)×ib+(-3)×ic+16,可以分析得出PredMatrix[x,y]=Clip1((A+x×ib+y×ic)>>5),其中x×ib和y×ic運(yùn)算可以轉(zhuǎn)化ib和ic的移位加和運(yùn)算。
4 仿真和綜合結(jié)果
本文根據(jù)高清視頻實(shí)時(shí)編碼的實(shí)際要求,設(shè)計(jì)實(shí)現(xiàn)了AVS幀內(nèi)預(yù)測(cè)編碼器的硬件電路。該編碼器每個(gè)時(shí)鐘周期可處理8個(gè)像素,采用并行流水線結(jié)構(gòu)對(duì)各個(gè)模式進(jìn)行預(yù)測(cè)。該設(shè)計(jì)使用Verilog HDL語言完成硬件的編寫,選用Altera公司的Cyclone II 系列2C35 FPGA芯片進(jìn)行了綜合和驗(yàn)證,部分仿真結(jié)果如圖7所示。其中enable_A~enable_E表示為預(yù)測(cè)塊所用參考樣本的可用性,valid_mode表示有效模式輸出,PE0_out_reg~PE7_out_reg表示8個(gè)像素預(yù)測(cè)輸出。從仿真圖中可以看出,電路按照本文設(shè)計(jì)的流水線進(jìn)行預(yù)測(cè),每8個(gè)時(shí)鐘周期完成一個(gè)預(yù)測(cè)模式的預(yù)測(cè),預(yù)測(cè)結(jié)果正確。本設(shè)計(jì)所占用的邏輯資源數(shù)量較少,節(jié)省了硬件資源;且本設(shè)計(jì)提出的并行流水線結(jié)構(gòu)能夠提高幀內(nèi)預(yù)測(cè)電路的工作速度,滿足了高清視頻實(shí)時(shí)編碼的要求,對(duì)AVS高清視頻編碼芯片設(shè)計(jì)具有一定的意義。
參考文獻(xiàn)
[1] AVS工作組.信息技術(shù)先進(jìn)音視頻編碼:視頻[M].北京:中國標(biāo)準(zhǔn)出版社,2006.
[2] 陳靖,劉京,曹喜信.深入理解視頻編解碼技術(shù)——基于 H.264標(biāo)準(zhǔn)及參考模型[M].北京:北京航空航天大學(xué)出版社,2012.
[3] Zhu Xiangkui,Yin Haibin,Gao Wen,et al.An intra prediction pipeline architecture design for AVS encoder[C].Consumer Electronics(ICCE),2010.
[4] Wang Tu-Chih,Huang Yu-Wen,F(xiàn)ang Hung-Chi,et al.Performance analysis of hardware oriented algorithm modifications in H.264[C].Acoustics,Speech,and Signal Processing,2003.
[5] Huang Yu-Wen,Hsieh Bing-Yu,Chen Tung-Chien,et al. Analysis,fast algorithm, and VLSI architecture design for H.264/AVC intra frame coder[C].IEEE Transactions on Circuit and Systems for Video Technology,2005.
[6] 劉凌志,路奇,戎蒙,等.一種并行結(jié)構(gòu)的H.264幀內(nèi)預(yù)測(cè)器[J].上海交通大學(xué)學(xué)報(bào),2006,40(1):54-58.
[7] Huang Yu-Wen,Hsieh Bing-Yu,Chen Tung-Chien,et al. Hardware architecture design for H.264/AVC intra frame coder[C].International Symposium on Circuits and System,2004.
[8] Kao Yu-Chien,Kuo Huang-Chih,Lin Yin-Tzu,et al.A high-performance VLSI architecture for intra prediction and mode decision in H.264/AVC video encoding[C].Asia Pacific Conference on Circuits and Systems,2006.
[9] 宋健,王祖強(qiáng),秦盼.H.264視頻解碼器中幀內(nèi)預(yù)測(cè)模塊的硬件設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2011,37(10):53-59.