万老师《H.265/HEVC》第十章:编解码并行处理

本篇博客对H.265/HEVC的编解码并行处理进行学习。

首先了解一下线程:线程是进程的一部分。进程在这里可以理解为一次视频编码,即编码一个视频的过程,那么线程就可以视作编码一个GOP、编码一个Slice、编码一个CTU等。可以认为进程包含很多线程。

1 并行处理技术

H.265的高复杂度来源:更多的帧内模式、更灵活的划分方式、TU块的引入。
并行方式:多个处理器,多核并行可以成倍增加编解码速度。

功能并行:预测、变换、滤波、熵编码等功能模块一起进行。
数据并行:数据完全独立的slice、tile一起进行;此外CTU级还有波前并行处理。

H.265中的功能并行:熵解码其余模块并行解码串行。
H.265中的数据并行:tile的并行和波前并行均存在。

并行处理缺陷:
码率飙升问题:同时编码很多内容会导致比特数非常多,且码率不够稳定。
负载失衡:有的线程要做的任务很多,但有的线程要做的很少,这种不平衡在功能并行、slice级并行均会出现。

2 具体应用

1、GOP级并行:一个线程用于统筹控制,多个线程并行处理GOP,此方法更适用于编码端。
2、图像级并行:由于帧间预测,在同级别的B帧下可以适用。
3、Slice级并行:各个Slice相互独立,故完全可行。
4、Tile级的并行:Tile是矩形CTU组,引入主要就是为并行处理,其改变了CTU的扫描顺序,减少了帧间缓存,但忽略相关性会导致性能损失。
5、CTU级的波前并行:按CTU的行进行,多行CTU同时处理,但后一行比前一行慢2个CTU,保证了原始性能。所谓波前并行(WPP),指的就是CTU不是独立的、需要相互参考时使用的并行处理。如帧内预测需要上一行左一列参考像素、帧间预测需要上边块和左边块的MV信息、环路滤波过程会跨CTU以及各种边界。
6、依赖片并行:将slice划分为不同区域,分别封装到独立的NAL中。解码当前依赖片只需等待参考片的一部分解码完成即可。

猜你喜欢

转载自blog.csdn.net/weixin_42979679/article/details/103208742