From: Yaowu Xu Date: Mon, 16 Aug 2010 23:16:24 +0000 (-0700) Subject: added separate rounding/zbin constants for 2nd order X-Git-Tag: v0.9.2~7^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fca129203ab3f77432577af668db224b142c82c6;p=libvpx added separate rounding/zbin constants for 2nd order This allows experiments of using different rounding and zerobin constants for 2nd order blocks. Change-Id: Idd829adba3edd1f713c66151a8d29bb245e33a71 --- diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index b28ba1a8b..e00154c80 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -101,6 +101,49 @@ static const int qzbin_factors[129] = 80, 80, 80, 80, 80, 80, 80, 80, 80, }; + +static const int qrounding_factors_y2[129] = +{ + 56, 56, 56, 56, 48, 48, 56, 56, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, + 48, +}; + +static const int qzbin_factors_y2[129] = +{ + 72, 72, 72, 72, 80, 80, 72, 72, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, + 80, +}; + //#define EXACT_QUANT #ifdef EXACT_QUANT static void vp8cx_invert_quant(short *quant, short *shift, short d) @@ -138,8 +181,8 @@ void vp8cx_init_quantizer(VP8_COMP *cpi) quant_val = vp8_dc2quant(Q, cpi->common.y2dc_delta_q); vp8cx_invert_quant(cpi->Y2quant[Q][0] + 0, cpi->Y2quant_shift[Q][0] + 0, quant_val); - cpi->Y2zbin[Q][0][0] = ((qzbin_factors[Q] * quant_val) + 64) >> 7; - cpi->Y2round[Q][0][0] = (qrounding_factors[Q] * quant_val) >> 7; + cpi->Y2zbin[Q][0][0] = ((qzbin_factors_y2[Q] * quant_val) + 64) >> 7; + cpi->Y2round[Q][0][0] = (qrounding_factors_y2[Q] * quant_val) >> 7; cpi->common.Y2dequant[Q][0][0] = quant_val; cpi->zrun_zbin_boost_y2[Q][0] = (quant_val * zbin_boost[0]) >> 7; @@ -169,8 +212,8 @@ void vp8cx_init_quantizer(VP8_COMP *cpi) quant_val = vp8_ac2quant(Q, cpi->common.y2ac_delta_q); vp8cx_invert_quant(cpi->Y2quant[Q][r] + c, cpi->Y2quant_shift[Q][r] + c, quant_val); - cpi->Y2zbin[Q][r][c] = ((qzbin_factors[Q] * quant_val) + 64) >> 7; - cpi->Y2round[Q][r][c] = (qrounding_factors[Q] * quant_val) >> 7; + cpi->Y2zbin[Q][r][c] = ((qzbin_factors_y2[Q] * quant_val) + 64) >> 7; + cpi->Y2round[Q][r][c] = (qrounding_factors_y2[Q] * quant_val) >> 7; cpi->common.Y2dequant[Q][r][c] = quant_val; cpi->zrun_zbin_boost_y2[Q][i] = (quant_val * zbin_boost[i]) >> 7; @@ -206,8 +249,8 @@ void vp8cx_init_quantizer(VP8_COMP *cpi) quant_val = vp8_dc2quant(Q, cpi->common.y2dc_delta_q); cpi->Y2quant[Q][0][0] = (1 << 16) / quant_val; - cpi->Y2zbin[Q][0][0] = ((qzbin_factors[Q] * quant_val) + 64) >> 7; - cpi->Y2round[Q][0][0] = (qrounding_factors[Q] * quant_val) >> 7; + cpi->Y2zbin[Q][0][0] = ((qzbin_factors_y2[Q] * quant_val) + 64) >> 7; + cpi->Y2round[Q][0][0] = (qrounding_factors_y2[Q] * quant_val) >> 7; cpi->common.Y2dequant[Q][0][0] = quant_val; cpi->zrun_zbin_boost_y2[Q][0] = (quant_val * zbin_boost[0]) >> 7; @@ -234,8 +277,8 @@ void vp8cx_init_quantizer(VP8_COMP *cpi) quant_val = vp8_ac2quant(Q, cpi->common.y2ac_delta_q); cpi->Y2quant[Q][r][c] = (1 << 16) / quant_val; - cpi->Y2zbin[Q][r][c] = ((qzbin_factors[Q] * quant_val) + 64) >> 7; - cpi->Y2round[Q][r][c] = (qrounding_factors[Q] * quant_val) >> 7; + cpi->Y2zbin[Q][r][c] = ((qzbin_factors_y2[Q] * quant_val) + 64) >> 7; + cpi->Y2round[Q][r][c] = (qrounding_factors_y2[Q] * quant_val) >> 7; cpi->common.Y2dequant[Q][r][c] = quant_val; cpi->zrun_zbin_boost_y2[Q][i] = (quant_val * zbin_boost[i]) >> 7;