Add option to use fp quant when new-quant is used
Change-Id: I861ccc09454606ce4172db02a52550f9b7a7800c
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 4016628..df5a936 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -31,6 +31,12 @@
extern "C" {
#endif
+#if CONFIG_NEW_QUANT
+#define USE_B_QUANT_NO_TRELLIS 0
+#else
+#define USE_B_QUANT_NO_TRELLIS 1
+#endif // CONFIG_NEW_QUANT
+
#define MAX_MB_PLANE 3
// Set COMPOUND_SEGMENT_TYPE to one of the three
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index ce8d1d7..bc0605e 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -585,8 +585,9 @@
av1_optimize_b(args->cpi, x, plane, blk_row, blk_col, block, plane_bsize,
tx_size, a, l, CONFIG_LV_MAP);
} else {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_B);
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
}
} else {
p->eobs[block] = 0;
@@ -901,8 +902,9 @@
}
#endif // CONFIG_TXK_SEL
} else {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
- AV1_XFORM_QUANT_B);
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
}
av1_inverse_transform_block(xd, dqcoeff, plane, tx_type, tx_size, dst,
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 1df90bc..5cc611d 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -2337,8 +2337,9 @@
RD_STATS this_rd_stats;
av1_invalid_rd_stats(&this_rd_stats);
if (cpi->sf.optimize_coefficients != FULL_TRELLIS_OPT) {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_B);
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
tx_size, AV1_XFORM_QUANT_FP);
@@ -2376,8 +2377,9 @@
// intra mode needs decoded result such that the next transform block
// can use it for prediction.
if (cpi->sf.optimize_coefficients != FULL_TRELLIS_OPT) {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_B);
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
tx_size, AV1_XFORM_QUANT_FP);
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index fd274d2..39495cf 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1858,10 +1858,10 @@
#if !CONFIG_TXK_SEL
// full forward transform and quantization
- if (cpi->sf.optimize_coefficients == FINAL_PASS_TRELLIS_OPT ||
- cpi->sf.optimize_coefficients == NO_TRELLIS_OPT) {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
- AV1_XFORM_QUANT_B);
+ if (cpi->sf.optimize_coefficients != FULL_TRELLIS_OPT) {
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
AV1_XFORM_QUANT_FP);
@@ -3510,10 +3510,10 @@
NULL, 0, bw, bh);
}
- if (cpi->sf.optimize_coefficients == FINAL_PASS_TRELLIS_OPT ||
- cpi->sf.optimize_coefficients == NO_TRELLIS_OPT) {
- av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
- AV1_XFORM_QUANT_B);
+ if (cpi->sf.optimize_coefficients != FULL_TRELLIS_OPT) {
+ av1_xform_quant(
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,