Ticket #596: RDOQ-14-bit-overflow_ontopof2483.patch
File RDOQ-14-bit-overflow_ontopof2483.patch, 3.0 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
2164 2164 2165 2165 if( pcCU->getSlice()->getPPS()->getSignHideFlag() && uiAbsSum>=2) 2166 2166 { 2167 Int rdFactor = (Int)((Double)(g_invQuantScales[m_cQP.rem()])*(Double)(g_invQuantScales[m_cQP.rem()])*(Double)(1<<(2*m_cQP.m_iPer))/m_dLambda/16/(Double)(1<<(2*g_uiBitIncrement)) + 0.5);2167 Int64 rdFactor = (Int64)((Double)(g_invQuantScales[m_cQP.rem()])*(Double)(g_invQuantScales[m_cQP.rem()])*(Double)(1<<(2*m_cQP.m_iPer))/m_dLambda/16/(Double)(1<<(2*g_uiBitIncrement)) + 0.5); 2168 2168 #if !FIXED_SBH_THRESHOLD 2169 2169 Int tsig = pcCU->getSlice()->getPPS()->getTSIG() ; 2170 2170 #endif … … 2213 2213 if( signbit!=(absSum&0x1) ) // hide but need tune 2214 2214 { 2215 2215 // calculate the cost 2216 Int minCostInc = MAX_INT, minPos =-1, finalChange=0, curCost=MAX_INT, curChange=0; 2216 Int64 minCostInc = MAX_INT64, curCost=MAX_INT64; 2217 Int minPos =-1, finalChange=0, curChange=0; 2217 2218 2218 2219 for( n = (lastCG==1?lastNZPosInCG:SCAN_SET_SIZE-1) ; n >= 0; --n ) 2219 2220 { 2220 2221 UInt uiBlkPos = scan[ n + subPos ]; 2221 2222 if(piDstCoeff[ uiBlkPos ] != 0 ) 2222 2223 { 2223 Int costUp = rdFactor * ( - deltaU[uiBlkPos] ) + rateIncUp[uiBlkPos] ;2224 Int costDown = rdFactor * ( deltaU[uiBlkPos] ) + rateIncDown[uiBlkPos]2224 Int64 costUp = rdFactor * ( - deltaU[uiBlkPos] ) + rateIncUp[uiBlkPos] ; 2225 Int64 costDown = rdFactor * ( deltaU[uiBlkPos] ) + rateIncDown[uiBlkPos] 2225 2226 - ( abs(piDstCoeff[uiBlkPos])==1?((1<<15)+sigRateDelta[uiBlkPos]):0 ); 2226 2227 2227 2228 if(lastCG==1 && lastNZPosInCG==n && abs(piDstCoeff[uiBlkPos])==1) … … 2239 2240 curChange = -1 ; 2240 2241 if(n==firstNZPosInCG && abs(piDstCoeff[uiBlkPos])==1) 2241 2242 { 2242 curCost = MAX_INT ;2243 curCost = MAX_INT64 ; 2243 2244 } 2244 2245 else 2245 2246 { … … 2257 2258 UInt thissignbit = (plSrcCoeff[uiBlkPos]>=0?0:1); 2258 2259 if(thissignbit != signbit ) 2259 2260 { 2260 curCost = MAX_INT ;2261 curCost = MAX_INT64; 2261 2262 } 2262 2263 } 2263 2264 }