slice,tile和并行化

slicetile 和并行化

slice

slice 由整数个 CTU 组成,并且可以进行独立的编解码。这是通过在每个 slice 末尾终止 CABAC 码流和去除不同 slice 之间的 CTU 的依赖来实现的,但是多个 slice 头和去除不同 sliceCTU 之间的依赖会导致码率上升。划分 slice 主要有以下三个目的:

1.错误鲁棒性:将图像分割成较小的 slice,可以在数据丢失的情况下,通过重新同步解码和解析过程来获得错误鲁棒性。

2.匹配 MTUslice 大小可以与 IP 网络里的最大传输单元 MTU 大小匹配,这样只需控制 slice 中包含的最大比特数即可,而不需要考虑编码图像的大小,网络适应能力更强。

3.并行处理:并行进行多个 slice 的编解码。

slice 可以进一步划分成多个 slice segment(SS),包括一个独立 SS 和若干个依赖 SSslice 以独立的 SS 开始,并且之后的依赖 SS 只需要非常少量的 slice 头,同一个 slice 中的 SS 可以互相参考。下图是 SS 划分示例:

在这里插入图片描述

tile

slice 类似,但是 tile 将图像划分成矩形区域,如下所示

在这里插入图片描述

并且在编码的时候,tile 修改了 CTU 的扫描顺序,从基于图像的光栅扫描变成了基于 tile 的光栅扫描。一个 slice 中可以有多个 tile,一个 tile 中也可以有多个 slice。但是必须满足:

1.slice 中的所有 CTU 属于同一 tile,或者 tile 中所有的 CTU 都属于同一 slice

2.SS 中的所有 CTU 属于同一 tile,或者 tile 中所有的 CTU 都属于同一 SS

在这里插入图片描述

相比于 slicetile 更有利于感兴趣区域的编码,因为其更加的灵活。也可以利用 tile 将编码任务分配到不同的硬件设备上。

并行处理

帧级并行

优点:实现简单,并且不会造成编码性能上的损失。

缺点:并行度由图像组 Group Of Picture(GOP) 的大小等因素决定;负载可能不平衡,每帧图像的编解码时间会有很大变化;帧级并行增加了处理帧速率,但是并没有降低延迟。

slice 级并行

优点:加快每帧编码速度

缺点:slice 数量过多时会严重影响编码效率。

CTU 级并行

优点:适合流水线方式的处理,比如:进行第 n n nCTURDO 时,同时进行第 n − 1 n-1 n1CTU 的重建,第 n − 2 n-2 n2CTU 的熵编码。

缺点:调度过程复杂,并且负载不均衡。

波前并行 (Wavefront Parallel Processing, WPP)

在这里插入图片描述

WPP 适用于低时延应用。WPP 按照光栅扫描顺序进行多线程处理,每个线程从左到右处理一个 CTU 行。除了第一行外,所有 CTU 行都要比上一行 CTU 行延迟两个 CTU 进行处理。这样除了每个 CTU 行末尾的 CABAC 上下文被终止了,分区边界之间没有打破连续的 CTU 行之间的依赖关系。并且,为了减少性能损失,CABAC 的上下文从编解码的前一个 CTU 行的第二个 CTU 传播到当前 CTU 行的第一个 CTU。因此,引起的编码性能损失较小。

优点:适用于低延迟,编码性能损失较小。

缺点:当负载不平衡时,会出现额外的流水线问题。例如,CTU 行中的一个编码慢的 CTU 会导致后续 CTU 行处理停滞。

平衡时,会出现额外的流水线问题。例如,CTU 行中的一个编码慢的 CTU 会导致后续 CTU 行处理停滞。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值