Ticket #315: 20120207-HM-5.1-dev-cleanup-dqp-wrap.patch

File 20120207-HM-5.1-dev-cleanup-dqp-wrap.patch, 3.5 KB (added by kchono, 12 years ago)
  • source/Lib/TLibCommon/TypeDef.h

     
    155155
    156156#define G678_LAMBDA_ADJUSTMENT              1      ///< G678: lambda adjustment for rate-constrained test tool
    157157
     158#define FIX_CU_DQP_WRAP                     1      ///< Fix wrapping of cu_qp_delta
     159#if FIX_CU_DQP_WRAP
     160#define RESET_QP_OFFSET                     1      ///< This macro shall be set equal to 0 or removed when JCTVC-H0400 is integrated.
     161#endif
     162
    158163////////////////////////////
    159164// JCT-VC G end
    160165////////////////////////////
  • source/Lib/TLibDecoder/TDecCAVLC.cpp

     
    21572157  Int  iDQp;
    21582158 
    21592159  xReadSvlc( iDQp );
     2160
     2161#if FIX_CU_DQP_WRAP
     2162  UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     2163#if RESET_QP_OFFSET
     2164  uiQpBdOffsetY = 0;
     2165#endif
     2166  uiQp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*uiQpBdOffsetY )%(52+uiQpBdOffsetY)) - uiQpBdOffsetY;
     2167#else
    21602168  uiQp = pcCU->getRefQP( uiAbsPartIdx ) + iDQp;
     2169#endif
    21612170
    21622171  UInt uiAbsQpCUPartIdx = (uiAbsPartIdx>>(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)))<<(8-(pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()<<1)) ;
    21632172  UInt uiQpCUDepth =   min(uiDepth,pcCU->getSlice()->getPPS()->getMaxCuDQPDepth()) ;
  • source/Lib/TLibDecoder/TDecSbac.cpp

     
    12811281      iDQp = -iDQp;
    12821282    }
    12831283#endif
     1284
     1285#if FIX_CU_DQP_WRAP
     1286#if !F745_DQP_BINARIZATION
     1287        UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1288#endif
     1289#if RESET_QP_OFFSET
     1290        uiQpBdOffsetY = 0;
     1291#endif
     1292        uiDQp = (((Int) pcCU->getRefQP( uiAbsPartIdx ) + iDQp + 52 + 2*uiQpBdOffsetY )%(52+uiQpBdOffsetY)) - uiQpBdOffsetY;
     1293#else
    12841294    uiDQp = pcCU->getRefQP(uiAbsPartIdx) + iDQp;
     1295#endif
    12851296
    12861297  }
    12871298 
  • source/Lib/TLibEncoder/TEncCavlc.cpp

     
    17761776{
    17771777  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    17781778
     1779#if FIX_CU_DQP_WRAP
     1780  UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1781#if RESET_QP_OFFSET
     1782  uiQpBdOffsetY = 0;
     1783#endif
     1784  iDQp = (iDQp + 78 + uiQpBdOffsetY + (uiQpBdOffsetY/2)) % (52 + uiQpBdOffsetY) - 26 - (uiQpBdOffsetY/2);
     1785#endif
     1786
    17791787  xWriteSvlc( iDQp );
    17801788 
    17811789  return;
  • source/Lib/TLibEncoder/TEncSbac.cpp

     
    11111111Void TEncSbac::codeDeltaQP( TComDataCU* pcCU, UInt uiAbsPartIdx )
    11121112{
    11131113  Int iDQp  = pcCU->getQP( uiAbsPartIdx ) - pcCU->getRefQP( uiAbsPartIdx );
    1114  
     1114
     1115#if FIX_CU_DQP_WRAP
     1116  {
     1117          UInt uiQpBdOffsetY = 6*(g_uiBitIncrement + g_uiBitDepth - 8);
     1118#if RESET_QP_OFFSET
     1119          uiQpBdOffsetY = 0;
     1120#endif
     1121          iDQp = (iDQp + 78 + uiQpBdOffsetY + (uiQpBdOffsetY/2)) % (52 + uiQpBdOffsetY) - 26 - (uiQpBdOffsetY/2);
     1122  }
     1123#endif
     1124
    11151125  if ( iDQp == 0 )
    11161126  {
    11171127    m_pcBinIf->encodeBin( 0, m_cCUDeltaQpSCModel.get( 0, 0, 0 ) );