VVC/VTM参考软件数据结构(翻译加解读)

本文是对VVC参考软件下doc目录中的NextSoftware-Data Structure的一个翻译和解读。

动机

HM的缺点
  • 复杂的数据结构
    • Z-index
    • 令人产生歧义的数据模型(TComDataCu)
  • 糟糕的代码可读性
    • 复杂的内存操作与一般的数据流混合在一起
    • 缺乏数据和逻辑封装
  • 复杂的可拓展性
    • 数据结构设计的时候伴随着严格的设定,例如:square blocks
    • 由于错误的实现,很多设想都被抛弃了

目标

下一代参考软件的设计准则
  • 简单的、没有歧义的数据模型
    • 现代的面向对象的设计,即快速又整洁
  • 全局的像素地址
    • 去除Z-index
    • 去除二级的信号地址:CTU到Z-Index
  • 封装繁琐的操作,例如:内存操作
    • 使得一般的流程更加易读
  • 更好的代码可读性
    • 能够简单地拓展

回顾HM模型的数据结构

  • TComDataCU
    • 保存编码的信息
    • 可能表示一个CU或者一个CTU(包含多个CU)
    • 基本上是图像位置到编码信息的映射
  • TComCU
    • 允许更容易的TU结构导航的对象
    • 不包含实际的数据,而是包含在TComDataCU中
  • TComPicYuv
    • 保存视频信号

下一代参考软件的模型

导航
  • Size、Position、Area(Position+Size),这三个结构都是使用结构体实现的,包含在 EncoderLib 中的Common.h文件中
    • 表示基础的二维信息
  • CompArea
    • 一个给定的分量的区域
  • UnitArea
    • 表示多通道信号中的区域
    • 描述共同定位分量组成的一组块
信号存储,包含在 CommonLib 中的Buffer.h文件中
  • AreaBuf:结构体模版
    • 描述了在线性的内存中一个二维信号的布局
    • 包含了一些简单的操作:copy、fill
  • UnitAreaBuf
    • 描述了在线性的内存中一个多组件二维信号的布局
    • 包含了简单的操作:copy,fill
  • PelStorage
    • 一个UnitAreaBuf,同时也分配自己的内存

编码信息

  • Picture
    • 包含了输入输出信号作为元数据(slice info等等)
  • Coding、PredictionUnit、TransformUnit
    • 单一对象对应着单一的单元
    • 包含相应的信息
    • 包含位置信息&#
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值