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<
初学者,仅作学习笔记。