视频编码----H.264到H.265的转码

  1. 背景及意义
    这里写图片描述
    最新的高效视频编码 (HEVC) 标准相比H. 264高级视频编码标准实现了显著的压缩效率改进(50%),由于其优越的压缩性能, 它在许多应用中迅速被采用。
    与H.264 标准相比,HEVC编码的计算复杂度非常高,使得难以在广泛用到的多媒体转码中的通用处理器上实现实时的高质量编码。
    由于目前H.264广泛而深入的应用,大量现有的内容已经使用 H.264标准编码, 这时候如果能有将H.264编码高效快速转为HEVC编码的系统,为大量现存H.264编码视频的移植提供技术支持,提高两者的互操作性,最终实现新技术新标准的转化,将会具有很大的价值。
  2. 一种创新编码器
    这里写图片描述
    传统的编码器使用了三级编码结构:WPP(波前并行处理);快速模式决策技术;SIMD(单指令多数据流)加速。这里在原来三级编码的基础上在编码器上加入了第四级的编码,即画面组级的任务分配。这种任务分配将输入比特流划分为独立编码的画面组;并将其分配到运行转码器的多核处理器的不同计算单元分别进行转码处理;

  3. 画面组级的任务分配
    引入原因:由于实时视频编码/转码的计算能力要求通常超过了现有单台服务器的计算能力,因此现实中许多实时软件编码器系统都是通过高速网络连接相同标准的1RU,2RU或3RU服务器进行编码。
    理论依据:GOP是包含前导即时解码刷新帧的一组图像,图像之后是与其他GOP中的帧独立编码的连续P / B帧。由于独立性,GOP可以分布到多个处理节点的系统中进行并行处理。这种并行性水平不会导致RD损失。

RU表示的是服务器外部尺寸的单位
P帧:前向预测帧
B帧:双向预测帧

这里写图片描述

这是一个画面组级的任务分配框图,利用了9个相同的Intel i7处理器实现了GOP级别的任务分配,利用带宽1 Gb / s的高速网络连接。
当执行H.264到HEVC代码转换时,输入的H.264 比特流被主节点解析为一个个GOP,然后将其中的每一个发送到转码器的工作节点之一。这个系统的整体处理速度大致是单处理帧速率乘以工作节点数量。
数据在传输的时候会进行双向压缩,即从主设备到工作者节点的H.264 比特流和从工作者节点到主设备的HEVC比特流都会进行一个压缩。因此,与在各工作节点用于代码转换的处理时间相比,这种数据传输所需的时间可以忽略不计。

Wavefront Parallel Processing(WPP)波前并行处理

这里写图片描述
接下来是波前并行处理的简单介绍,WPP是对于相互具有依赖关系的图像单元进行数据并行处理的方法,CU的编码可以在其右上方的邻码被编码后立即开始。
令w和h分别为CU中的帧宽度和高度,CU的编码顺序如图所示,其中较小索引的CU将被较早编码,而具有相同索引的CU的编码可以 被并行化。
分辨率越高,编码越快。考虑到大多数主流服务器都有四到八个内核,这种并行性足以充分利用多核处理器。

多级H.264信息在转码中的应用

原理:由于H.264 和HEVC之间的固有相似性,当从H.264 转码到HEVC时,许多H.264比特流信息可以被重新使用,包括分区大小,预测模式,参考图像和运动矢量。
这里写图片描述


    1. 分区大小和模式决策
      与H.264 / AVC相比,HEVC最重要的改进之一是包含更多用于运动预测的分区大小,与H.264 / AVC中的4×4到16×16相比,其可以在4×4到64×64之间变化。
      在这里做一个定义:对于分区大小:
      <=16 × 16: legacy Cus,对于HEVC中的CU,
      在H.264 / AVC中存在对应的MB(宏块)或者子MB分区。

16 × 16 : extended Cus,其中每一个都涵盖H.264 / AVC中的多个MB。
PU是进行预测的基本单元。H.265使用PU来实现对每一个CU单元的预测过程。PU尺寸受限于其所属的CU,可以是例如64×64像素的方块,也可以是例如64×32像素的矩形。有一种新的不对称运动分割预测(Asymmetric Motion Partition,AMP)方案,即将编码单元分为两个尺寸大小不一致的预测块。这种预测方式考虑了大尺寸可能的纹理分布,可以有效提高大尺寸块的预测效率。
与HM参考软件递归地和穷尽地将每个块分割成所有可能的较小尺寸相比,作者仅基于输入的H.264比特流检查分割尺寸的子集。
具体而言,对于传统CU,我们只检查与H.264 / AVC中使用的完全相同的分区大小。
如果H.264 / AVC分区大小处于当前划分深度,则不会进一步划分为更小的大小。如果H.264 / AVC分区大小处于下一个分区深度,它将直接跳到下一个深度,而不检查当前深度中的任何分区。
这里写图片描述
对于32×32的扩展CU,使用以下规则根据其覆盖的四个MB检查分区和模式。
2N x 2N 全部检查;
当使用Inter-16×16模式存在两个以上的MB时,将检查Inter-2N×2N;
当两个左边的MB均使用Inter-16×16模式或两个右边的MB都使用Inter-16×16模式时,检查Inter-N×2N;
当两个底部或顶部MB使用Inter-16×16模式时,检查Inter-2N×N;
当使用帧内模式存在多于两个MB时,检查帧内2N×2N。
对于64×64的扩展CU,首先执行从32×32到4×4的递归分区检查,以确定32×32是否是要使用的最佳分区大小。 如果可以,那么就在上述步骤中将32×32 CU视为16×16 MB,并使用类似规则检查64×64分区和模式。

  • 参考图像
    对于传统CU中的PU,仅检查输入H.264 比特流中的对应MB或子MB分区的参考图像。
    对于扩展CU中的PU,尝试PU所覆盖的所有MB间参考图像。
    对于传统CU中的PU,我们仅检查输入H.264 / AVC比特流中的对应MB或子MB分区的参考图片。
    对于扩展CU中的PU,我们将尝试PU所覆盖的所有MB间参考图片。
    当将H.264中的P片段转码为HEVC时,我们将其编码为HEVC中的B片段,但将仅尝试H.264的list_0中的参考图片,同时尝试HEVC的list_1中的所有参考图片。
  • 运动矢量估计
    Legacy CU的估计方法:利用H.264输入比特流中相应MB或子MB分区的参考图片以及H.264 比特流中的对应MV。
    Extended CU的估计方法:使用所覆盖的所有内部MB的MV以及由HEVC自身给出的MV预测值估计。
    通过计算MV的中值来进行估计,其中中值是基于距平均值的曼哈顿距离计算的。
    这里写图片描述
    这里写图片描述
    在扩展CU的MV估计完成后,我们将在估计MV周围的四个像素范围内进行搜索,以进行最终的MV选择。

  • 内容补充:
    所谓GOP,意思是画面组,一个GOP就是一组连续的画面。MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化。没有I帧,P帧和B帧就无法解码,这就是MPEG格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。GOP 越长,B 帧所占比例更高,编码的率失真性能越高。

    猜你喜欢

    转载自blog.csdn.net/Power1_Power2/article/details/80360150