Location:Lab1305
Author:Fangdi
Email;542210006@qq.com
Date:2014.11.7
最近几天一直再研究HEVC,一方面是为了能够更加了解当前最新视频编解码标准,另一方面重点研究HEVC中的并行结构,并在实验室里的Tilera多核处理器实现并行算法。
HEVC在编码原理和基本结构中和H.264/AVC基本一致,即预测加变换的分块编码方式:帧内预测、帧间预测、运动估计与补偿、正交变换、量化、环路滤波、熵编码和重建等编解码模块。但HEVC在每一个环节都采取了重要的改进,显著提高了编码效率。HEVC能够实现H.264所有的应用,而且专注于两大方面:高清超高清视频和并行处理架构。而在硬件方面的发展,随着单核处理器的性能的极限,多核处理器将成为微处理器发展的重要方向。目前多核处理器一般主要同构多核处理器,多核处理器的性能潜力发挥与应用中任务的可并行性分解密切相关。而HEVC有着超高的算法复杂度以及海量数据,一般处理器对HEVC进行编解码可能会效率很低,这个低不是指的HEVC编码效率低,不如H.264,而是指在超高清海量视频下,对编解码的硬件平台也就有了更高的要求,但HEVC标准的设计中本身就有很多良好的并行结构,为多核处理器能够更高效率的进行编解码。所有说,视频编解码的发展离不开硬件技术的发展,两者相辅相成。
通过阅读《Overview of HEVC》可发现,HEVC当中不光设计了很多并行结构(Slice,Tile,WPP),更在高层语法中设计了很多专门为并行处理设计的语法,简直就是为了多核处理器专门设计的视频编解码标准。三种并行结构如下:
1.并行块(Tile)片
HEVC定义了一个可选的方式,可以把一帧图像分割成并行块。并行块的主要目的是在增强并行处理的能力同时又不引入新的错误扩散。并行块是一些在一帧图像内使用一些共有的信息编码而成,但可以独立解码的区域。一般的做法是将图像切割成包含大体相同数量CTU的并行块。并行块的引入使得简单粗粒度的并行化处理成为可能,线程之间将不再需要考虑复杂的同步和锁。
2.波前并行处理(WPP)
主要用于熵编码。当WPP开启时,片先被分成数个CTU行。第一行正常处理,第二行在第一行处理完2个CTU后开始处理,第三行在第二行处理完2个CTU后开始处理。每一行相对前一行都有2个CTU的延迟。WPP提供了一种在适当的层级上(比如说片)并行化的方式。WPP可以提供比并行块更好的压缩效率,而且不会引入块效应。
3.依赖更小的片(Dependent slice segments )
这个设计允许数据与错峰并行处理或者并行块关联起来,在碎片化的包传输网络中,相对于一次编码一整片而言,这种做法可以更快进入解码流程,从而降低延迟。与错峰并行处理一起使用用时,它也需要类似错峰的机制。这项设计尤为适合低延迟要求下的并行处理。
高层并行语法还有待进一步研究。