周建政,劉華平
(1.天格科技(杭州)有限公司,浙江 杭州 310011;2.上海格譜信息科技有限公司,上海 200072)
H.265同H.264/AVC一樣采用的變換算法是基于宏塊的DCT算法,因此,當壓縮率很高時,就會導致嚴重的塊效應。為了提高主觀和客觀視覺效果,H.265中同樣引入去塊效應濾波系統(tǒng),可以很好地消除塊效應的影響,并且濾波后的幀可用于后續(xù)幀的運動補償預測,從而避免了由于虛假邊界積累誤差而導致的圖像質量進一步降低,但同時,去塊效應濾波系統(tǒng)也帶來了大量的復雜運算[1-2],特別是大分辨率視頻,去塊效應相關參數(shù)都是跨越多行,這樣導致對數(shù)據讀寫內存Cache Miss,對于1 080p視頻去塊效應濾波計算量占據H.265解碼器25%~30%,因此去塊效應濾波系統(tǒng)成為H.265在實時應用中的主要瓶頸之一。
近一年,移動終端設備CPU技術朝高主頻,多核和低功耗方向發(fā)展,這就為大視頻在移動設備上的流暢播放提供硬件資源基礎。H.265是最新一代視頻編解碼器技術,其市場應用響應相應比H.264要快速,目前互聯(lián)上就有很多H.265壓制的視頻源,H.265解碼性能優(yōu)化就成為一件急迫的事。
本文先對H.265標準中的去方塊濾波進行詳細的介紹,分析在HM14.0現(xiàn)在的架構中不能并行化處理的原因,然后對HM14.0的軟件結構進行設計,讓H.265去塊效應濾波能做到基于CU行并行處理,這樣就可以充分利用移動終端多核并行處理,大大提升解碼器的速度。在每個宏塊行內每個像素行,進一步用ARMv7 SIMD匯編指令去優(yōu)化,最后給出性能優(yōu)化前后的數(shù)據。
H.265去方塊效應濾波采用與H.264/AVC類似的方法,但H.265邊界情況比H.264要復雜,所以考慮所有邊界條件的情況下,H.265整體去方塊效應濾波復雜度比H.264高一點。H.265去方塊效應濾波處理單元是CU,其處理順序與解碼過程一致,所有垂直邊緣先做濾波處理,然后再做所有水平邊緣的濾波處理。去方塊效應濾波流程圖如圖1所示[2-4]。
圖1 去方塊效應濾波流程圖
去方塊效應濾波涉及到3類邊界,分別是編碼單元邊界(CU boundary)、變換單元邊界(TU boundary)和預測單元邊界(PU boundary),這些邊界都會直接影響到去方塊效應濾波器的操作。例如有時CU的邊界與PU或TU的邊界重疊,邊界確定后就是計算邊界的強度,邊界的強度直接影響邊界濾波的選擇。目前這些所有的邊界信息解析和判斷都是嵌入在解碼過程中,往往要整個幀解碼完成才能知道各個邊界的消息,這樣導致去方塊效應濾波只能放到最后完整的去做,不利于幀內宏塊行的并行操作。邊界強度的計算流程圖如圖2所示。
引入2個閾值變量β和tC,這2個變量結合邊界相鄰的像素決定了濾波器的關開,強弱濾波器的選擇以及弱濾波處理。β和tC的選擇是根據相鄰像素,然后查閱參數(shù)文獻[4]。濾波器開關和強弱判斷涉及到4行邊界左右6個像素,如圖3所示。
圖2 邊界強度計算流程圖
圖3 框中的像素用于濾波關開和強弱選擇(截圖)
H.265去塊效應濾波分強濾波和弱濾波,強濾波器會用到邊界相鄰塊各4個像素值,通過如下方程式去更新邊界相鄰塊各3個像素值。方程式如下
式(1)~(3)是強濾波更新垂直邊界左邊或水平邊界上方相鄰3個像素值,式(4)~(6)是強濾波更新垂直邊界右邊或水平邊界下方相鄰3個像素值。弱濾波器會用到邊界相鄰塊各3個像素值,通過如下方程式去更新邊界相鄰塊各2個像素值。方程式如下
式(7)、(8)是弱濾波更新垂直邊界左邊或水平邊界上方相鄰二個像素值,式(9)、(10)弱濾波更新垂直邊界右邊或水平邊界下方相鄰二個像素值。
其中
圖4是HM14.0編解碼器流程,以LCU為單元,采用遞歸的方式把整個個幀解碼出來,然后整幀來進行后處理,包括去塊效應濾波和自適應校點補償處理。
圖4 H.265算法框架圖
這種結構導致無法做幀內基于LCU行的并行,去塊效應濾波器沒有基于LCU行并行,也會影響到自適應校點補償(SAO)并行處理。去塊效應濾波配合整個解碼器的幀內按LCU行的并行處理進行修改,處理過程流程圖如圖5所示。
圖5 解碼器流程圖
HM14.0結構就是先把一幀數(shù)據全部解碼出來,然后整幀進入后處理模塊,這個缺點是不能基于LCU行的并行處理,而基于LCU并行化處理,當一個線程在解碼后面的LCU單元時,另一個線程就能處理已經做好準備LCU行的去塊效應濾波和SAO?;贚CU并行化處理過程說明:解碼器仍然是以LCU為單元進行解碼,同時建立以4×4為最小塊的結構數(shù)組用于存放當前最小處理宏塊的邊界情況。去塊效應濾波較解碼器要延遲一LCU行去做濾波處理,例如解碼器第一LCU行解碼完成,不會去做去塊效應濾波,因為會影響第二行處理過程。當?shù)诙﨤CU解碼完成后才進行去塊效應處理。幀內基于LCU并行去做去塊濾波要注意保留一些數(shù)據,例如幀間預測就要保留一行LCU的像素數(shù)據,以備幀間預測使用。
ARM Cortex系列的處理器,支持并行的高效指令集(NEON),Cortex-A系列增加了16個128 bit的Q寄存器單元,這些寄存器單元可以靈活當作 8 bit,16 bit,32 bit,64 bit和128 bit單元使用,NEON寄存器結構如圖6所示。
與128 bit寄存器配對,NEON指令集有很多并行的加、減、乘和相關的邏輯指令,例如處理8 bit像素,通過NEON指令集可以一次性處理16個像素。通過SIMD指令優(yōu)化,并行的處理指令數(shù)就會是原來的1/16。
圖6 NEON寄存器結構圖
從本文的第二部分詳細分析了H.265去塊效應濾波器,例如水平強濾波器會用到邊界上下各4個像素點,然后通過一系列的并行運算后,最后更新邊界上下各3個像素點,這種結構很利于應用NEON并行指令,其數(shù)據讀取和存儲如下:
vld1.32 {d6[0]},[r4],r1 @p10,p20,p30,p40
vld1.32 {d7[0]},[r4],r1 @p11,p21,p31,p41
vld1.32 {d8[0]},[r4],r1 @p12,p22,p32,p42
vld1.32 {d9[0]},[r4],r1 @p13,p23,p33,p43
vld1.32 {d10[0]},[r4],r1 @p14,p24,p34,p44
vld1.32 {d11[0]},[r4],r1 @p15,p25,p35,p45
vld1.32 {d12[0]},[r4],r1 @p16,p26,p36,p46
vld1.32 {d13[0]},[r4] @p17,p27,p37,p47
這幾條指令就把4行,每行左右各4個共8個像素都取到寄存器中,接下來的所有運行都是一次處理4個像素,最后處理完用vst1.32一次存儲4個像素,這樣4個像素并行處理,所有的指令處理周期數(shù)是原來的1/4。
進一步優(yōu)化,濾波器的關開和強弱是基于4行像素內容去判斷,這樣的結果是4×4的塊間可能去塊效應濾波器的強弱不致,如果在上面加個判斷,如相鄰的8行像素都是使用強濾波或都是弱濾波,這樣就可以將上面的并行處理擴展到基于8行8個像素并行處理,這樣處理速度會提升8倍。
H.265主要應用場景是大視頻和高幀率,算法復雜增加,同時處理數(shù)據量多,這樣就要充分利用處理器多核并行去處理數(shù)據。本文就是闡述如何將原來在視頻幀全部解碼出來后整幀做去塊效應濾波處理,通過解碼處理過程中,并行化處理得到各個處理單元的邊界信息,實現(xiàn)了幀內基于宏塊行級的并行化處理。同時針對ARM平臺進行了SIMD匯編優(yōu)化,使得去塊效應濾波在整個解碼器算法復雜度降低了一半,大大提升了解碼器處理能力。圖7是優(yōu)化前后,去塊效應濾波在整個解碼器復雜度的比例優(yōu)化前后比較圖。
圖7 去塊效應濾波占解碼器時間比例
測試序列覆蓋H.265 ClassA~ClassE,分析統(tǒng)計去塊效應濾波在對應序列中占整個解碼器優(yōu)化前后比倒的變化。
從圖7可以看出,并行化優(yōu)化去塊效應濾波性能能整體提升解碼器近13%的性能,使得解碼器能在移動設備上能實現(xiàn)更大分辨率的視頻播放。
[1]FRANK B,BENJAMIN B,KARSTEN S,et al.HEVC complexity and implementation analysis[J].IEEE Trans.Circuits and Systems for Video Technoligy,2012,22(12):1685-1696.
[2] 唐添,王進,劉運強,等.去塊效應方法的研究[J].電視技術,2008,32(2):16-18.
[3] SULLIVAN G J,OHM J R,HAN W J,et al.Overview of the high efficiency video coding(HEVC)standard[J].IEEE Trans.Circuits and System for Video Technology,2012,22(12):1649-1668.
[4] Recommendation ITU-T H.265,Audiovisual and multimedia systems,infrastructure of audiovisual services coding of moving vide,high efficiency video coding[S].2013.
[5]HAN W J,OHM J R,SULLIVAN G J,et al.High efficiency video coding(HEVC)text specification draft 6[C]//Proc.8th JCT-VC Meeting.San Jose,CA,USA:[s.n.],2012:56-59.
[6] Cortex-A8 Technical Reference Manual[EB/OL].[2014-09-28].http://www.docin.com/p-97569305.htm l.