Ticket #596: 14-bit-overflow_onTopOfHM71rc1.patch
File 14-bit-overflow_onTopOfHM71rc1.patch, 2.9 KB (added by pandrivon, 11 years ago) |
---|
-
source/Lib/TLibCommon/CommonDef.h
112 112 113 113 #define MAX_UINT 0xFFFFFFFFU ///< max. value of unsigned 32-bit integer 114 114 #define MAX_INT 2147483647 ///< max. value of signed 32-bit integer 115 #define MAX_INT64 0x7FFFFFFFFFFFFFFF ///< max. value of signed 64-bit integer 115 116 #define MAX_DOUBLE 1.7e+308 ///< max. value of double-type value 116 117 117 118 #define MIN_QP 0 -
source/Lib/TLibCommon/TComTrQuant.cpp
2127 2127 2128 2128 if( pcCU->getSlice()->getPPS()->getSignHideFlag() && uiAbsSum>=2) 2129 2129 { 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) ; 2131 2131 #if !FIXED_SBH_THRESHOLD 2132 2132 Int tsig = pcCU->getSlice()->getPPS()->getTSIG() ; 2133 2133 #endif … … 2176 2176 if( signbit!=(absSum&0x1) ) // hide but need tune 2177 2177 { 2178 2178 // 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; 2180 2181 2181 2182 for( n = (lastCG==1?lastNZPosInCG:SCAN_SET_SIZE-1) ; n >= 0; --n ) 2182 2183 { 2183 2184 UInt uiBlkPos = scan[ n + subPos ]; 2184 2185 if(piDstCoeff[ uiBlkPos ] != 0 ) 2185 2186 { 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] 2188 2189 - ( abs(piDstCoeff[uiBlkPos])==1?((1<<15)+sigRateDelta[uiBlkPos]):0 ); 2189 2190 2190 2191 if(lastCG==1 && lastNZPosInCG==n && abs(piDstCoeff[uiBlkPos])==1) … … 2202 2203 curChange = -1 ; 2203 2204 if(n==firstNZPosInCG && abs(piDstCoeff[uiBlkPos])==1) 2204 2205 { 2205 curCost = MAX_INT ;2206 curCost = MAX_INT64 ; 2206 2207 } 2207 2208 else 2208 2209 { … … 2220 2221 UInt thissignbit = (plSrcCoeff[uiBlkPos]>=0?0:1); 2221 2222 if(thissignbit != signbit ) 2222 2223 { 2223 curCost = MAX_INT ;2224 curCost = MAX_INT64; 2224 2225 } 2225 2226 } 2226 2227 }