skip init_levels for dc only blocks.
The costing for when looking at the eob is handled by special
case context lookups.
Change-Id: I431db7e0e7f682ec73eb7af9765f84dc47ae332f
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 7f73bc0..993e5ca 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -1604,14 +1604,14 @@
uint8_t levels_buf[TX_PAD_2D];
uint8_t *const levels = set_levels(levels_buf, width);
+ int eob = p->eobs[block];
- av1_txb_init_levels(qcoeff, width, height, levels);
+ if (eob > 1) av1_txb_init_levels(qcoeff, width, height, levels);
// TODO(angirbird): check iqmatrix
const int non_skip_cost = txb_costs->txb_skip_cost[txb_ctx->txb_skip_ctx][0];
const int skip_cost = txb_costs->txb_skip_cost[txb_ctx->txb_skip_ctx][1];
- int eob = p->eobs[block];
const int eob_cost = get_eob_cost(eob, txb_eob_costs, txb_costs, tx_class);
int accu_rate = eob_cost;
int64_t accu_dist = 0;
@@ -1632,9 +1632,9 @@
} else {
assert(abs_qc == 1);
const int coeff_ctx = get_lower_levels_ctx_eob(bwl, height, si);
- accu_rate += get_coeff_cost_general(1, ci, abs_qc, sign, coeff_ctx,
- txb_ctx->dc_sign_ctx, txb_costs, bwl,
- tx_class, levels);
+ accu_rate +=
+ get_coeff_cost_eob(ci, abs_qc, sign, coeff_ctx, txb_ctx->dc_sign_ctx,
+ txb_costs, bwl, tx_class);
const tran_low_t tqc = tcoeff[ci];
const tran_low_t dqc = dqcoeff[ci];
const int64_t dist = get_coeff_dist(tqc, dqc, shift);