ECM8.0——代码整体初窥

ECM8.0——代码整体初窥

参考链接

基本结构

在这里插入图片描述
数据结构分三种类型:

导航信息

  • Size,Position,Area(Position+Size):基本二维信息(位置,尺寸)。
  • CompArea:继承自Area,表示特定分量的二维信息。
  • UnitArea:包含了多个分量的Area。

在这里插入图片描述

  • SizeType是uint32的别称(在该项目中)
  • Size
    • width, height:描述了一个矩形的大小。

在这里插入图片描述

  • PosType是int的别称(在该项目中)
  • Position
    • x, y:描述了一个点的二维信息。

在这里插入图片描述

看起来pos()和size()返回的都是 *this,但其实返回类型是不一样的,返回的this会变成对应的类,可以说是基类指针和子类指针的区别,也可以说是一种运行时多态的实现方式。

  • Area: Size, Position
    • 继承自Size和Position,一个位于特定位置的特定大小的矩形。

在这里插入图片描述
在这里插入图片描述

  • CompArea: Area
    • 一个多分量信号中的特定分量的(compID)Area
    • CompArea 中有一个 Area 结构体的成员和一个 chromaFormat(图片/视频的采样格式,如下)和 compID 两个成员变量。

在这里插入图片描述
在这里插入图片描述

  • UnitArea
    • blocks[0…N-1]:CompArea
    • N个多分量信号blocks的融合。
    • UnitArea中有 ChromaFormat 和 blocks 两个成员变量。

存储区域

  • AreaBuf:包含了一个二维信号在内存中的存储(buf 和 Stride),可以根据位置访问到相应的信号值,包含内存的操作方法(fill、copy等)。
  • UnitBuf:包含了多个分量的二维信号在内存中到的存储,包含内存的操作方法(fill、copy等)。
  • PelStorage:一个UnitBuf(Pel类型),需要分配自己的内存空间。
    在这里插入图片描述
  • AreaBuf<T>(为Pel和TCoeff定义为PelAreaBuf和CoeffAreaBuf)
    • 这是一个模板类 AreaBuf,用于表示一个二维区域的缓冲区。它包含了缓冲区的指针,宽度、高度、步长等信息,以及一系列操作缓冲区的方法,如填充、复制、扩展边界、线性变换等。其中,T 是缓冲区元素的类型,可以是任意类型。这个类的设计用于处理视频编解码相关的数据。
    • at(x, y):返回信号在(x, y)处的值
    • bufAt(x, y):返回一个指向(x, y)位置的缓冲区的未加工(raw)的指针
    • subBuf(x, y, w, h):返回一个AreaBuf,描述距离(x, y)的偏移量为(w, h)的位置的缓冲区
    • fill(val):使用特定的值填充特定的区域
    • copyFrom(other):从别的区域将内容复制过来

在这里插入图片描述

  • UnitBuf<T>(为Pel和TCoeff定义为PelAreaBuf和CoeffAreaBuf)
    • 这是一个 C++ 结构体定义,名为 UnitBuf。它包含了一些成员变量和函数成员,用于存储和操作图像数据的缓冲区。其中,UnitBufBuffers 和 ConstUnitBufBuffers 类型的变量 bufs 分别存储了各个分量的图像数据,而 ChromaFormat 则表示图像的色度格式。此外,它还提供了一些函数成员,如 fill、copyFrom、subtract 等,用于对图像数据进行填充、拷贝、差分等操作。
    • bufs[0…N-1]:AreaBuf:包含了信号不同分量的描述信息.

编码信息

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值