量化(一)

HM中与draft对应的几个表格:

enum ScalingListSize  
{  
  SCALING_LIST_4x4 = 0,  
  SCALING_LIST_8x8,  
  SCALING_LIST_16x16,  
  SCALING_LIST_32x32,  
  SCALING_LIST_SIZE_NUM  
}; //!< Table 7-2 (Specification of SizeID)  
static const Char MatrixType[4][6][20] =  
{  
  {  
  "INTRA4X4_LUMA",  
  "INTRA4X4_CHROMAU",  
  "INTRA4X4_CHROMAV",  
  "INTER4X4_LUMA",  
  "INTER4X4_CHROMAU",  
  "INTER4X4_CHROMAV"  
  },  
  {  
  "INTRA8X8_LUMA",  
  "INTRA8X8_CHROMAU",   
  "INTRA8X8_CHROMAV",   
  "INTER8X8_LUMA",  
  "INTER8X8_CHROMAU",   
  "INTER8X8_CHROMAV"    
  },  
  {  
  "INTRA16X16_LUMA",  
  "INTRA16X16_CHROMAU",   
  "INTRA16X16_CHROMAV",   
  "INTER16X16_LUMA",  
  "INTER16X16_CHROMAU",   
  "INTER16X16_CHROMAV"    
  },  
  {  
  "INTRA32X32_LUMA",  
  "INTER32X32_LUMA",  
  },  
}; //!< Table 7-3 (Specification of MatrixID according to SizeID, prediction type and colour component)Int g_quantTSDefault4x4[16] =  
{  
  16,16,16,16,  
  16,16,16,16,  
  16,16,16,16,  
  16,16,16,16  
}; //!< TU为4x4时的情况  
//!< 注意以下两个表格若想与Table 7-5一一对应,需要以up-right diamond方式进行查看  
Int g_quantIntraDefault8x8[64] =  
{  
  16,16,16,16,17,18,21,24,  
  16,16,16,16,17,19,22,25,  
  16,16,17,18,20,22,25,29,  
  16,16,18,21,24,27,31,36,  
  17,17,20,24,30,35,41,47,  
  18,19,22,27,35,44,54,65,  
  21,22,25,31,41,54,70,88,  
  24,25,29,36,47,65,88,115  
}; //!< Table 7-5 (Specification of default values of ScalingList[1..3][MatrixID][i] with i=0..63)  
  
Int g_quantInterDefault8x8[64] =  
{  
  16,16,16,16,17,18,20,24,  
  16,16,16,17,18,20,24,25,  
  16,16,17,18,20,24,25,28,  
  16,17,18,20,24,25,28,33,  
  17,18,20,24,25,28,33,41,  
  18,20,24,25,28,33,41,54,  
  20,24,25,28,33,41,54,71,  
  24,25,28,33,41,54,71,91  
}; //!< Table 7-5 (Specification of default values of ScalingList[1..3][MatrixID][i] with i=0..63)  
UInt g_scalingListSize   [4] = {16,64,256,1024}; //!< 对应SizeID下Matrix的尺寸(行数乘列数),4x4,8x8,16x16,32x32  
UInt g_scalingListSizeX  [4] = { 4, 8, 16,  32};    //!< 对应SizeID下Matrix的(行数)  
UInt g_scalingListNum[SCALING_LIST_SIZE_NUM]={6,6,6,2}; //!< 32x32的TU的MatrixID只有0和1,其余情况为0~5  
Int  g_eTTable[4] = {0,3,1,2}; //!< 用于辅助计算MatrixID  


const UChar g_aucChromaScale[58]=  
{  
   0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,  
  17,18,19,20,21,22,23,24,25,26,27,28,29,29,30,31,32,  
  33,33,34,34,35,35,36,36,37,37,38,39,40,41,42,43,44,  
  45,46,47,48,49,50,51  
}; //!< Table 8-9 (Specification of QPc as a function of qPi)  

设置QP:

/** Set qP for Quantization. 
 * \param qpy QPy 
 * \param bLowpass 
 * \param eSliceType 
 * \param eTxtType 
 * \param qpBdOffset 
 * \param chromaQPOffset 
 * 
 * return void   
 */  
Void TComTrQuant::setQPforQuant( Int qpy, TextType eTxtType, Int qpBdOffset, Int chromaQPOffset)  
{  
  Int qpScaled;  
  
  if(eTxtType == TEXT_LUMA)  
  {  
    qpScaled = qpy + qpBdOffset;    //!< draft (8-235)  
  }  
  else  
  {  
      /*                  
      **    if(eText == TEXT_CHROMA_U) 
      **    { 
      **        curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb(); 
      **    } 
      **    else 
      **    { 
      **        curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr(); 
      **    } 
      **    如上所示,对于Cb,Cr分量,在调用setQPforQuant之前,就对chromaQPOffset进行了赋值 
      */  
    qpScaled = Clip3( -qpBdOffset, 57, qpy + chromaQPOffset ); //!< draft (8-236)、(8-237)  
    //! 以下为Table 8-9 (Specification of QPc as a function of qPi)  
    if(qpScaled < 0) //!< qpScaled小于0时,不方便查表,但对照表格,qpScaled小于30时,QPc=qPi(qpScaled)  
    {  
      qpScaled = qpScaled + qpBdOffset;  
    }  
    else  
    {  
      qpScaled = g_aucChromaScale[ qpScaled ] + qpBdOffset; //!< draft (8-238)、(8-239)  
    }  
  }  
  m_cQP.setQpParam( qpScaled ); //!<设置最终得到的qp  
}  

m_cSPS.setQpBDOffsetY ( 6*(g_bitDepthY - 8) ); //!< luma quantization parameter range offset (7-9)  
m_cSPS.setQpBDOffsetC ( 6*(g_bitDepthC - 8) ); //!< chroma quantization parameter range offset (7-11)  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章