分析HM代码,首先必须把class TComDataCU完全搞明白!

原创 2012年11月29日 09:35:24

  

分析HM代码,首先必须把class TComDataCU完全搞明白!

为了找到合适的模式或者合适的分割, 基本上都是采用两个TComDataCU来操作, TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU.

相当于两个指针对应两个乒乓buffer,  m_ppcBestCU[uiDepth], m_ppcTempCU[uiDepth], 当然每一个uiDepth都有一个对应的BestCU和TempCU的buffer.

 

 

class TComDataCU
{
private:
 
  // -------------------------------------------------------
  // class pointers
  // -------------------------------------------------------
  TComPic*      m_pcPic;              ///< picture class pointer
  TComSlice*    m_pcSlice;            ///< slice header pointer
  TComPattern*  m_pcPattern;          ///< neighbour access class pointer
  // -------------------------------------------------------
  // CU description
  // -------------------------------------------------------
  UInt          m_uiCUAddr;           ///< CU address in a slice
  UInt          m_uiAbsIdxInLCU;      ///< absolute address in a CU. It's Z scan order
  UInt          m_uiCUPelX;           ///< CU position in a pixel (X)
  UInt          m_uiCUPelY;           ///< CU position in a pixel (Y)
  UInt          m_uiNumPartition;     ///< total number of minimum partitions in a CU
  UChar*        m_puhWidth;           ///< array of widths
  UChar*        m_puhHeight;          ///< array of heights
  UChar*        m_puhDepth;           ///< array of depths
  Int           m_unitSize;           ///< size of a "minimum partition"
  // -------------------------------------------------------
  // CU data
  // -------------------------------------------------------
  Bool*         m_skipFlag;           ///< array of skip flags
  Char*         m_pePartSize;         ///< array of partition sizes
  Char*         m_pePredMode;         ///< array of prediction modes
  Bool*         m_CUTransquantBypass;   ///< array of cu_transquant_bypass flags
  Char*         m_phQP;               ///< array of QP values
  UChar*        m_puhTrIdx;           ///< array of transform indices
  UChar*        m_puhTransformSkip[3];///< array of transform skipping flags
  UChar*        m_puhCbf[3];          ///< array of coded block flags (CBF)
  TComCUMvField m_acCUMvField[2];     ///< array of motion vectors
  TCoeff*       m_pcTrCoeffY;         ///< transformed coefficient buffer (Y)
  TCoeff*       m_pcTrCoeffCb;        ///< transformed coefficient buffer (Cb)
  TCoeff*       m_pcTrCoeffCr;        ///< transformed coefficient buffer (Cr)
#if ADAPTIVE_QP_SELECTION
  Int*          m_pcArlCoeffY;        ///< ARL coefficient buffer (Y)
  Int*          m_pcArlCoeffCb;       ///< ARL coefficient buffer (Cb)
  Int*          m_pcArlCoeffCr;       ///< ARL coefficient buffer (Cr)
  bool          m_ArlCoeffIsAliasedAllocation; ///< ARL coefficient buffer is an alias of the global buffer and must not be free()'d
  static Int*   m_pcGlbArlCoeffY;     ///< ARL coefficient buffer (Y)
  static Int*   m_pcGlbArlCoeffCb;    ///< ARL coefficient buffer (Cb)
  static Int*   m_pcGlbArlCoeffCr;    ///< ARL coefficient buffer (Cr)
#endif
  Pel*          m_pcIPCMSampleY;      ///< PCM sample buffer (Y)
  Pel*          m_pcIPCMSampleCb;     ///< PCM sample buffer (Cb)
  Pel*          m_pcIPCMSampleCr;     ///< PCM sample buffer (Cr)
  Int*          m_piSliceSUMap;       ///< pointer of slice ID map
  std::vector<NDBFBlockInfo> m_vNDFBlock;
 ..................
 .............
}

 

上面是HM9.0的class TComDataCU的部分代码, 那些地方有疑问大家可以都贴出来一起讨论啊!

版权声明:本文为博主原创文章,未经博主允许不得转载。

TComDataCU

/** \file TComDataCU.h \brief CU data structure (header) \todo not all entities a...
  • tianzhijiaozi19
  • tianzhijiaozi19
  • 2015年10月21日 21:43
  • 828

HEVC官方软件HM源代码简单分析-编码器TAppEncoder

上一篇文章总结了HEVC官方参考软件HM中的视频解码器TAppDecoder的结构,本文继续分析HM中的视频编码器TAppEncoder。函数调用关系图HM中的HEVC视频编码器TAppEncoder...
  • leixiaohua1020
  • leixiaohua1020
  • 2015年11月23日 22:46
  • 28944

TComDataCU.h等主要类

/// Non-deblocking filter processing block border tag enum NDBFBlockBorderTag {   SGU_L = 0,   SGU_R...
  • zhuix7788
  • zhuix7788
  • 2013年09月01日 19:38
  • 2078

HEVC预测块(PU)模式划分显示

最近在做关于3D-HEVC的实验,很想直观显示出最终
  • pc__wang
  • pc__wang
  • 2014年05月27日 21:24
  • 2829

HEVC中CTU递归代码分析

CU递归的算法,那么就是xDecodeCU这个函数里面 首先对其中一些比较难以理解的部分进行相应的整理 UInt uiCurNumParts    = pcPic->getNumParti...
  • xietingcandice
  • xietingcandice
  • 2014年12月24日 19:10
  • 1889

HM中语法元素二进制化的相关代码分析

H.265语法元素二进制化的相关代码分析H.265的语法元素的二进制化的编码主要有:截断莱斯编码(TR)、k-阶指数哥伦布编码、定长编码(FL)。值得注意的是,除了这三种编码方案外,H.265标准给p...
  • Jing_xian
  • Jing_xian
  • 2017年01月26日 23:21
  • 445

HEVC码率控制算法研究与HM相应代码分析(二)——新的码率控制模型

下面简单回顾一下H.264中的码率控制算法,并说明为什么不能直接将之前的码率控制算法用于HEVC,同时介绍一下一种很有意思的新的R-λ模型。 在H.264以及之前的码率控制算法中,R-Q模型得到了广...
  • nonmarking
  • nonmarking
  • 2015年08月08日 13:16
  • 2023

HEVC学习:HM-10.1-dev代码分析之TLibVideoIO库

HEVC学习:HM-10.1-dev代码分析之TLibVideoIO库     视频输入输出库涉及编解码过程的起始和结束操作,即编码开始的时候读取视频文件数据,解码结束的时候写视频文件数据。 ...
  • zhuyonghao123
  • zhuyonghao123
  • 2013年06月09日 21:43
  • 3441

HEVC学习:HM-10.1-dev代码分析之TLibVideoIO库

转载地址:http://blog.csdn.net/zhuyonghao123/article/details/9068181 HEVC学习:HM-10.1-dev代码分析之TLibVideoIO库...
  • zhangyuehuan
  • zhangyuehuan
  • 2015年05月11日 22:16
  • 1164

HM平台之**xCompressCU**(TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, UInt uiDepth, PartSize eParent)

/*Para rpcBestCU 存放最优数据 Para rpcBestCU 存放局部最优数据 Para uiDepth CU深度 Para eParen...
  • king20168
  • king20168
  • 2017年07月26日 09:58
  • 225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分析HM代码,首先必须把class TComDataCU完全搞明白!
举报原因:
原因补充:

(最多只允许输入30个字)