H265/HEVC中采用了波前并行处理(WPP)算法来进行CTB级的并行,对于CABAC熵编码,当entropy_coding_sync_enabled_flag为1时,CABAC上下文模型会在每一行的结尾处进行更新,这使得熵编码和熵解码的CTB级并行成为可能,当进行波前并行处理时,多行CTB被分别送到不同的运算单元中进行处理,但是由于相邻CTB之间的依赖性,这些运算单元不能同时开始运行,除了解码第一行CTB的线程外,每一个线程都要比上一个线程落后两个CTB进行解码,这也就意味着所有的运算单元不可能同时结束,这会造成并行效率的降低,尤其时当运算单元数较多的时候更为明显。

尽管在线程数量较多的时候,CTB级别的并行的效率有所降低,但是CTB级并行处理相对于其它并行方式还是有很多的优点,首先CTB级并行有较好的扩展性,随着图像分辨率的增加,CTB级并行的线程数也可以很方便的增加,其次,相对于其它层级的并行方式,CTB级并行的线程数也可以更好的实现负载均衡,由于分配给各个运算单元的数据信息量是较少的,因此各运算单元的运算时间不会有太大的差异,因此很容易实现负载均衡。

然而CTB级的并行也存在一些缺点,首先是熵解码的上下文模型更新的问题,在进行熵解码之前,CTB单元是无法区分的,因此必须先进行熵解码,再进行之后的图像处理,但是CABAC熵解码的概率模型需要参考从上一个更新点以后所有的码流信息,而我们无法保证在每一行CTB的开头都有一个更新点,这样波前并行处理算法就无法在CABAC熵解码部分实现,我们只能分别进行熵解码和并行处理,根据CABAC上下文模型的更新位置,我们可以确定CTB级并行的起始位置。如果CABAC上下文模型在Slice开头处更新,那么我们就可以将该Slice送入并行过程,该Slice的不同CTB行被交给不同的运算单元,利用波前并行处理算法进行解码,直到该Slice的解码结束。

其次是CTB级并行无法保证输出码率的稳定性,根据波前并行处理算法,在并行处理开始时,满足依赖关系可以进行解码的CTB数目是较少的,码率较低。随着解码的进行,越来越多的运算单元启动,码率开始增大,直到达到最大值,在解码 达到尾声时,解码运算单元又会逐个终止,这样码率优惠逐渐减小到0,这样以来,CTB级并行处理就无法达到恒定的码率,而且还会造成并行效率的下降。

针对上述问题,人们提出了一种叫做重叠波前并行的方法,来减少并行过程中由于线程增加和减少所带来的并行效率下降。在最初的波前并行算法当中,如果一个运算单元处理完一行CTB之后,在当前图像中在整幅图像解码完成之前,该运算单元会一直处于等待状态,之后,对于下一幅图像,波前并行算法会重新开始,而在重叠波前并行算法中,在图像的运动矢量足够小的情况下,一个运算单元处理完一行CTB之后,如果当前图像中没有剩余的CTB行可以交给它进行处理,该运算单元可以直接开始对下一幅图像的处理而不用等待整幅图像解码的完成。

共有6个运算单元来对当前图像进行波前处理,当线程T4完成对分配给它的CTB行的解码后,会发现当前图像中已经没有满足条件的提前运动矢量要足够小,对于前一幅图像,前4行CTB时解码完成了的,因此它们可以作为后幅图像的参考,后幅图像的最大运动矢量不能超出这4行CTB的范围,否则可能会导致后幅图像解码时缺少参考信息。重叠波前并行处理不能完全使得并行解码时的线程数恒定,但是它可以较为有效的解决由于线程数增加和减少所带来的并行效果下降的问题。

T5

T6

T2

从数据结构上来看,CTB级并行和Tile级的并行可以是同时实现的,可以将一幅图像划分为4个Tile,每个Tile交给一组运算单元来处理,而每组运算单元按照CTB级并行的方式可以并行处理3行CTB,这在理论上来说是比单纯进行CTB级并行或者Tile级并行效率更高。但是同时实现将会造成线程数大幅增加,复杂度和码率都会急剧上升。过多的运算单元之间进行通信将会占用较多的资源,而且,就每个运算单元来看,其所分到的数据信息量将会很少,负载均衡难以实现,利用率降低,因此H265/HEVC中没有提出CTB级和Tile级同时并行的方案。

hevc CTB并行相关推荐

  1. HEVC区域划分Slice Tile CTU CU PU TU

    Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...

  2. 【转载/翻译】HEVC中的CTU、CU、CTB、CB、PB和TB分别是什么

    这篇文章转载于HEVC中的CTU.CU.CTB.CB.PB和TB分别是什么_gaishi_hero的博客-CSDN博客_cu 和cb,写得很好,所以翻译一下. 看到一篇文章解释CTU.CU.CTB.C ...

  3. HEVC中的CTU、CU、CTB、CB、PB和TB分别是什么

    看到一篇文章解释CTU.CU.CTB.CB.PB和TB解释的很清晰,转发分享一下,原文需要梯子. HEVC, also known as H.265 or MPEG-H part 2(ISO/IEC ...

  4. H265/HEVC名词解释-- CTU,CTB,CU,CB,TU,PU,TB,PB,LCU,Slice,Tile,Chroma,Luma,I帧,B帧,P帧

    H265/HEVC名词解释 学H265的时候,一堆名词 CTU,CTB,CU,CB,TU,PU,TB,PB,LCU,Slice,Tile,Chroma,Luma,I帧,B帧,P帧,绕的头疼,写篇博客汇 ...

  5. HEVC编码视频格式

    一.编码图像的格式 1. 亮度分量和色度分量 SPS 中说明了编码的 图像格式  其中chroma_format_idc表明了支持的色度格式: 为0 表示只有Y分量 没有UV 分量. 1:4个Y共用一 ...

  6. RTP Payload Format for High Efficiency Video Coding (HEVC)

    版权申明:未经允许请勿转载.转载前请先联系作者(hello@yeshen.org) This memo describes an RTP payload format for the video co ...

  7. HEVC/H.265面试问题准备(PART 3. 环路滤波+熵编码)

    近期因为要准备暑期实习以及后期的秋招环节,再一次温习了<新一代高效视频编码H.265/HEVC原理.标准与实现>经典书籍,现在记录下有关阅读心得以及可能面试的问题(所有的答案都是我自己思考 ...

  8. H265/HEVC视频分层码流分析语义元素解释

    H265/HEVC视频分层码流分析语义元素解释 H265分层结构 H265码流结构 Ffmpge 抽取H264,H265码流的命令 视频参数集VPS 序列参数集SPS(Sequence Paramet ...

  9. HEVC 编解码详解

    本文转载自http://blog.csdn.net/nonmarking/article/details/47356791 本系列文章分为三个部分,首先对HEVC标准做一个介绍,然后回顾一下H.264 ...

最新文章

  1. JAVAOO 14 16章
  2. python2.6 2.7 升级成3.6之后yum
  3. 分析 C# 2.0 新特性 -- 范型(Generics)
  4. 计算机二级web题目(3)--HTML基础
  5. Android方法的概括,android中的Filter接口简介
  6. 今天pycharm不能正常使用了
  7. 无法连接iphone软件更新服务器_苹果发布了iphone、ipad和mac的新软件更新
  8. react中对于key值的理解
  9. .NET Core全面扫盲贴
  10. axure 画小程序效果图_微信小程序-基于canvas画画涂鸦
  11. 【Udacity笔记】What is Machine Learning?
  12. JDBC原生连接与连接池介绍
  13. ftp服务器文件夹设置,ftp服务器对文件夹设置权限
  14. 选对流程引擎,玩转流程设计不是梦
  15. CAD中图框和比例和打印机的纸张尺寸的关系
  16. kaggle+feature engineering(知乎抄的
  17. 网络安全入门(黑客)学习路线-2023最新版
  18. 4.DQL查询数据(※重点※)
  19. Mac中禁用向日葵(Oray)控制端自启动
  20. linux如何进u盘 命令,如何在linux下使用u盘

热门文章

  1. C++数据结构——热闹的聚会
  2. python怎么编写在线excel_超简单:用Python让Excel飞起来(零基础学python,用python实现办公自动化)...
  3. 关于dubbo快速开发和服务提供者无法注册上注意点
  4. 手机配音用哪个软件?推荐下面这几款软件
  5. linux用什么命令查看ip,Linux中ip命令的使用实例
  6. 【JQuery】操作 DOM
  7. iOS开发 DarkMode 暗黑模式
  8. android 黄金颜色,金光闪闪-六款经典款黄金首饰推荐
  9. [转]VC常用小知识
  10. 把网页知乎的视频下载下来