JVET-M1002阅读【1】
JVET-M1002文档描述了VVC的算法和测试模型VTM4,作为VTM4.0软件中实现的算法和编码模型的教程。 VCC提案
Partitioning of the picture into CTUs
一副图片被分成很多CTU,亮度CTU最大128×128,色度最大64×64
Partitioning of the CTUs using a tree structure
- 没有了CU、PU、TU的区别,取消了PU、TU的概念
- QT node大小为128×128,只能进行QT划分
- CTU首先进行四叉树划分,之后可进行二叉树和三叉树划分 ,所以CU的形状可以是方形也可以是长方形。二叉树和三叉树的划分共有以下四种情况:
- 划分过程中的flag
flag 1: mtt_split_cu_flag 决定这个节点是否继续划分;若划分,则看flag2
flag 2:mtt_split_cu_vertical_flag 决定划分的方向;继续看flag3
flag 3:mtt_split_cu_binary_flag 决定是三叉树划分还是二叉树划分
划分结果与相应flag的对应关系如下:
- 亮度CB大小128×128-4×4,色度CB大小64×64-2×2;变换亮度块的最大是64×64,色度是32×32
- 划分相关的语法元素:
CTU size:CTU的尺寸128×128
MinQTSize :允许四叉树划分的最小尺寸(16×16)
MaxBtSize :允许二叉树划分的最大尺寸 (128×128)
MaxTtSize:允许三叉树划分的最大尺寸(64×64)
MaxMttDepth :最大划分深度(4)
MinBtSize :允许二叉树划分的最小尺寸(4×4)
MinTtSize :允许三叉树划分的最小尺寸(4×4) - 支持亮度分量和色度分量有独立的划分结构。对于I帧,允许亮度分量和色度分量划分结构不同;对于P帧和B帧,亮度分量和色度分量共享同一种划分结构
- 划分限制:
width=MaxBtSize or width<=2×MaxTtSize ,不进行水平划分。原因:避免冗余划分,多次水平划分后可能与垂直划分的一样
height=MaxBtSize or height<=2×MaxTtSize,不进行垂直划分。原因:避免冗余划分,多次垂直划分后可能与水平划分的一样
widrh or height<64(luma),widrh or height<32(chroma),不进行TT划分,如下图
CU splits on picture boundaries
–如果既超出下边界又超出右边
--如果是QT节点&block size>=MinQTSize ,QT划分
--否则QT水平划分
–如果只超出下边界
--如果是QT节点&block size>=MinQTSize&block size>MaxBtSize,QT划分
--如果是QT节点&block size>=MinQTSize&block size<=MaxBtSize,QT划分或者BT水平划分
--其余,BT水平划分
–如果只超出右边界
--如果是QT节点&block size>=MinQTSize&block size>MaxBtSize,QT划分
--如果是QT节点&block size>=MinQTSize&block size<=MaxBtSize,QT划分或者BT垂直划分
--其余,BT垂直划分
Restrictions on redundant CU splits
QT+BT+TT的划分方式提供了灵活的块分割结构,但导致了不同的分割组合可能出现同一种分割情况,在VCC中一些冗余的分割方式是不允许的
如下图所示,两次同一方向的二叉树分割和一次三叉树分割+中心处的二叉树分割具有同样的结构
Virtual pipeline data units (VPDUs)
- 为了保证VPDU的尺寸是64×64,采取了以下的限制条件:
width or height =128 ,不允许TT划分
128xN CU with N ≤ 64 ,不允许水平BT划分
Nx128 CU with N ≤ 64 ,不允许垂直BT划分