Index: source/libvpx/vp9/encoder/vp9_quantize.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_quantize.c (revision 292608) |
+++ source/libvpx/vp9/encoder/vp9_quantize.c (working copy) |
@@ -41,10 +41,10 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_dc(const tran_low_t *coeff_ptr, int skip_block, |
- const int16_t *round_ptr, const int16_t quant, |
- tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
- const int16_t dequant_ptr, uint16_t *eob_ptr) { |
+void vp9_highbd_quantize_dc(const tran_low_t *coeff_ptr, int skip_block, |
+ const int16_t *round_ptr, const int16_t quant, |
+ tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
+ const int16_t dequant_ptr, uint16_t *eob_ptr) { |
int eob = -1; |
if (!skip_block) { |
@@ -88,10 +88,14 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_dc_32x32(const tran_low_t *coeff_ptr, int skip_block, |
- const int16_t *round_ptr, const int16_t quant, |
- tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
- const int16_t dequant_ptr, uint16_t *eob_ptr) { |
+void vp9_highbd_quantize_dc_32x32(const tran_low_t *coeff_ptr, |
+ int skip_block, |
+ const int16_t *round_ptr, |
+ const int16_t quant, |
+ tran_low_t *qcoeff_ptr, |
+ tran_low_t *dqcoeff_ptr, |
+ const int16_t dequant_ptr, |
+ uint16_t *eob_ptr) { |
int eob = -1; |
if (!skip_block) { |
@@ -154,14 +158,20 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t count, |
- int skip_block, const int16_t *zbin_ptr, |
- const int16_t *round_ptr, const int16_t *quant_ptr, |
- const int16_t *quant_shift_ptr, |
- tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
- const int16_t *dequant_ptr, |
- int zbin_oq_value, uint16_t *eob_ptr, |
- const int16_t *scan, const int16_t *iscan) { |
+void vp9_highbd_quantize_fp_c(const tran_low_t *coeff_ptr, |
+ intptr_t count, |
+ int skip_block, |
+ const int16_t *zbin_ptr, |
+ const int16_t *round_ptr, |
+ const int16_t *quant_ptr, |
+ const int16_t *quant_shift_ptr, |
+ tran_low_t *qcoeff_ptr, |
+ tran_low_t *dqcoeff_ptr, |
+ const int16_t *dequant_ptr, |
+ int zbin_oq_value, |
+ uint16_t *eob_ptr, |
+ const int16_t *scan, |
+ const int16_t *iscan) { |
int i; |
int eob = -1; |
// TODO(jingning) Decide the need of these arguments after the |
@@ -242,17 +252,17 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, |
- intptr_t n_coeffs, int skip_block, |
- const int16_t *zbin_ptr, |
- const int16_t *round_ptr, |
- const int16_t *quant_ptr, |
- const int16_t *quant_shift_ptr, |
- tran_low_t *qcoeff_ptr, |
- tran_low_t *dqcoeff_ptr, |
- const int16_t *dequant_ptr, |
- int zbin_oq_value, uint16_t *eob_ptr, |
- const int16_t *scan, const int16_t *iscan) { |
+void vp9_highbd_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, |
+ intptr_t n_coeffs, int skip_block, |
+ const int16_t *zbin_ptr, |
+ const int16_t *round_ptr, |
+ const int16_t *quant_ptr, |
+ const int16_t *quant_shift_ptr, |
+ tran_low_t *qcoeff_ptr, |
+ tran_low_t *dqcoeff_ptr, |
+ const int16_t *dequant_ptr, |
+ int zbin_oq_value, uint16_t *eob_ptr, |
+ const int16_t *scan, const int16_t *iscan) { |
int i, eob = -1; |
(void)zbin_ptr; |
(void)quant_shift_ptr; |
@@ -340,14 +350,14 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, |
- int skip_block, const int16_t *zbin_ptr, |
- const int16_t *round_ptr, const int16_t *quant_ptr, |
- const int16_t *quant_shift_ptr, |
- tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
- const int16_t *dequant_ptr, int zbin_oq_value, |
- uint16_t *eob_ptr, const int16_t *scan, |
- const int16_t *iscan) { |
+void vp9_highbd_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, |
+ int skip_block, const int16_t *zbin_ptr, |
+ const int16_t *round_ptr, const int16_t *quant_ptr, |
+ const int16_t *quant_shift_ptr, |
+ tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, |
+ const int16_t *dequant_ptr, int zbin_oq_value, |
+ uint16_t *eob_ptr, const int16_t *scan, |
+ const int16_t *iscan) { |
int i, non_zero_count = (int)n_coeffs, eob = -1; |
const int zbins[2] = { zbin_ptr[0] + zbin_oq_value, |
zbin_ptr[1] + zbin_oq_value }; |
@@ -452,17 +462,17 @@ |
} |
#if CONFIG_VP9_HIGHBITDEPTH |
-void vp9_high_quantize_b_32x32_c(const tran_low_t *coeff_ptr, |
- intptr_t n_coeffs, int skip_block, |
- const int16_t *zbin_ptr, |
- const int16_t *round_ptr, |
- const int16_t *quant_ptr, |
- const int16_t *quant_shift_ptr, |
- tran_low_t *qcoeff_ptr, |
- tran_low_t *dqcoeff_ptr, |
- const int16_t *dequant_ptr, |
- int zbin_oq_value, uint16_t *eob_ptr, |
- const int16_t *scan, const int16_t *iscan) { |
+void vp9_highbd_quantize_b_32x32_c(const tran_low_t *coeff_ptr, |
+ intptr_t n_coeffs, int skip_block, |
+ const int16_t *zbin_ptr, |
+ const int16_t *round_ptr, |
+ const int16_t *quant_ptr, |
+ const int16_t *quant_shift_ptr, |
+ tran_low_t *qcoeff_ptr, |
+ tran_low_t *dqcoeff_ptr, |
+ const int16_t *dequant_ptr, |
+ int zbin_oq_value, uint16_t *eob_ptr, |
+ const int16_t *scan, const int16_t *iscan) { |
const int zbins[2] = { ROUND_POWER_OF_TWO(zbin_ptr[0] + zbin_oq_value, 1), |
ROUND_POWER_OF_TWO(zbin_ptr[1] + zbin_oq_value, 1) }; |
const int nzbins[2] = { zbins[0] * -1, zbins[1] * -1 }; |
@@ -519,7 +529,7 @@ |
#if CONFIG_VP9_HIGHBITDEPTH |
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { |
- vp9_high_quantize_b(BLOCK_OFFSET(p->coeff, block), |
+ vp9_highbd_quantize_b(BLOCK_OFFSET(p->coeff, block), |
16, x->skip_block, |
p->zbin, p->round, p->quant, p->quant_shift, |
BLOCK_OFFSET(p->qcoeff, block), |
@@ -641,13 +651,14 @@ |
x->plane[0].quant_shift = quants->y_quant_shift[qindex]; |
x->plane[0].zbin = quants->y_zbin[qindex]; |
x->plane[0].round = quants->y_round[qindex]; |
- x->plane[0].quant_thred[0] = cm->y_dequant[qindex][0] * |
- cm->y_dequant[qindex][0]; |
- x->plane[0].quant_thred[1] = cm->y_dequant[qindex][1] * |
- cm->y_dequant[qindex][1]; |
x->plane[0].zbin_extra = (int16_t)((cm->y_dequant[qindex][1] * zbin) >> 7); |
xd->plane[0].dequant = cm->y_dequant[qindex]; |
+ x->plane[0].quant_thred[0] = (x->plane[0].zbin[0] + x->plane[0].zbin_extra) * |
+ (x->plane[0].zbin[0] + x->plane[0].zbin_extra); |
+ x->plane[0].quant_thred[1] = (x->plane[0].zbin[1] + x->plane[0].zbin_extra) * |
+ (x->plane[0].zbin[1] + x->plane[0].zbin_extra); |
+ |
// UV |
for (i = 1; i < 3; i++) { |
x->plane[i].quant = quants->uv_quant[qindex]; |
@@ -656,12 +667,15 @@ |
x->plane[i].quant_shift = quants->uv_quant_shift[qindex]; |
x->plane[i].zbin = quants->uv_zbin[qindex]; |
x->plane[i].round = quants->uv_round[qindex]; |
- x->plane[i].quant_thred[0] = cm->y_dequant[qindex][0] * |
- cm->y_dequant[qindex][0]; |
- x->plane[i].quant_thred[1] = cm->y_dequant[qindex][1] * |
- cm->y_dequant[qindex][1]; |
x->plane[i].zbin_extra = (int16_t)((cm->uv_dequant[qindex][1] * zbin) >> 7); |
xd->plane[i].dequant = cm->uv_dequant[qindex]; |
+ |
+ x->plane[i].quant_thred[0] = |
+ (x->plane[i].zbin[0] + x->plane[i].zbin_extra) * |
+ (x->plane[i].zbin[0] + x->plane[i].zbin_extra); |
+ x->plane[i].quant_thred[1] = |
+ (x->plane[i].zbin[1] + x->plane[i].zbin_extra) * |
+ (x->plane[i].zbin[1] + x->plane[i].zbin_extra); |
} |
x->skip_block = vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP); |