#endif // CONFIG_TX_SKIP
};
-static const uint8_t vp9_nuq_knots_tiny[COEF_BANDS][NUQ_KNOTS] = {
- {84, 124, 128}, // dc, band 0
- {84, 124, 128}, // band 1
- {84, 124, 128}, // band 2
- {86, 124, 128}, // band 3
- {86, 124, 128}, // band 4
- {86, 124, 128}, // band 5
-#if CONFIG_TX_SKIP
- {84, 124, 128}, // band 6
-#endif // CONFIG_TX_SKIP
-};
-static const uint8_t vp9_nuq_knots_low[COEF_BANDS][NUQ_KNOTS] = {
- {84, 124, 128}, // dc, band 0
- {84, 124, 128}, // band 1
- {84, 124, 128}, // band 2
- {86, 124, 128}, // band 3
- {86, 124, 128}, // band 4
- {86, 124, 128}, // band 5
-#if CONFIG_TX_SKIP
- {84, 124, 128}, // band 6
-#endif // CONFIG_TX_SKIP
-};
static const uint8_t vp9_nuq_knots_mid[COEF_BANDS][NUQ_KNOTS] = {
{84, 124, 128}, // dc, band 0
{84, 124, 128}, // band 1
{84, 124, 128}, // band 6
#endif // CONFIG_TX_SKIP
};
-static const uint8_t vp9_nuq_knots_high[COEF_BANDS][NUQ_KNOTS] = {
- {84, 124, 128}, // dc, band 0
- {84, 124, 128}, // band 1
- {84, 124, 128}, // band 2
- {86, 124, 128}, // band 3
- {86, 124, 128}, // band 4
- {86, 124, 128}, // band 5
-#if CONFIG_TX_SKIP
- {84, 124, 128}, // band 6
-#endif // CONFIG_TX_SKIP
-};
-static const uint8_t vp9_nuq_knots_huge[COEF_BANDS][NUQ_KNOTS] = {
- {84, 124, 128}, // dc, band 0
- {84, 124, 128}, // band 1
- {84, 124, 128}, // band 2
- {86, 124, 128}, // band 3
- {86, 124, 128}, // band 4
- {86, 124, 128}, // band 5
-#if CONFIG_TX_SKIP
- {84, 124, 128}, // band 6
-#endif // CONFIG_TX_SKIP
-};
static const uint8_t vp9_nuq_doff_lossless[COEF_BANDS] = { 0, 0, 0, 0, 0, 0
#if CONFIG_TX_SKIP
, 0
#endif // CONFIG_TX_SKIP
};
-static const uint8_t vp9_nuq_doff_tiny[COEF_BANDS] = { 8, 16, 17, 22, 23, 24
-#if CONFIG_TX_SKIP
- , 8
-#endif // CONFIG_TX_SKIP
-};
-static const uint8_t vp9_nuq_doff_low[COEF_BANDS] = { 8, 16, 17, 22, 23, 24
+static const uint8_t vp9_nuq_doff_low[COEF_BANDS] = { 5, 13, 14, 19, 20, 21
#if CONFIG_TX_SKIP
, 8
#endif // CONFIG_TX_SKIP
, 8
#endif // CONFIG_TX_SKIP
};
-static const uint8_t vp9_nuq_doff_high[COEF_BANDS] = { 8, 16, 17, 22, 23, 24
-#if CONFIG_TX_SKIP
- , 8
-#endif // CONFIG_TX_SKIP
-};
-static const uint8_t vp9_nuq_doff_huge[COEF_BANDS] = { 8, 16, 17, 22, 23, 24
+static const uint8_t vp9_nuq_doff_high[COEF_BANDS] = { 41, 49, 50, 55, 56, 57
#if CONFIG_TX_SKIP
, 8
#endif // CONFIG_TX_SKIP
// Allow different quantization profiles in different q ranges,
// to enable entropy-constraints in scalar quantization.
-static const uint8_t *get_nuq_knots(int16_t quant, int lossless,
- int band, int bd) {
- const int shift = bd - 8;
+static const uint8_t *get_nuq_knots(int lossless, int band) {
if (lossless)
return vp9_nuq_knots_lossless[band];
- if (quant > (512 << shift))
- return vp9_nuq_knots_huge[band];
- else if (quant > (256 << shift))
- return vp9_nuq_knots_high[band];
- else if (quant > (128 << shift))
- return vp9_nuq_knots_mid[band];
- else if (quant > (64 << shift))
- return vp9_nuq_knots_low[band];
else
- return vp9_nuq_knots_tiny[band];
+ return vp9_nuq_knots_mid[band];
}
-static INLINE int16_t quant_to_doff_fixed(int16_t quant, int lossless,
- int band, int bd) {
- const int shift = bd - 8;
+static INLINE int16_t quant_to_doff_fixed(int lossless, int band,
+ int dq_off_index) {
if (lossless)
return vp9_nuq_doff_lossless[band];
- if (quant > (512 << shift))
- return vp9_nuq_doff_huge[band];
- else if (quant > (256 << shift))
- return vp9_nuq_doff_high[band];
- else if (quant > (128 << shift))
+ else if (!dq_off_index) // dq_off_index == 0
return vp9_nuq_doff_mid[band];
- else if (quant > (64 << shift))
+ else if (dq_off_index == 1)
return vp9_nuq_doff_low[band];
- else
- return vp9_nuq_doff_tiny[band];
+ else // dq_off_index == 2
+ return vp9_nuq_doff_high[band];
}
-static INLINE void get_cumbins_nuq(int q, int lossless, int band, int bd,
+static INLINE void get_cumbins_nuq(int q, int lossless, int band,
tran_low_t *cumbins) {
- const uint8_t *knots = get_nuq_knots(q, lossless, band, bd);
+ const uint8_t *knots = get_nuq_knots(lossless, band);
int16_t cumknots[NUQ_KNOTS];
int i;
cumknots[0] = knots[0];
cumbins[i] = (cumknots[i] * q + 64) >> 7;
}
-void vp9_get_dequant_val_nuq(int q, int lossless, int band, int bd,
- tran_low_t *dq, tran_low_t *cumbins) {
- const uint8_t *knots = get_nuq_knots(q, lossless, band, bd);
+void vp9_get_dequant_val_nuq(int q, int lossless, int band,
+ tran_low_t *dq, tran_low_t *cumbins,
+ int dq_off_index) {
+ const uint8_t *knots = get_nuq_knots(lossless, band);
tran_low_t cumbins_[NUQ_KNOTS], *cumbins_ptr;
tran_low_t doff;
int i;
cumbins_ptr = (cumbins ? cumbins : cumbins_);
- get_cumbins_nuq(q, lossless, band, bd, cumbins_ptr);
+ get_cumbins_nuq(q, lossless, band, cumbins_ptr);
dq[0] = 0;
for (i = 1; i < NUQ_KNOTS; ++i) {
const int16_t qstep = (knots[i] * q + 64) >> 7;
- doff = quant_to_doff_fixed(qstep, lossless, band, bd);
+ doff = quant_to_doff_fixed(lossless, band, dq_off_index);
doff = (2 * doff * qstep + q) / (2 * q);
dq[i] = cumbins_ptr[i - 1] + (((knots[i] - doff * 2) * q + 128) >> 8);
}
- doff = quant_to_doff_fixed(q, lossless, band, bd);
+ doff = quant_to_doff_fixed(lossless, band, dq_off_index);
dq[NUQ_KNOTS] =
cumbins_ptr[NUQ_KNOTS - 1] + (((64 - doff) * q + 64) >> 7);
}
tran_low_t *const dqcoeff = BLOCK_OFFSET(pd->dqcoeff, block);
const int eob = p->eobs[block];
const PLANE_TYPE type = pd->plane_type;
+#if CONFIG_NEW_QUANT
+ int dq = xd->mi->mbmi.dq_off_index;
+#endif // CONFIG_NEW_QUANT
#if CONFIG_SR_MODE
int b_sr = xd->mi[0].src_mi->mbmi.sr;
// TX_SIZE new_tx_size = (b_sr) ? (tx_size - 1) : tx_size;
const int16_t *dequant_ptr = pd->dequant;
#endif // CONFIG_TX_SKIP
#if CONFIG_NEW_QUANT
+ int dq = xd->mi->mbmi.dq_off_index;
#if CONFIG_TX_SKIP
const int use_rect_quant = is_rect_quant_used(&xd->mi[0].src_mi->mbmi, plane);
#endif // CONFIG_TX_SKIP
- const dequant_val_type_nuq *dequant_val = pd->dequant_val_nuq;
+ const dequant_val_type_nuq *dequant_val = pd->dequant_val_nuq[dq];
#endif // CONFIG_NEW_QUANT
#if CONFIG_TX_SKIP
const uint8_t *const band_translate = tx_skip ?
#if CONFIG_TX_SKIP
const int use_rect_quant = is_rect_quant_used(&xd->mi[0].src_mi->mbmi, plane);
#endif // CONFIG_TX_SKIP
- const dequant_val_type_nuq *dequant_val = pd->dequant_val_nuq;
+ const dequant_val_type_nuq *dequant_val = pd->dequant_val_nuq[dq];
#endif // CONFIG_NEW_QUANT
#if CONFIG_TX_SKIP
const uint8_t *const band_translate = tx_skip ?
#if CONFIG_TX_SKIP && CONFIG_NEW_QUANT
if (xd->mi[0].src_mi->mbmi.tx_skip[plane != 0])
- dequant_val = pd->dequant_val_nuq_pxd;
+ dequant_val = pd->dequant_val_nuq_pxd[dq];
#endif // CONFIG_TX_SKIP && CONFIG_NEW_QUANT
/* Now set up a Viterbi trellis to evaluate alternative roundings. */
MACROBLOCKD *const xd = &x->e_mbd;
const struct macroblock_plane *const p = &x->plane[plane];
const struct macroblockd_plane *const pd = &xd->plane[plane];
+int dq = xd->mi->mbmi.dq_off_index;
#if CONFIG_TX_SKIP
MB_MODE_INFO *mbmi = &xd->mi[0].src_mi->mbmi;
int shift = mbmi->tx_skip_shift;
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, bs * bs, x->skip_block,
p->quant_pxd, p->quant_shift_pxd, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq_pxd,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
} else if (tx_size == TX_32X32) {
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_64x64_nuq(coeff, 4096, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_32x32_nuq(coeff, 1024, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_nuq(coeff, 256, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_nuq(coeff, 64, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_nuq(coeff, 16, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
MACROBLOCKD *const xd = &x->e_mbd;
const struct macroblock_plane *const p = &x->plane[plane];
const struct macroblockd_plane *const pd = &xd->plane[plane];
+int dq = xd->mi->mbmi.dq_off_index;
#if CONFIG_TX_SKIP
MB_MODE_INFO *mbmi = &xd->mi[0].src_mi->mbmi;
int shift = mbmi->tx_skip_shift;
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
} else if (tx_size == TX_32X32) {
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_fp_nuq(coeff, 256, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_fp_nuq(coeff, 64, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
vp9_quantize_fp_nuq(coeff, 16, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
break;
const int diff_stride = 4 * num_4x4_blocks_wide_lookup[plane_bsize];
int i, j;
const int16_t *src_diff;
+ int dq = xd->mi->mbmi.dq_off_index;
#if CONFIG_TX_SKIP
MB_MODE_INFO *mbmi = &xd->mi[0].src_mi->mbmi;
int shift = mbmi->tx_skip_shift;
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
#endif // CONFIG_VP9_HIGHBITDEPTH
vp9_quantize_dc_nuq(coeff, x->skip_block,
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
- p->cumbins_nuq_pxd[0], pd->dequant_val_nuq_pxd[0],
+ p->cumbins_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
} else if (tx_size == TX_32X32) {
#if CONFIG_VP9_HIGHBITDEPTH
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
else
#endif // CONFIG_VP9_HIGHBITDEPTH
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
}
#if CONFIG_TX64X64
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
else
#endif // CONFIG_VP9_HIGHBITDEPTH
p->quant_pxd[0], p->quant_shift_pxd[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
}
#endif // CONFIG_TX64X64
p->quant[0], p->quant_shift[0],
pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
#endif // CONFIG_TX64X64
p->quant[0], p->quant_shift[0],
pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_16X16:
p->quant[0], p->quant_shift[0],
pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_8X8:
p->quant[0], p->quant_shift[0],
pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_4X4:
p->quant[0], p->quant_shift[0],
pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
default:
#endif
vp9_quantize_dc_64x64_nuq(coeff, x->skip_block,
p->quant[0], p->quant_shift[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
#endif // CONFIG_TX64X64
#endif
vp9_quantize_dc_32x32_nuq(coeff, x->skip_block,
p->quant[0], p->quant_shift[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_16X16:
#endif
vp9_quantize_dc_nuq(coeff, x->skip_block,
p->quant[0], p->quant_shift[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_8X8:
#endif
vp9_quantize_dc_nuq(coeff, x->skip_block,
p->quant[0], p->quant_shift[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_4X4:
#endif
vp9_quantize_dc_nuq(coeff, x->skip_block,
p->quant[0], p->quant_shift[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
default:
const int diff_stride = 4 * num_4x4_blocks_wide_lookup[plane_bsize];
int i, j;
const int16_t *src_diff;
+ int dq = xd->mi->mbmi.dq_off_index;
#if CONFIG_TX_SKIP
MB_MODE_INFO *mbmi = &xd->mi[0].src_mi->mbmi;
int shift = mbmi->tx_skip_shift;
vp9_highbd_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_pxd_fp[0], pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
else
#endif // CONFIG_VP9_HIGHBITDEPTH
vp9_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_pxd_fp[0], pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
} else if (tx_size == TX_32X32) {
#if CONFIG_VP9_HIGHBITDEPTH
p->quant_pxd_fp[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->
+ dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
else
#endif // CONFIG_VP9_HIGHBITDEPTH
vp9_quantize_dc_32x32_fp_nuq(coeff, x->skip_block,
p->quant_pxd_fp[0], pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
}
#if CONFIG_TX64X64
p->quant_pxd_fp[0],
pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->
+ dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
else
#endif // CONFIG_VP9_HIGHBITDEPTH
vp9_quantize_dc_64x64_fp_nuq(coeff, x->skip_block,
p->quant_pxd_fp[0], pd->dequant_pxd[0],
p->cumbins_nuq_pxd[0],
- pd->dequant_val_nuq_pxd[0],
+ pd->dequant_val_nuq_pxd[dq][0],
qcoeff, dqcoeff, eob);
}
#endif // CONFIG_TX64X64
vp9_highbd_quantize_dc_64x64_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
#endif // CONFIG_TX64X64
vp9_highbd_quantize_dc_32x32_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_16X16:
vp9_highbd_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_8X8:
vp9_highbd_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_4X4:
vp9_highbd_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
p->cumbins_nuq[0],
- pd->dequant_val_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
default:
#endif
vp9_quantize_dc_64x64_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
#endif // CONFIG_TX64X64
#endif
vp9_quantize_dc_32x32_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_16X16:
#endif
vp9_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_8X8:
#endif
vp9_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
case TX_4X4:
#endif
vp9_quantize_dc_fp_nuq(coeff, x->skip_block,
p->quant_fp[0], pd->dequant[0],
- p->cumbins_nuq[0], pd->dequant_val_nuq[0],
+ p->cumbins_nuq[0],
+ pd->dequant_val_nuq[dq][0],
qcoeff, dqcoeff, eob);
break;
default:
const int dst_stride = pd->dst.stride;
int i, j;
#if CONFIG_NEW_QUANT
+ int dq = xd->mi->mbmi.dq_off_index;
const uint8_t* band = get_band_translate(tx_size);
#endif // CONFIG_NEW_QUANT
#if CONFIG_SR_MODE
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
} else {
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant_pxd, p->quant_shift_pxd, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
p->quant_pxd_fp, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant_pxd, p->quant_shift_pxd, pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#endif // CONFIG_VP9_HIGHBITDEPTH
(const cumbins_type_nuq *)p->
cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->
+ dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
} else {
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);/**/
#endif // CONFIG_VP9_HIGHBITDEPTH
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->
+ dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
} else {
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
}
(const cumbins_type_nuq *)
p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
pd->dequant_pxd,
(const cumbins_type_nuq *)p->cumbins_nuq_pxd,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq_pxd,
+ pd->dequant_val_nuq_pxd[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#endif // CONFIG_VP9_HIGHBITDEPTH
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan,
band);
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan,
band);
(const cumbins_type_nuq *)
p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(coeff, 256, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 256, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
(const dequant_val_type_nuq *)
- pd->dequant_val_nuq,
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(coeff, 64, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 64, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(coeff, 256, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 256, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(
coeff, 16, x->skip_block, p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob, scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 16, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(coeff, 64, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 64, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else
vp9_quantize_fp_nuq(coeff, 16, x->skip_block,
p->quant_fp, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
else
vp9_quantize_nuq(coeff, 16, x->skip_block,
p->quant, p->quant_shift, pd->dequant,
(const cumbins_type_nuq *)p->cumbins_nuq,
- (const dequant_val_type_nuq *)pd->dequant_val_nuq,
+ (const dequant_val_type_nuq *)
+ pd->dequant_val_nuq[dq],
qcoeff, dqcoeff, eob,
scan_order->scan, band);
#else