H.264/AVC, H.265/HEVC, H.266/VVC技术对比整理-编码结构和块划分

1、H.264/AVC编码结构
1.1 GOP

  H.264编码首先将视频序列分为若干个GOP(Group of Picture),GOP第一帧为IDR(即时解码刷新)帧,IDR帧必为I帧。H.264中所有GOP独立解码,不会互相参考,称为封闭GOP。(图片来自博客HEVC中GOP参数说明)

H.264/AVC, H.265/HEVC, H.266/VVC技术对比整理-编码结构和块划分_第1张图片

1.2 slice

  GOP由若干帧组成,每帧可以划分为多个slice(条)。每个slice独立编码,使得编码可以并行,同时一个slice中的误码不会传播到其他slice,因此划分slice也可以控制误差传播和扩散。

1.3 宏块

  slice由整数个宏块组成,宏块大小为16x16。帧间预测中宏块还可以进一步划分为子宏块。16x16的宏块有4中划分方式,可以不划分、水平划分为2个16x8的块、垂直划分为2个8x16的块、划分为4个8x8的块。8x8的子宏块同样可以进行这四种划分。4x4的块不再划分。编码器会遍历每种划分方式(大多使用DFS),计算RDcost,选择出RDcost最小的划分方式。
  

2、H.265/HEVC编码结构
2.1 GOP

  HEVC同样首先将视频序列分为若干个GOP,但是可以参考其他GOP的图像,称为开放式GOP。RA模式下,GOP的大小决定了B帧的数量,B帧数量为GOP中帧数减去1。
H.264/AVC, H.265/HEVC, H.266/VVC技术对比整理-编码结构和块划分_第2张图片

2.2 slice, tile

  每帧可以划分为多个slice(条)或tile(片),每个slice或tile包含整数个CTU(编码树单元)。slice和tile的区别是,slice包含的CTU必须在光栅扫描顺序中连续,tile则可以是矩形区域。slice和tile可以相互包含,但是每个slice必须包含整数个tile或每个tile包含整数个slice,如下图。

2.3 CTU, CU

  HEVC中取消了宏块的概念,首先将帧划分为CTU,默认CTU大小为64x64,应用中可以改为32x32或16x16。CTU均为方形,可以进一步划分为方型的CU(编码单元),每个方形CU可以再划分为4个方形CU,直到最小尺寸CU。这种划分方式称为四叉树划分,如下图。

H.264/AVC, H.265/HEVC, H.266/VVC技术对比整理-编码结构和块划分_第3张图片

2.4 PU, TU

  编码器进行块划分的目的主要是便于预测和变换。在进行预测和变换时,CU可以进一步划分为PU(预测单元)或TU(变换单元)。CU到PU仅允许划分一次,帧内模式有两种划分方式,不划分或划分为4个,帧间模式的skip模式不可划分,帧间模式其他模式有8种划分方式,可以进行对称划分或不对称划分。TU划分不收PU划分限制,CU可以多次划分为方形的TU,最大TU尺寸64x64,最小TU尺寸4x4。除此之外,还在多个地方有一些划分限制。
  

3、H.266/VVC块划分
3.1 GOP

  VVC中GOP与HEVC类似。

3.2 slice, tile, brick

  VVC中一帧可以划分为slice或tile,tile可以水平划分为多个brick,silce必须包含整数个tile或整数个brick。VVC中slice有光栅扫描模式和矩形模式,光栅扫描模式与HEVC类似,矩形模式的slice区域可以是矩形。

3.3 CTU, CU

  VVC去除了PU,TU概念,只有CU超过变换块大小限制时才会进一步划。CU允许允许四叉树划分、三叉树划分、二叉树划分,三叉树和二叉树划分称为多类型树MTT。每个CU首先尝试四叉树划分,然后尝试多类型树划分,具体可以参考博客。
H.264/AVC, H.265/HEVC, H.266/VVC技术对比整理-编码结构和块划分_第4张图片

3.4 ISP(Intra Sub-Partitions)

  VVC的帧内块满足条件时可以进一步分割,分割出的子块使用相同的预测模式。进行ISP的块最大为64x64,且子块样点数大于等于16,因此ISP最小块尺寸为8x4或4x8。ISP有4种划分方式,分别是水平二分、水平四分、垂直二分、垂直四分。

在这里插入图片描述

你可能感兴趣的:(视频编码)