Ticket #596: 14-bit-overflow_onTopOfHM71rc1.patch

File 14-bit-overflow_onTopOfHM71rc1.patch, 2.9 KB (added by pandrivon, 12 years ago)

RDOQ patch for 14-bit encoding on top of HM7.1rc1

  • source/Lib/TLibCommon/CommonDef.h

     
    112112
    113113#define MAX_UINT                    0xFFFFFFFFU ///< max. value of unsigned 32-bit integer
    114114#define MAX_INT                     2147483647  ///< max. value of signed 32-bit integer
     115#define MAX_INT64                                       0x7FFFFFFFFFFFFFFF  ///< max. value of signed 64-bit integer
    115116#define MAX_DOUBLE                  1.7e+308    ///< max. value of double-type value
    116117
    117118#define MIN_QP                      0
  • source/Lib/TLibCommon/TComTrQuant.cpp

     
    21272127
    21282128  if( pcCU->getSlice()->getPPS()->getSignHideFlag() && uiAbsSum>=2)
    21292129  {
    2130     Int rdFactor = (Int)((Double)(g_invQuantScales[m_cQP.rem()]*g_invQuantScales[m_cQP.rem()]<<(2*m_cQP.m_iPer))/m_dLambda/16 + 0.5) ;
     2130    Int64 rdFactor = (Int64)((Double)((Int64)g_invQuantScales[m_cQP.rem()]*(Int64)g_invQuantScales[m_cQP.rem()]<<(2*(Int64)m_cQP.m_iPer))/m_dLambda/16 + 0.5) ;
    21312131#if !FIXED_SBH_THRESHOLD
    21322132    Int tsig = pcCU->getSlice()->getPPS()->getTSIG() ;
    21332133#endif
     
    21762176        if( signbit!=(absSum&0x1) )  // hide but need tune
    21772177        {
    21782178          // calculate the cost
    2179           Int minCostInc = MAX_INT,  minPos =-1, finalChange=0, curCost=MAX_INT, curChange=0;
     2179          Int64 minCostInc = MAX_INT64, curCost=MAX_INT64;
     2180          Int minPos =-1, finalChange=0, curChange=0;
    21802181
    21812182          for( n = (lastCG==1?lastNZPosInCG:SCAN_SET_SIZE-1) ; n >= 0; --n )
    21822183          {
    21832184            UInt uiBlkPos   = scan[ n + subPos ];
    21842185            if(piDstCoeff[ uiBlkPos ] != 0 )
    21852186            {
    2186               Int costUp   = rdFactor * ( - deltaU[uiBlkPos] ) + rateIncUp[uiBlkPos] ;
    2187               Int costDown = rdFactor * (  deltaU[uiBlkPos] ) + rateIncDown[uiBlkPos]
     2187              Int64 costUp   = rdFactor * ( (Int64)- deltaU[uiBlkPos] ) + rateIncUp[uiBlkPos] ;
     2188              Int64 costDown = rdFactor * ( (Int64) deltaU[uiBlkPos] ) + rateIncDown[uiBlkPos]
    21882189                -   ( abs(piDstCoeff[uiBlkPos])==1?((1<<15)+sigRateDelta[uiBlkPos]):0 );
    21892190
    21902191              if(lastCG==1 && lastNZPosInCG==n && abs(piDstCoeff[uiBlkPos])==1)
     
    22022203                curChange = -1 ;
    22032204                if(n==firstNZPosInCG && abs(piDstCoeff[uiBlkPos])==1)
    22042205                {
    2205                   curCost = MAX_INT ;
     2206                  curCost = MAX_INT64 ;
    22062207                }
    22072208                else
    22082209                {
     
    22202221                UInt thissignbit = (plSrcCoeff[uiBlkPos]>=0?0:1);
    22212222                if(thissignbit != signbit )
    22222223                {
    2223                   curCost = MAX_INT;
     2224                  curCost = MAX_INT64;
    22242225                }
    22252226              }
    22262227            }