CU分割信息提取(更新续)

来源:互联网 发布:怎么更新windows系统 编辑:程序博客网 时间:2024/06/08 19:11

转自:http://blog.csdn.net/tianzhaixing2013/article/details/8730867

本文主要针对feixiang_john,HEVC_CJL,zhuix7788,yangxiao_xiang等人的CSDN的博客,进行有关CU分割内容的学习和运用。具体相关内容请参考他们的博客:

feixiang_john:HEVC/H.265参考代码跟踪
http://blog.csdn.net/feixiang_john/article/details/7876227#comments
HEVC_CJL:CU的最终划分
http://blog.csdn.net/hevc_cjl/article/details/8275260
http://blog.csdn.net/hevc_cjl/article/details/8299529
http://blog.csdn.net/hevc_cjl/article/details/8639835
zhuix7788:模式以及划分信息
http://blog.csdn.net/zhuix7788/article/details/8214685
yangxiao_xiang: HEVC帧内预测编码之LCU四叉树结构分块
http://blog.csdn.net/yangxiao_xiang/article/details/8270723
http://blog.csdn.net/yangxiao_xiang/article/details/8275181
http://blog.csdn.net/yangxiao_xiang/article/details/8478283

注意在cpp文件开头加上头文件#include <fstream>


[cpp] view plaincopyprint?
  1. ====================================================================================================================  
  2. // Public member functions  
  3. // ====================================================================================================================  
  4.   
  5. /** \param  rpcCU pointer of CU data class 
  6.  */  
  7. //一句话总结获取CU最佳划分的方法:  
  8. //在HM中调用完xCompressCU之后(至少也应该是compressCU调用完它之后,此时最佳PU为m_ppcBestCU[0]),  
  9. //在调用encodeCU之前(也可以之后,这个只要保证pcCU没被修改过即可),  
  10. //对compressCU的参数pcCU进行类似语句: pcCU->getDepth( uiAbsPartIdx ),  
  11. //即可获得Z order为uiAbsPartIdx的4x4块的深度,如果把整个CU每个4x4块的深度确定下来,那么它的划分自然也就确定下来了。  
  12. Void TEncCu::compressCU( TComDataCU*& rpcCU )  
  13. {  
  14.   // initialize CU data  
  15.   m_ppcBestCU[0]->initCU( rpcCU->getPic(), rpcCU->getAddr() );  
  16.   m_ppcTempCU[0]->initCU( rpcCU->getPic(), rpcCU->getAddr() );  
  17.   
  18. #if RATE_CONTROL_LAMBDA_DOMAIN  
  19.   m_addSADDepth      = 0;  
  20.   m_LCUPredictionSAD = 0;  
  21.   m_temporalSAD      = 0;  
  22. #endif  
  23.   
  24.   // analysis of CU  
  25.   xCompressCU( m_ppcBestCU[0], m_ppcTempCU[0], 0 );//获取最佳PU为m_ppcBestCU[0]  
  26.     
  27.   //=======LCU分割单元深度信息输出2013.3.27================   
  28.   UInt LCUDepth[256] ;    
  29.   ofstream outfile("BasketballdrillCU.txt",ios::in|ios::app);  
  30.   for (Int i=0;i<256;i+=4)  //CU分割最大为8x8,而存储分割信息是4x4,故i+=4处理  
  31.   {    
  32.     LCUDepth[i]=  m_ppcBestCU[0]->getDepth(i);    
  33.     outfile<<LCUDepth[i]<<;  
  34.     outfile<<endl;    
  35.   }  
  36.   //--------------------------------------------------------  
  37.   
  38. #if ADAPTIVE_QP_SELECTION  
  39.   if( m_pcEncCfg->getUseAdaptQpSelect() )  
  40.   {  
  41.     if(rpcCU->getSlice()->getSliceType()!=I_SLICE) //IIII  
  42.     {  
  43.       xLcuCollectARLStats( rpcCU);  
  44.     }  
  45.   }  
  46. #endif  
  47. }  



注释:由于是basketballdrive.yuv第一帧,且分辨率为1920x1080,像素点数目不是8的倍数,故出现了最后一行的分割情况异样。



0 0