Use table lookup for computing base ctx

This will speed up lv_map by 4.3%

Change-Id: I886f67b9f1ae2e5f567e114fa34cf3ba437b8381
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index e7661e6..5f2e3d5 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -448,6 +448,8 @@
   const int bwl = txb_info->bwl;
   const int height = txb_info->height;
   tran_low_t *qcoeff = txb_info->qcoeff;
+  const BASE_CTX_TABLE *base_ctx_table =
+      txb_info->coeff_ctx_table->base_ctx_table;
   for (int c = 0; c < txb_info->eob; ++c) {
     const int coeff_idx = scan[c];  // raster order
     const int row = coeff_idx >> bwl;
@@ -469,7 +471,7 @@
       txb_cache->base_count_arr[i][coeff_idx] = count[i];
       const int level = i + 1;
       txb_cache->base_ctx_arr[i][coeff_idx] =
-          get_base_ctx_from_count_mag(row, col, count[i], base_mag[0], level);
+          base_ctx_table[row != 0][col != 0][base_mag[0] > level][count[i]];
     }
 
     // gen_br_count_mag_arr
@@ -609,6 +611,8 @@
                                         const TxbInfo *txb_info) {
   const tran_low_t qc = txb_info->qcoeff[coeff_idx];
   const tran_low_t abs_qc = abs(qc);
+  const BASE_CTX_TABLE *base_ctx_table =
+      txb_info->coeff_ctx_table->base_ctx_table;
 
   int cost_diff = 0;
   for (int base_idx = 0; base_idx < NUM_BASE_LEVELS; ++base_idx) {
@@ -633,7 +637,7 @@
           abs_qc, ctx, txb_costs->base_cost[base_idx][ctx], base_idx);
 
       const int new_ctx =
-          get_base_ctx_from_count_mag(row, col, new_count, new_mag, level);
+          base_ctx_table[row != 0][col != 0][new_mag > level][new_count];
       const int new_cost = get_base_cost(
           abs_qc, new_ctx, txb_costs->base_cost[base_idx][new_ctx], base_idx);
       cost_diff += -org_cost + new_cost;
@@ -977,6 +981,8 @@
     }
   }
 
+  const BASE_CTX_TABLE *base_ctx_table =
+      txb_info->coeff_ctx_table->base_ctx_table;
   for (int i = 0; i < BASE_CONTEXT_POSITION_NUM; ++i) {
     const int nb_row = row - base_ref_offset[i][0];
     const int nb_col = col - base_ref_offset[i][1];
@@ -1003,7 +1009,7 @@
         }
         const int count = txb_cache->base_count_arr[base_idx][nb_coeff_idx];
         txb_cache->base_ctx_arr[base_idx][nb_coeff_idx] =
-            get_base_ctx_from_count_mag(nb_row, nb_col, count, mag, level);
+            base_ctx_table[nb_row != 0][nb_col != 0][mag > level][count];
         // int ref_ctx = get_base_ctx(txb_info->qcoeff, nb_coeff_idx,
         // txb_info->bwl, level);
         // if (ref_ctx != txb_cache->base_ctx_arr[base_idx][nb_coeff_idx]) {
@@ -1410,9 +1416,10 @@
   const int64_t rdmult =
       (x->rdmult * plane_rd_mult[is_inter][plane_type] + 2) >> 2;
 
-  TxbInfo txb_info = { qcoeff,  dqcoeff, tcoeff,     dequant, shift,
-                       tx_size, txs_ctx, bwl,        stride,  height,
-                       eob,     seg_eob, scan_order, txb_ctx, rdmult };
+  TxbInfo txb_info = { qcoeff,     dqcoeff, tcoeff,  dequant,
+                       shift,      tx_size, txs_ctx, bwl,
+                       stride,     height,  eob,     seg_eob,
+                       scan_order, txb_ctx, rdmult,  &cm->coeff_ctx_table };
 
   TxbCache txb_cache;
   gen_txb_cache(&txb_cache, &txb_info);