陈稳 张德学
摘 要 高效率视频编码(High Efficiency Video Coding 简称HEVC)是在ITU-T H.264/AVC标准基础上发展起来的新一代视频编码标准,旨在通过并行化的设计来提升视频编码效率。本文论述了HEVC解码算法的流程,提出了一种多核并行解码算法,此法算可在parallella开发板上实现。实验结果表明,此种算法可提高解码速度。
关键词 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
随着电子技术的不断发展,视频也已经成为人们不可缺少的一部分。随着高清(HD)和超高清(UHD)等技术走进我们的生活,视频编码标准必须要紧跟技术发展的步伐。尽管近年来网络带宽和存储能力迅速增加,但是也远不能满足以海量信息为特征的视频数据的传输和存储的要求,因此视频信息量的高效压缩是解决这一矛盾的重要技术措施之一。①HEVC的诞生在很大程度上缓解了这一问题,虽然由于压缩效率的提高,算法复杂度也随之增加,由此会使得解码端的算法变得复杂,增加解码时间。
目前对HEVC解码的研究主要集中在通过增加并行性来提高解码速度。所用的方法是将一帧图像分割成条带、条带片断或区块,分割出来的部分再划分并行计算区域。本文采用多核技术,通过分析每个解码模块的工作原理及所耗费的时间,将最有可能改进的去块滤波阶段和自适应取样偏移阶段分配到parallella开发板中的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)共同开发的新的视频编码标准。2013年完成了HEVC的Final Draft版,成为正式国际标准。H.264/MPEG-4 AVC是HEVC改进的基础,最明显的改进就是提高了视频编码效率,在相同的图像质量前提下,压缩率比H.264/MPEG-4 AVC提高了近一倍。②此外,HEVC还支持8-10位的色彩深度。HEVC的设计特别关注两方面的问题:提高视频编码的压缩率和提高并行处理结构的应用。此后人们对于HEVC的研究和改进也主要围绕这两方面进行。
HEVC编码复杂度大,这对编码SOC芯片的性能提出了很大的挑战。但是随着多核处理器性能的提高以及芯片处理能力的增强,算法复杂性对应用的影响将会越来越小。在不久的将来,HEVC必将会取代H.264/AVC,HEVC的发展与完善必将极大地推动高清、超高清视频的应用步伐。
2 HEVC解码流程
HEVC解码分为四个阶段,分别是熵解码阶段,重建阶段,去块滤波(Deblocking filter)阶段与取样自适应偏移(Sample addaptive offset)滤波阶段。解码流程如图1所示。
图1 HEVC解码流程图
2.1 熵解码
解码的第一个步骤就是对采用不同熵解码算法的语法元素进行解码。这一步由三个部分来完成,NAL(网络接入层 Network Access Layer)单元解析,条带头解码和条带数据解码。HEVC是以NAL方式组织数据的,编码后的数据流分割为NAL单元在有损网络环境中传输。③一个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开发板有16个协处理器可供使用,把一帧图像划分16个slice,每个slice又由一行CTU组成,这样将16个slice,即16行CTU分配到16个协处理器中,充分利用HEVC的并行性的优点,提高解码效率。
2.2 重建
包括反量化(Inverse Quantization IQ)和反变换(Inverse Transform IT)。HEVC的编码采用离散余弦变换(Discrete Cosine Transform DCT),虽然DCT在数据压缩方面并不是最佳的,但是它的优点在于将空间频率的幅值集中在低频部分,便于量化。量化的目的是降低DCT系数的精度,从而提高压缩率。由于量化会导致误差的出现,所以HEVC采用帧内预测的方法消除视频图像内部的冗余,采用帧间预测的方法消除视频各帧图像之间的冗余。运动补偿也具有同样的作用。相邻的帧有很多相似的地方,即冗余,运动补偿可以根据对先前真的预测结果,来补偿当前帧,消除冗余,提高压缩比。
2.3 去块滤波
图2 去块滤波中水平边界样点值
去块滤波(Deblocking Filter DF)与下面将要介绍的取样自适应偏移(Sample Adaptive Offset SAO)滤波都是在重建图像的基础上进行的。去块滤波分为垂直边界滤波和水平边界滤波,首先利用水平滤波器对垂直边界滤波,然后再利用垂直滤波器对水平边界滤波。同时,过强的滤波会导致图像细节区过度平滑,而滤波强度不够又会使得方块效应降低图像的质量,所以HEVC规定了三种边界强度:0、1、2。④如果强度大于0,就需要对块边界进行判定,以确定当前边界是否需要滤波。每个边界选取周围8€?个点参与滤波运算,由四行像素值确定滤波运算是否进行,如图2所示。
上方的四行样点值需要满足:dp0+dp1+dp2+dp3<,才会执行滤波操作。计算公式如式(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开发板的16个协处理器中,水平边界滤波完成后,对垂直边界滤波做同样的操作,这样将原本由单核完成的任务交给多核完成,从而提高滤波效率。
2.4 取样自适应偏移滤波
取样自适应偏移(Sample Adaptive Offset SAO)滤波是HEVC增加的一个解码部分,是与H.264/AVC最重要的区别之处。SAO滤波应用在去块滤波的垂直滤波之后,它与去块滤波具有相关性,不是独立存在的,它的作用是消除取样差值造成的振铃现象和方块效应。⑤SAO工作流程如图3所示。
图3 取样自适应偏移滤波
SAO通过分析去块滤波后的数据与原始图像之间的关系来对去块滤波后的数据进行补偿操作,使其能够尽量接近原始图像的效果。SAO滤波会根据样本的类和适应的区域使用不同的偏移量,具体分为两种偏移方式:带状偏移(Band Offset BO)和边缘偏移(Edge Offset EO)。带状偏移在重建像素上增加偏移量时不需要参考相邻像素的信息,没有数据的相关性。而边缘偏移需要参考8个相邻像素的信息。当parallella-16开发板中的16个协处理器完成对去块滤波的垂直滤波后,接着进行取样自适应偏移滤波。
3 多核并行算法工具
首先将HEVC的标准测试模型HM12.0移植到parallella中,然后使用openMP C compiler,调用parallella-16中的协处理器,将其分配到需要并行运算的解码部分,完成解码。
3.1 parallella
Parallella是一个和信用卡差不多大小的主机板,由Adapteva公司设计开发,内有双核的ARM A9处理器,parallella-16拥有16个Epiphany协处理器核。Parallella是为并行计算而设计的,具有开源,节能,性能高,体积小等特点。⑥Parallella开发板实物图如图4所示,parallella并行体系结构如图5所示。
3.2 OpenMP C Compiler
OpenMP C Compiler(OMPi)是共享内存的并行计算平台上一个基于源代码变换技术的OpenMP编译器,它使用C语言源代码和OpenMP的#progmas生成调用多线程的C代码。OpenMP是一个跨平台的多线程实现,主线程生成一系列的子线程,并将任务划分给子线程执行。这些子线程的并行运行,由运行环境将线程分配给不同的处理器。endprint
图4 parallella开发板实物图
图5 parallella并行体系结构
图6 HM12.0各解码部分执行时间
图7 HM12.0各解码部分所占比例
4 实验设计
将HM12.0移植到parallella开发板上,分析各解码部分的代码,得出HM12.0解码各部分代码的执行时间,如图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