量化(一)

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)  



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