Commit a0ed4e63 by Yaowu Xu Committed by On2 (Google) Code Review

### Merge "scaled the threshold for 2nd order coefficient reset" into experimental

parents 151b7f25 cbcba9e7
 ... ... @@ -615,33 +615,48 @@ static void optimize_b(MACROBLOCK *mb, int ib, int type, *a = *l = (d->eob != !type); } #if CONFIG_EXTEND_QRANGE /************************************************************************** our inverse hadamard transform effectively is weighted sum of all 16 inputs with weight either 1 or -1. It has a last stage scaling of (sum+1)>>2. And dc only idct is (dc+16)>>5. So if all the sums are between -65 and 63 the output after inverse wht and idct will be all zero. A sum of absolute value smaller than 65 guarantees all 16 different (+1/-1) weighted sums in wht fall between -65 and +65. **************************************************************************/ #define SUM_2ND_COEFF_THRESH 65 #else /************************************************************************** our inverse hadamard transform effectively is weighted sum of all 16 inputs with weight either 1 or -1. It has a last stage scaling of (sum+3)>>3. And dc only idct is (dc+4)>>3. So if all the sums are between -35 and 29, the output after inverse wht and idct will be all zero. A sum of absolute value smaller than 35 guarantees all 16 different (+1/-1) weighted sums in wht fall between -35 and +35. **************************************************************************/ #define SUM_2ND_COEFF_THRESH 35 #endif static void check_reset_2nd_coeffs(MACROBLOCKD *x, int type, ENTROPY_CONTEXT *a, ENTROPY_CONTEXT *l) { int sum=0; int i; BLOCKD *bd = &x->block[24]; if(bd->dequant[0]>=35 && bd->dequant[1]>=35) if(bd->dequant[0]>=SUM_2ND_COEFF_THRESH && bd->dequant[1]>=SUM_2ND_COEFF_THRESH) return; for(i=0;ieob;i++) { int coef = bd->dqcoeff[vp8_default_zig_zag1d[i]]; sum+= (coef>=0)?coef:-coef; if(sum>=35) if(sum>=SUM_2ND_COEFF_THRESH) return; } /************************************************************************** our inverse hadamard transform effectively is weighted sum of all 16 inputs with weight either 1 or -1. It has a last stage scaling of (sum+3)>>3. And dc only idct is (dc+4)>>3. So if all the sums are between -35 and 29, the output after inverse wht and idct will be all zero. A sum of absolute value smaller than 35 guarantees all 16 different (+1/-1) weighted sums in wht fall between -35 and +35. **************************************************************************/ if(sum < 35) if(sum < SUM_2ND_COEFF_THRESH) { for(i=0;ieob;i++) { ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!