| Index: source/libvpx/vp9/encoder/vp9_quantize.c
 | 
| diff --git a/source/libvpx/vp9/encoder/vp9_quantize.c b/source/libvpx/vp9/encoder/vp9_quantize.c
 | 
| index 7143987d444728c528429ead9b2b49ebb93f94ee..2523d1ea3fe64d422fd2a35f426190dc8e47da36 100644
 | 
| --- a/source/libvpx/vp9/encoder/vp9_quantize.c
 | 
| +++ b/source/libvpx/vp9/encoder/vp9_quantize.c
 | 
| @@ -19,7 +19,8 @@
 | 
|  #include "vp9/encoder/vp9_quantize.h"
 | 
|  #include "vp9/encoder/vp9_rd.h"
 | 
|  
 | 
| -void vp9_quantize_dc(const tran_low_t *coeff_ptr, int skip_block,
 | 
| +void vp9_quantize_dc(const tran_low_t *coeff_ptr,
 | 
| +                     int n_coeffs, 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) {
 | 
| @@ -29,6 +30,9 @@ void vp9_quantize_dc(const tran_low_t *coeff_ptr, int skip_block,
 | 
|    const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
 | 
|    int tmp, eob = -1;
 | 
|  
 | 
| +  vpx_memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
 | 
| +  vpx_memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
 | 
| +
 | 
|    if (!skip_block) {
 | 
|      tmp = clamp(abs_coeff + round_ptr[rc != 0], INT16_MIN, INT16_MAX);
 | 
|      tmp = (tmp * quant) >> 16;
 | 
| @@ -41,12 +45,16 @@ void vp9_quantize_dc(const tran_low_t *coeff_ptr, int skip_block,
 | 
|  }
 | 
|  
 | 
|  #if CONFIG_VP9_HIGHBITDEPTH
 | 
| -void vp9_highbd_quantize_dc(const tran_low_t *coeff_ptr, int skip_block,
 | 
| +void vp9_highbd_quantize_dc(const tran_low_t *coeff_ptr,
 | 
| +                            int n_coeffs, 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;
 | 
|  
 | 
| +  vpx_memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
 | 
| +  vpx_memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
 | 
| +
 | 
|    if (!skip_block) {
 | 
|      const int rc = 0;
 | 
|      const int coeff = coeff_ptr[rc];
 | 
| @@ -69,15 +77,20 @@ void vp9_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) {
 | 
| +  const int n_coeffs = 1024;
 | 
|    const int rc = 0;
 | 
|    const int coeff = coeff_ptr[rc];
 | 
|    const int coeff_sign = (coeff >> 31);
 | 
|    const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
 | 
|    int tmp, eob = -1;
 | 
|  
 | 
| +  vpx_memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
 | 
| +  vpx_memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
 | 
| +
 | 
|    if (!skip_block) {
 | 
|  
 | 
| -    tmp = clamp(abs_coeff + round_ptr[rc != 0], INT16_MIN, INT16_MAX);
 | 
| +    tmp = clamp(abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1),
 | 
| +                INT16_MIN, INT16_MAX);
 | 
|      tmp = (tmp * quant) >> 15;
 | 
|      qcoeff_ptr[rc]  = (tmp ^ coeff_sign) - coeff_sign;
 | 
|      dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr / 2;
 | 
| @@ -96,8 +109,12 @@ void vp9_highbd_quantize_dc_32x32(const tran_low_t *coeff_ptr,
 | 
|                                    tran_low_t *dqcoeff_ptr,
 | 
|                                    const int16_t dequant_ptr,
 | 
|                                    uint16_t *eob_ptr) {
 | 
| +  const int n_coeffs = 1024;
 | 
|    int eob = -1;
 | 
|  
 | 
| +  vpx_memset(qcoeff_ptr, 0, n_coeffs * sizeof(*qcoeff_ptr));
 | 
| +  vpx_memset(dqcoeff_ptr, 0, n_coeffs * sizeof(*dqcoeff_ptr));
 | 
| +
 | 
|    if (!skip_block) {
 | 
|      const int rc = 0;
 | 
|      const int coeff = coeff_ptr[rc];
 | 
| @@ -105,8 +122,8 @@ void vp9_highbd_quantize_dc_32x32(const tran_low_t *coeff_ptr,
 | 
|      const int abs_coeff = (coeff ^ coeff_sign) - coeff_sign;
 | 
|  
 | 
|      const int64_t tmp =
 | 
| -        (clamp(abs_coeff + round_ptr[rc != 0], INT32_MIN, INT32_MAX) *
 | 
| -         quant) >> 15;
 | 
| +        (clamp(abs_coeff + ROUND_POWER_OF_TWO(round_ptr[rc != 0], 1),
 | 
| +               INT32_MIN, INT32_MAX) * quant) >> 15;
 | 
|      qcoeff_ptr[rc] = (tran_low_t)((tmp ^ coeff_sign) - coeff_sign);
 | 
|      dqcoeff_ptr[rc] = qcoeff_ptr[rc] * dequant_ptr / 2;
 | 
|      if (tmp)
 | 
| @@ -521,21 +538,21 @@ void vp9_regular_quantize_b_4x4(MACROBLOCK *x, int plane, int block,
 | 
|  #if CONFIG_VP9_HIGHBITDEPTH
 | 
|    if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
 | 
|      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),
 | 
| -                        BLOCK_OFFSET(pd->dqcoeff, block),
 | 
| -                        pd->dequant, &p->eobs[block],
 | 
| -                        scan, iscan);
 | 
| +                          16, x->skip_block,
 | 
| +                          p->zbin, p->round, p->quant, p->quant_shift,
 | 
| +                          BLOCK_OFFSET(p->qcoeff, block),
 | 
| +                          BLOCK_OFFSET(pd->dqcoeff, block),
 | 
| +                          pd->dequant, &p->eobs[block],
 | 
| +                          scan, iscan);
 | 
|      return;
 | 
|    }
 | 
|  #endif
 | 
|    vp9_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),
 | 
| -           BLOCK_OFFSET(pd->dqcoeff, block),
 | 
| -           pd->dequant, &p->eobs[block], scan, iscan);
 | 
| +                 16, x->skip_block,
 | 
| +                 p->zbin, p->round, p->quant, p->quant_shift,
 | 
| +                 BLOCK_OFFSET(p->qcoeff, block),
 | 
| +                 BLOCK_OFFSET(pd->dqcoeff, block),
 | 
| +                 pd->dequant, &p->eobs[block], scan, iscan);
 | 
|  }
 | 
|  
 | 
|  static void invert_quant(int16_t *quant, int16_t *shift, int d) {
 | 
| 
 |