Ticket #315: 201202208-HM-5.1-dev-cleanup-r1867-qp-wrap.patch

File 201202208-HM-5.1-dev-cleanup-r1867-qp-wrap.patch, 3.8 KB (added by kchono, 12 years ago)
  • source/Lib/TLibCommon/TypeDef.h

     
    269269#define SCALING_LIST                  1 //JCTVC-G880/JCTVC-G1016 quantization matrices
    270270#define SCALING_LIST_OUTPUT_RESULT    0 //JCTVC-G880/JCTVC-G1016 quantization matrices
    271271
     272#define FIX_QP_WRAP                   1    //< Fix qp wrapping
     273#if FIX_QP_WRAP
     274#define SET_QP_BD_OFFSET_ZERO         1    //< This macro shall be set equal to 0 or removed when QpBdOffsetY and QpBdOffsetC issues are resolved.
     275#endif
     276
    272277// ====================================================================================================================
    273278// Basic type redefinition
    274279// ====================================================================================================================
  • source/Lib/TLibDecoder/TDecCAVLC.cpp

     
    14661466  Int  iDQp;
    14671467 
    14681468  xReadSvlc( iDQp );
     1469
     1470#if FIX_QP_WRAP
     1471  UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1472#if SET_QP_BD_OFFSET_ZERO
     1473  uiQpBdOffsetY = 0;
     1474#endif
     1475  uiQp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*uiQpBdOffsetY )%(52+uiQpBdOffsetY)) - uiQpBdOffsetY;
     1476#else
    14691477  uiQp = pcCU->getRefQP( uiAbsPartIdx ) + iDQp;
     1478#endif
    14701479
    14711480  UInt uiAbsQpCUPartIdx = (uiAbsPartIdx>>(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)))<<(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)) ;
    14721481  UInt uiQpCUDepth =   min(uiDepth,pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()) ;
  • source/Lib/TLibDecoder/TDecSbac.cpp

     
    12111211  {
    12121212    UInt uiSign;
    12131213    UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1214#if SET_QP_BD_OFFSET_ZERO
     1215        uiQpBdOffsetY = 0;
     1216#endif
    12141217    m_pcTDecBinIf->decodeBinEP(uiSign);
    12151218
    12161219    UInt uiMaxAbsDQpMinus1 = 24 + (uiQpBdOffsetY/2) + (uiSign);
     
    12231226    {
    12241227      iDQp = -iDQp;
    12251228    }
     1229
     1230#if FIX_QP_WRAP
     1231        uiDQp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*uiQpBdOffsetY )%(52+uiQpBdOffsetY)) - uiQpBdOffsetY;
     1232#else
    12261233    uiDQp = pcCU->getRefQP(uiAbsPartIdx) + iDQp;
     1234#endif
    12271235
    12281236  }
    12291237 
  • source/Lib/TLibEncoder/TEncCavlc.cpp

     
    16231623{
    16241624  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    16251625
     1626#if FIX_QP_WRAP
     1627  UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1628#if SET_QP_BD_OFFSET_ZERO
     1629  uiQpBdOffsetY = 0;
     1630#endif
     1631  iDQp = (iDQp + 78 + uiQpBdOffsetY + (uiQpBdOffsetY/2)) % (52 + uiQpBdOffsetY) - 26 - (uiQpBdOffsetY/2);
     1632#endif
     1633
    16261634  xWriteSvlc( iDQp );
    16271635 
    16281636  return;
  • source/Lib/TLibEncoder/TEncSbac.cpp

     
    10581058{
    10591059  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    10601060 
     1061#if FIX_QP_WRAP
     1062  {
     1063          UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1064#if SET_QP_BD_OFFSET_ZERO
     1065          uiQpBdOffsetY = 0;
     1066#endif
     1067          iDQp = (iDQp + 78 + uiQpBdOffsetY + (uiQpBdOffsetY/2)) % (52 + uiQpBdOffsetY) - 26 - (uiQpBdOffsetY/2);
     1068  }
     1069#endif
     1070
    10611071  if ( iDQp == 0 )
    10621072  {
    10631073    m_pcBinIf->encodeBin( 0, m_cCUDeltaQpSCModel.get( 0, 0, 0 ) );