【H.266/VVC】VTM4.0中的Picture.h代码阅读

这个里面有一个困扰我好久的成员函数 就是那么多buffer是哪里分配的内存,终于让我找到了 PelStorage m_bufs[NUM_PIC_TYPES]的成员变量,读取了每一帧的数据然后分配内存储存到里面。
就只看了buffer相关的函数和变量,其他没接触过的都没往上写。

关于图片类型

enum PictureType
{
   
   
  PIC_RECONSTRUCTION = 0,
  PIC_ORIGINAL,
#if JVET_M0427_INLOOP_RESHAPER
  PIC_TRUE_ORIGINAL,
#endif
  PIC_PREDICTION,
  PIC_RESIDUAL,
  PIC_ORG_RESI,
  NUM_PIC_TYPES
};

struct Picture : public UnitArea//储存了一个CU的三个通道的CompArea信息 坐标和尺寸
{
   
   
  uint32_t margin;//距离
  Picture();//构造函数
  //给各个图片分配内存 原始图片 重构图片 残差图片等等 大小为size大小
  void create(const ChromaFormat &_chromaFormat, const Size &size, const unsigned _maxCUSize, const unsigned margin, const bool bDecoder);
  void destroy();//清空内存 析构函数

  void createTempBuffers( const unsigned _maxCUSize );//临时的bufffer 只有maxCUSize大小
  void destroyTempBuffers();

         PelBuf     getOrigBuf(const CompArea &blk);//返回原始图像 一个分量 把指针指到了原始图像中的相对坐标位置
  const CPelBuf     getOrigBuf(const CompArea &blk) const;
         PelUnitBuf getOrigBuf(const UnitArea &unit);//返回原始图像 三个分量 把指针指到了原始图像 但是Area是输入的Area没变
  const CPelUnitBuf getOrigBuf(const UnitArea &unit) const;
         PelUnitBuf getOrigBuf();//返回原始图像 PelStorage
  const CPelUnitBuf getOrigBuf() const;
#if JVET_M0427_INLOOP_RESHAPER
         PelBuf     
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值