HM编码器端提取PU分割模式及CU深度信息

HM代码TEncCU.cpp中,CompressCtu函数主要功能是对一个CTU进行压缩,在该函数中调用);函数对CTU进行具体的划分工作,该函数执行完后其相应的信息便被存储在其参数中xCompressCU( m_ppcBestCU[0], m_ppcTempCU[0], 0 DEBUG_STRING_PASS_INTO(sDebug) ),m_ppcBestCU[0]表示当前最佳,m_ppcTempCU[0]表示正在进行计算的当前cu,所以可以从m_ppcBestCU[0]中提取相应的CU及PU信息。HEVC中信息均是以4*4大小被存储的,在一个CTU中每个4*4块又一zscan方式被存储,所以在读取时必须进行转换。下边是代码:

//PU分割模式信息统计(by lyy)
  UInt print8CUOrder[64] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60,64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252};

  int  N_LCU = pCtu->getCtuRsAddr();//CTU的Raster地址
  fstream outPU("PU_PartitonSize.txt",ios::out|ios::app); 
  outPU<<"the LCU's partitionSize information ,NO."<":"<256] = {0};
  for(UInt i = 0; i < 256; i++)
  {
      PU_PartitionSize[i] = m_ppcBestCU[0]->getPartitionSize(i);
  }
  for(UInt i = 0; i < 64; i++)
  {
      outPU<if((i+1)==64)
      {
          outPU<//CU深度统计(by lyy)
    UInt PU_Depth[256] = {0};
    fstream outCUDepth("CUDepth.txt",ios::out|ios::app);
    outCUDepth<<"the LCU's CUDepth information ,NO."<":"<for(UInt i = 0; i < 256; i++)
    {
        PU_Depth[i] = m_ppcBestCU[0]->getDepth(i);
        }
    for(UInt i = 0; i < 64; i++)
    {
        outCUDepth<if((i+1)==64)
        {
            outCUDepth<

初学者,仅作学习笔记。

你可能感兴趣的:(HEVC)