这个里面有一个困扰我好久的成员函数 就是那么多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

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



