陳穩(wěn) 張德學
摘 要 高效率視頻編碼(High Efficiency Video Coding 簡稱HEVC)是在ITU-T H.264/AVC標準基礎上發(fā)展起來的新一代視頻編碼標準,旨在通過并行化的設計來提升視頻編碼效率。本文論述了HEVC解碼算法的流程,提出了一種多核并行解碼算法,此法算可在parallella開發(fā)板上實現。實驗結果表明,此種算法可提高解碼速度。
關鍵詞 HEVC 并行 解碼算法 parallella 多核
中圖分類號:TP301.6 文獻標識碼:A ? DOI:10.16400/j.cnki.kjdkz.2015.06.027
Multi-core Parallel Decoding Algorithm Based on
High-efficiency Video Coding Standard
CHEN Wen, ZHANG Dexue
(College of Electronic, Communication and Physics,
Shandong University of Science and Technology, Qingdao, Shandong 266590)
Abstract High Efficiency Video Coding (High Efficiency Video Coding referred HEVC) is the next generation video coding standard developed in the ITU-T H.264 / AVC standard, based on the parallel design aims to improve video coding efficiency. This paper discusses the process of decoding algorithm HEVC proposed a multi-core parallel decoding algorithm, this method can be considered in parallella development board. Experimental results show that this algorithm can improve the decoding speed.
Key words HEVC; parallel; decoding algorithm; multi-core
隨著電子技術的不斷發(fā)展,視頻也已經成為人們不可缺少的一部分。隨著高清(HD)和超高清(UHD)等技術走進我們的生活,視頻編碼標準必須要緊跟技術發(fā)展的步伐。盡管近年來網絡帶寬和存儲能力迅速增加,但是也遠不能滿足以海量信息為特征的視頻數據的傳輸和存儲的要求,因此視頻信息量的高效壓縮是解決這一矛盾的重要技術措施之一。①HEVC的誕生在很大程度上緩解了這一問題,雖然由于壓縮效率的提高,算法復雜度也隨之增加,由此會使得解碼端的算法變得復雜,增加解碼時間。
目前對HEVC解碼的研究主要集中在通過增加并行性來提高解碼速度。所用的方法是將一幀圖像分割成條帶、條帶片斷或區(qū)塊,分割出來的部分再劃分并行計算區(qū)域。本文采用多核技術,通過分析每個解碼模塊的工作原理及所耗費的時間,將最有可能改進的去塊濾波階段和自適應取樣偏移階段分配到parallella開發(fā)板中的16個核中運行。
本文首先簡述HEVC標準及解碼流程,接著給出了HEVC多核并行解碼算法并做分析。
1 HEVC標準簡介
高效率視頻編碼(High Efficiency Video Coding HEVC)是于2010年誕生的,它是由ISO/IEC的MPEG(Moving Picture Experts Group)和ITU-T的VCEG(Video Coding Experts Group)成立的聯合視頻編碼組(JCT-VC)共同開發(fā)的新的視頻編碼標準。2013年完成了HEVC的Final Draft版,成為正式國際標準。H.264/MPEG-4 AVC是HEVC改進的基礎,最明顯的改進就是提高了視頻編碼效率,在相同的圖像質量前提下,壓縮率比H.264/MPEG-4 AVC提高了近一倍。②此外,HEVC還支持8-10位的色彩深度。HEVC的設計特別關注兩方面的問題:提高視頻編碼的壓縮率和提高并行處理結構的應用。此后人們對于HEVC的研究和改進也主要圍繞這兩方面進行。
HEVC編碼復雜度大,這對編碼SOC芯片的性能提出了很大的挑戰(zhàn)。但是隨著多核處理器性能的提高以及芯片處理能力的增強,算法復雜性對應用的影響將會越來越小。在不久的將來,HEVC必將會取代H.264/AVC,HEVC的發(fā)展與完善必將極大地推動高清、超高清視頻的應用步伐。
2 HEVC解碼流程
HEVC解碼分為四個階段,分別是熵解碼階段,重建階段,去塊濾波(Deblocking filter)階段與取樣自適應偏移(Sample addaptive offset)濾波階段。解碼流程如圖1所示。
圖1 HEVC解碼流程圖
2.1 熵解碼
解碼的第一個步驟就是對采用不同熵解碼算法的語法元素進行解碼。這一步由三個部分來完成,NAL(網絡接入層 Network Access Layer)單元解析,條帶頭解碼和條帶數據解碼。HEVC是以NAL方式組織數據的,編碼后的數據流分割為NAL單元在有損網絡環(huán)境中傳輸。③一個NAL單元由NAL單元頭和NAL單元有效載荷組成,不同的NAL單元可分為攜帶編碼過的圖像數據的VCL NAL單元和攜帶多幀共享的元數據的非VCL NAL單元。在HEVC視頻編解碼的過程中,一幀圖像會被分割成條帶(slice),條帶片斷(slice segment)或塊(tile),條帶是由條帶片斷組成的元素。我們可以將一幀圖像分割成許多的slice,也可以一個slice中只有一幀圖像。Slice中存放了之前編碼過的圖像信息,其中,Slice頭信息包含了當前圖像的整體信息,比如當前圖像的預測方式,QP等整幀圖像編碼的信息;Slice數據信息包含了圖像的預測和殘差信息。這一階段最重要的特點是一個slice為一個獨立的解碼單元,由于這種包含信息的獨立性,避免了一個slice信息的丟失而連累其它slice信息,降低了誤碼率。endprint
HEVC采用了WPP(Wavefront parallel processing)和Tile兩種方法使HEVC更加適應并行性,即每一個slice都是可獨立進行解碼的,同時,slice內部又分為許多編碼樹單元(Coding Tree Unit ?CTU),WPP使得每一行的CTU又能夠獨立的解碼。Parallella-16開發(fā)板有16個協(xié)處理器可供使用,把一幀圖像劃分16個slice,每個slice又由一行CTU組成,這樣將16個slice,即16行CTU分配到16個協(xié)處理器中,充分利用HEVC的并行性的優(yōu)點,提高解碼效率。
2.2 重建
包括反量化(Inverse Quantization IQ)和反變換(Inverse Transform IT)。HEVC的編碼采用離散余弦變換(Discrete Cosine Transform DCT),雖然DCT在數據壓縮方面并不是最佳的,但是它的優(yōu)點在于將空間頻率的幅值集中在低頻部分,便于量化。量化的目的是降低DCT系數的精度,從而提高壓縮率。由于量化會導致誤差的出現,所以HEVC采用幀內預測的方法消除視頻圖像內部的冗余,采用幀間預測的方法消除視頻各幀圖像之間的冗余。運動補償也具有同樣的作用。相鄰的幀有很多相似的地方,即冗余,運動補償可以根據對先前真的預測結果,來補償當前幀,消除冗余,提高壓縮比。
2.3 去塊濾波
圖2 去塊濾波中水平邊界樣點值
去塊濾波(Deblocking Filter DF)與下面將要介紹的取樣自適應偏移(Sample Adaptive Offset SAO)濾波都是在重建圖像的基礎上進行的。去塊濾波分為垂直邊界濾波和水平邊界濾波,首先利用水平濾波器對垂直邊界濾波,然后再利用垂直濾波器對水平邊界濾波。同時,過強的濾波會導致圖像細節(jié)區(qū)過度平滑,而濾波強度不夠又會使得方塊效應降低圖像的質量,所以HEVC規(guī)定了三種邊界強度:0、1、2。④如果強度大于0,就需要對塊邊界進行判定,以確定當前邊界是否需要濾波。每個邊界選取周圍8€?個點參與濾波運算,由四行像素值確定濾波運算是否進行,如圖2所示。
上方的四行樣點值需要滿足:dp0+dp1+dp2+dp3<,才會執(zhí)行濾波操作。計算公式如式(1)所示。
dp0=|p2,0-2p1,0+p0,0|, dp3=|p2,3-2p1,3+p0,3| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
dp4=|p2,4-2p1,4+p0,4|, dp7=|p2,7-2p1,7+p0,7|
此公式的意義在于通過與直線比較,反映出塊邊界信號強度的變化。將此公式用于垂直方向的濾波,只需將行列的下標調換位置。
HEVC在對去塊濾波的設計上更能反映出HEVC對并行性的應用。垂直邊界濾波與水平邊界濾波之間具有相關性,水平邊界濾波的結果作為垂直邊界濾波的輸入。但是,每一個水平邊界濾波進程和每一個垂直邊界濾波進程都是獨立的,可以并行處理。由此,運用到多核并行解碼算法中,可以將水平邊界濾波進程分配到parallella-16開發(fā)板的16個協(xié)處理器中,水平邊界濾波完成后,對垂直邊界濾波做同樣的操作,這樣將原本由單核完成的任務交給多核完成,從而提高濾波效率。
2.4 取樣自適應偏移濾波
取樣自適應偏移(Sample Adaptive Offset SAO)濾波是HEVC增加的一個解碼部分,是與H.264/AVC最重要的區(qū)別之處。SAO濾波應用在去塊濾波的垂直濾波之后,它與去塊濾波具有相關性,不是獨立存在的,它的作用是消除取樣差值造成的振鈴現象和方塊效應。⑤SAO工作流程如圖3所示。
圖3 取樣自適應偏移濾波
SAO通過分析去塊濾波后的數據與原始圖像之間的關系來對去塊濾波后的數據進行補償操作,使其能夠盡量接近原始圖像的效果。SAO濾波會根據樣本的類和適應的區(qū)域使用不同的偏移量,具體分為兩種偏移方式:帶狀偏移(Band Offset BO)和邊緣偏移(Edge Offset EO)。帶狀偏移在重建像素上增加偏移量時不需要參考相鄰像素的信息,沒有數據的相關性。而邊緣偏移需要參考8個相鄰像素的信息。當parallella-16開發(fā)板中的16個協(xié)處理器完成對去塊濾波的垂直濾波后,接著進行取樣自適應偏移濾波。
3 多核并行算法工具
首先將HEVC的標準測試模型HM12.0移植到parallella中,然后使用openMP C compiler,調用parallella-16中的協(xié)處理器,將其分配到需要并行運算的解碼部分,完成解碼。
3.1 parallella
Parallella是一個和信用卡差不多大小的主機板,由Adapteva公司設計開發(fā),內有雙核的ARM A9處理器,parallella-16擁有16個Epiphany協(xié)處理器核。Parallella是為并行計算而設計的,具有開源,節(jié)能,性能高,體積小等特點。⑥Parallella開發(fā)板實物圖如圖4所示,parallella并行體系結構如圖5所示。
3.2 OpenMP C Compiler
OpenMP C Compiler(OMPi)是共享內存的并行計算平臺上一個基于源代碼變換技術的OpenMP編譯器,它使用C語言源代碼和OpenMP的#progmas生成調用多線程的C代碼。OpenMP是一個跨平臺的多線程實現,主線程生成一系列的子線程,并將任務劃分給子線程執(zhí)行。這些子線程的并行運行,由運行環(huán)境將線程分配給不同的處理器。endprint
圖4 parallella開發(fā)板實物圖
圖5 parallella并行體系結構
圖6 HM12.0各解碼部分執(zhí)行時間
圖7 HM12.0各解碼部分所占比例
4 實驗設計
將HM12.0移植到parallella開發(fā)板上,分析各解碼部分的代碼,得出HM12.0解碼各部分代碼的執(zhí)行時間,如圖6所示。更加直觀的餅狀圖如圖7所示。
由圖6,7可以看出,濾波部分(去塊濾波和SAO濾波)占用的解碼時間最多,所以這是一個解碼上的瓶頸,前面已經介紹了去塊濾波部分的垂直濾波和水平濾波可以滿足并行性的要求,再加上利用HEVC的WPP方法增強并行性,綜合考慮,對熵解碼階段和濾波階段進行多核分配。
5 結論
本文基于新一代視頻編碼標準HEVC較高的并行性,提出了一種可在多核中實現的并行解碼算法,通過部分解碼代碼在多核中的有效分配,提高了HEVC解碼的效率,使其更加適應現代社會對于視頻解碼速度的要求。
注釋
① 朱秀昌,李欣,陳杰.新一代視頻編碼標準——HEVC[J].南京郵電大學學報(自然科學版),2013(3).
② G.J. Sullivan, Woo-Jin Han, and T. Wiegand, “Overview of the High Efficiency Video Coding (HEVC) Standard,” IEEE Transactions on Circuits and Systems for Video Technology,vol.22,no.12,pp.1649-1668,Dec.2012.
③ Rickard Sj berg, Ying Chen,Akira Fujibayashi,Miska M. Hannuksela,Jonatan Samuelsson,Thiow Keng Tan,Ye-Kui Wang,and Stephan Wenger,“Overview of HEVC High-Level Syntax and Reference Picture Management”,IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12 pp.1858-1870,Dec.2012.
④ Andrey Norkin,Gisle Bj ntegaard,Arild Fuldseth,Matthias Narroschke,Masaru Ikeda,Kenneth Andersson,Minhua Zhou,and Geert Van der Auwera,”HEVC Deblocking Filter,”IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, pp.1746-1754,Dec,2012.
⑤ Chih-Ming Fu,Ching-Yeh Chen, Yu-Wen Huang, Shawmin Lei. Mediatek Inc,“Sample Adaptive Offset for HEVC,”Multimedia Signal Processing (MMSP), ?2011 IEEE 13th International Workshop.
⑥ Parallella:Parallella-1.x Reference Manual [EB/OL].[2014-09-09].http://www.parallella.org/docs/parallella_manual.pdf.endprint