Calculate coeff cost in av1_search_txk_type

Change-Id: Ie388218b2202ee2f63b90c67a059cbfe54fd4a4e
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 6c587aa..e124c6f 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -718,7 +718,8 @@
 int64_t av1_search_txk_type(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
                             int block, int blk_row, int blk_col,
                             BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
-                            int coeff_ctx, RD_STATS *rd_stats) {
+                            const ENTROPY_CONTEXT *a, const ENTROPY_CONTEXT *l,
+                            int use_fast_coef_costing, RD_STATS *rd_stats) {
   const AV1_COMMON *cm = &cpi->common;
   MACROBLOCKD *xd = &x->e_mbd;
   MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
@@ -727,6 +728,7 @@
   TX_TYPE best_tx_type = txk_start;
   int64_t best_rd = INT64_MAX;
   int best_eob = tx_size_2d[tx_size];
+  const int coeff_ctx = combine_entropy_contexts(*a, *l);
   if (!allow_txk_type(xd, tx_size, plane)) txk_end = DCT_DCT;
   TX_TYPE tx_type;
   for (tx_type = txk_start; tx_type <= txk_end; ++tx_type) {
@@ -739,6 +741,10 @@
       av1_optimize_b(cm, x, plane, block, tx_size, coeff_ctx);
     av1_dist_block(cpi, x, plane, plane_bsize, block, blk_row, blk_col, tx_size,
                    &this_rd_stats.dist, &this_rd_stats.sse, 0);
+    const SCAN_ORDER *scan_order =
+        get_scan(cm, tx_size, tx_type, is_inter_block(mbmi));
+    this_rd_stats.rate = av1_cost_coeffs(
+        cm, x, plane, block, tx_size, scan_order, a, l, use_fast_coef_costing);
     int rd = RDCOST(x->rdmult, x->rddiv, 0, this_rd_stats.dist);
     if (rd < best_rd) {
       best_rd = rd;
diff --git a/av1/encoder/encodetxb.h b/av1/encoder/encodetxb.h
index f6346d0..465a8dc 100644
--- a/av1/encoder/encodetxb.h
+++ b/av1/encoder/encodetxb.h
@@ -42,7 +42,8 @@
 int64_t av1_search_txk_type(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
                             int block, int blk_row, int blk_col,
                             BLOCK_SIZE plane_bsize, TX_SIZE tx_size,
-                            int coeff_ctx, RD_STATS *rd_stats);
+                            const ENTROPY_CONTEXT *a, const ENTROPY_CONTEXT *l,
+                            int use_fast_coef_costing, RD_STATS *rd_stats);
 #ifdef __cplusplus
 }
 #endif
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 19b0620..7a92b2d 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1544,12 +1544,12 @@
   MACROBLOCKD *const xd = &x->e_mbd;
   MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
   const AV1_COMP *cpi = args->cpi;
-#if !CONFIG_LV_MAP || !CONFIG_PVQ
+  ENTROPY_CONTEXT *a = args->t_above + blk_col;
+  ENTROPY_CONTEXT *l = args->t_left + blk_row;
+#if !CONFIG_LV_MAP
   const AV1_COMMON *cm = &cpi->common;
 #endif
   int64_t rd1, rd2, rd;
-  int coeff_ctx = combine_entropy_contexts(*(args->t_above + blk_col),
-                                           *(args->t_left + blk_row));
   RD_STATS this_rd_stats;
 
   assert(tx_size == get_tx_size(plane, xd));
@@ -1565,6 +1565,7 @@
 
 #if !CONFIG_LV_MAP
   // full forward transform and quantization
+  int coeff_ctx = combine_entropy_contexts(*a, *l);
   av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
                   coeff_ctx, AV1_XFORM_QUANT_FP);
   if (x->plane[plane].eobs[block] && !xd->lossless[mbmi->segment_id])
@@ -1582,32 +1583,33 @@
                    tx_size, &this_rd_stats.dist, &this_rd_stats.sse,
                    OUTPUT_HAS_PREDICTED_PIXELS);
   }
-#else   // !CONFIG_LV_MAP
-  av1_search_txk_type(cpi, x, plane, block, blk_row, blk_col, plane_bsize,
-                      tx_size, coeff_ctx, &this_rd_stats);
-#endif  // !CONFIG_LV_MAP
-
   rd = RDCOST(x->rdmult, x->rddiv, 0, this_rd_stats.dist);
   if (args->this_rd + rd > args->best_rd) {
     args->exit_early = 1;
     return;
   }
 #if !CONFIG_PVQ
-  ENTROPY_CONTEXT *a = args->t_above + blk_col;
-  ENTROPY_CONTEXT *l = args->t_left + blk_row;
   PLANE_TYPE plane_type = get_plane_type(plane);
   TX_TYPE tx_type = get_tx_type(plane_type, xd, block, tx_size);
   const SCAN_ORDER *scan_order =
       get_scan(cm, tx_size, tx_type, is_inter_block(mbmi));
   this_rd_stats.rate = av1_cost_coeffs(cm, x, plane, block, tx_size, scan_order,
                                        a, l, args->use_fast_coef_costing);
+#else   // !CONFIG_PVQ
+  this_rd_stats.rate = x->rate;
+#endif  // !CONFIG_PVQ
+#else   // !CONFIG_LV_MAP
+  av1_search_txk_type(cpi, x, plane, block, blk_row, blk_col, plane_bsize,
+                      tx_size, a, l, args->use_fast_coef_costing,
+                      &this_rd_stats);
+#endif  // !CONFIG_LV_MAP
+
+#if !CONFIG_PVQ
 #if CONFIG_RD_DEBUG
   av1_update_txb_coeff_cost(&this_rd_stats, plane, tx_size, blk_row, blk_col,
                             this_rd_stats.rate);
 #endif  // CONFIG_RD_DEBUG
   av1_set_txb_context(x, plane, block, tx_size, a, l);
-#else   // !CONFIG_PVQ
-  this_rd_stats.rate = x->rate;
 #endif  // !CONFIG_PVQ
 
   rd1 = RDCOST(x->rdmult, x->rddiv, this_rd_stats.rate, this_rd_stats.dist);