Add txk_sel exp

This will separate the transform kernel selection from lv_map
experiment such that we can evaluate each feature's performance
separately

Note that txk_sel is build on top of lv_map

Change-Id: I5bd1ea99be30000efcdc2bcd42de002b78b1c3c8
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 7b2f4c4..cd5c50f 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1423,7 +1423,7 @@
 #if CONFIG_SUPERTX
                        const int supertx_enabled,
 #endif
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
                        int block, int plane,
 #endif
                        aom_writer *w) {
@@ -1440,7 +1440,7 @@
   FRAME_CONTEXT *ec_ctx = cm->fc;
 #endif
 
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   TX_TYPE tx_type = mbmi->tx_type;
 #else
   // Only y plane's tx_type is transmitted
@@ -1939,13 +1939,13 @@
 #endif  // CONFIG_DUAL_FILTE || CONFIG_WARPED_MOTION
   }
 
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   av1_write_tx_type(cm, xd,
 #if CONFIG_SUPERTX
                     supertx_enabled,
 #endif
                     w);
-#endif  // !CONFIG_LV_MAP
+#endif  // !CONFIG_TXK_SEL
 }
 
 #if CONFIG_DELTA_Q
@@ -2046,13 +2046,13 @@
     write_filter_intra_mode_info(cm, mbmi, w);
 #endif  // CONFIG_FILTER_INTRA
 
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   av1_write_tx_type(cm, xd,
 #if CONFIG_SUPERTX
                     0,
 #endif
                     w);
-#endif  // !CONFIG_LV_MAP
+#endif  // !CONFIG_TXK_SEL
 }
 
 #if CONFIG_SUPERTX
diff --git a/av1/encoder/bitstream.h b/av1/encoder/bitstream.h
index f2ab301..c75d808 100644
--- a/av1/encoder/bitstream.h
+++ b/av1/encoder/bitstream.h
@@ -41,7 +41,7 @@
 #if CONFIG_SUPERTX
                        const int supertx_enabled,
 #endif
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
                        int block, int plane,
 #endif
                        aom_writer *w);
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 8b77a83..a7f9d03 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5759,14 +5759,14 @@
 #endif
 
 void av1_update_tx_type_count(const AV1_COMMON *cm, MACROBLOCKD *xd,
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
                               int block, int plane,
 #endif
                               BLOCK_SIZE bsize, TX_SIZE tx_size,
                               FRAME_COUNTS *counts) {
   MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
   int is_inter = is_inter_block(mbmi);
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   TX_TYPE tx_type = mbmi->tx_type;
 #else
   // Only y plane's tx_type is updated
@@ -6017,7 +6017,7 @@
     ++td->counts->tx_size_totals[txsize_sqr_map[tx_size]];
     ++td->counts
           ->tx_size_totals[txsize_sqr_map[get_uv_tx_size(mbmi, &xd->plane[1])]];
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
     av1_update_tx_type_count(cm, xd, bsize, tx_size, td->counts);
 #endif
   }
diff --git a/av1/encoder/encodeframe.h b/av1/encoder/encodeframe.h
index ad3213e..08d6d20 100644
--- a/av1/encoder/encodeframe.h
+++ b/av1/encoder/encodeframe.h
@@ -45,7 +45,7 @@
 void av1_set_variance_partition_thresholds(struct AV1_COMP *cpi, int q);
 
 void av1_update_tx_type_count(const struct AV1Common *cm, MACROBLOCKD *xd,
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
                               int block, int plane,
 #endif
                               BLOCK_SIZE bsize, TX_SIZE tx_size,
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 9e4789c..5f136b3 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -90,7 +90,9 @@
   aom_write(w, eob == 0, cm->fc->txb_skip[tx_size][txb_ctx->txb_skip_ctx]);
 
   if (eob == 0) return;
+#if CONFIG_TXK_SEL
   av1_write_tx_type(cm, xd, block, plane, w);
+#endif
 
   nz_map = cm->fc->nz_map[tx_size][plane_type];
   eob_flag = cm->fc->eob_flag[tx_size][plane_type];
@@ -285,7 +287,9 @@
 
   cost = av1_cost_bit(xd->fc->txb_skip[tx_size][txb_skip_ctx], 0);
 
+#if CONFIG_TXK_SEL
   cost += av1_tx_type_cost(cpi, xd, mbmi->sb_type, plane, tx_size, tx_type);
+#endif
 
   for (c = 0; c < eob; ++c) {
     tran_low_t v = qcoeff[scan[c]];
@@ -459,8 +463,10 @@
     return;
   }
 
+#if CONFIG_TXK_SEL
   av1_update_tx_type_count(cm, xd, block, plane, mbmi->sb_type, tx_size,
                            td->counts);
+#endif
 
   for (c = 0; c < eob; ++c) {
     tran_low_t v = qcoeff[scan[c]];
@@ -715,6 +721,7 @@
     write_txb_probs(w, cpi, tx_size);
 }
 
+#if CONFIG_TXK_SEL
 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,
@@ -766,3 +773,4 @@
                                      best_eob);
   return best_rd;
 }
+#endif  // CONFIG_TXK_SEL
diff --git a/av1/encoder/encodetxb.h b/av1/encoder/encodetxb.h
index ca9a94e..552d47b 100644
--- a/av1/encoder/encodetxb.h
+++ b/av1/encoder/encodetxb.h
@@ -39,11 +39,13 @@
                             const int mi_row, const int mi_col);
 void av1_write_txb_probs(AV1_COMP *cpi, aom_writer *w);
 
+#if CONFIG_TXK_SEL
 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,
                             const ENTROPY_CONTEXT *a, const ENTROPY_CONTEXT *l,
                             int use_fast_coef_costing, RD_STATS *rd_stats);
+#endif
 #ifdef __cplusplus
 }
 #endif
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 03fbeac..09f890b 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1547,7 +1547,7 @@
   const AV1_COMP *cpi = args->cpi;
   ENTROPY_CONTEXT *a = args->t_above + blk_col;
   ENTROPY_CONTEXT *l = args->t_left + blk_row;
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   const AV1_COMMON *cm = &cpi->common;
 #endif
   int64_t rd1, rd2, rd;
@@ -1564,7 +1564,7 @@
     av1_subtract_txb(x, plane, plane_bsize, blk_col, blk_row, tx_size);
   }
 
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   // 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,
@@ -1600,11 +1600,11 @@
 #else   // !CONFIG_PVQ
   this_rd_stats.rate = x->rate;
 #endif  // !CONFIG_PVQ
-#else   // !CONFIG_LV_MAP
+#else   // !CONFIG_TXK_SEL
   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
+#endif  // !CONFIG_TXK_SEL
 
 #if !CONFIG_PVQ
 #if CONFIG_RD_DEBUG
@@ -1897,7 +1897,7 @@
   txfm_rd_in_plane(x, cpi, rd_stats, ref_best_rd, 0, bs, tx_size,
                    cpi->sf.use_fast_coef_costing);
   if (rd_stats->rate == INT_MAX) return INT64_MAX;
-#if !CONFIG_LV_MAP
+#if !CONFIG_TXK_SEL
   int plane = 0;
   rd_stats->rate += av1_tx_type_cost(cpi, xd, bs, plane, tx_size, tx_type);
 #endif
@@ -2168,12 +2168,12 @@
                    cpi->sf.use_fast_coef_costing);
 }
 
-#if CONFIG_LV_MAP || CONFIG_VAR_TX
+#if CONFIG_TXK_SEL || CONFIG_VAR_TX
 static INLINE int bsize_to_num_blk(BLOCK_SIZE bsize) {
   int num_blk = 1 << (num_pels_log2_lookup[bsize] - 2 * tx_size_wide_log2[0]);
   return num_blk;
 }
-#endif  // CONFIG_LV_MAP || CONFIG_VAR_TX
+#endif  // CONFIG_TXK_SEL || CONFIG_VAR_TX
 
 static void choose_tx_size_type_from_rd(const AV1_COMP *const cpi,
                                         MACROBLOCK *x, RD_STATS *rd_stats,
@@ -2188,10 +2188,10 @@
   const TX_SIZE max_tx_size = max_txsize_lookup[bs];
   TX_SIZE best_tx_size = max_tx_size;
   TX_TYPE best_tx_type = DCT_DCT;
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
   TX_TYPE best_txk_type[MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)];
   const int num_blk = bsize_to_num_blk(bs);
-#endif  // !CONFIG_LV_MAP
+#endif  // CONFIG_TXK_SEL
   const int tx_select = cm->tx_mode == TX_MODE_SELECT;
   const int is_inter = is_inter_block(mbmi);
 #if CONFIG_PVQ
@@ -2214,7 +2214,7 @@
   if (evaluate_rect_tx) {
     TX_TYPE tx_start = DCT_DCT;
     TX_TYPE tx_end = TX_TYPES;
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
     // The tx_type becomes dummy when lv_map is on. The tx_type search will be
     // performed in av1_search_txk_type()
     tx_end = DCT_DCT + 1;
@@ -2233,7 +2233,7 @@
         rd = txfm_yrd(cpi, x, &this_rd_stats, ref_best_rd, bs, tx_type,
                       rect_tx_size);
         if (rd < best_rd) {
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
           memcpy(best_txk_type, mbmi->txk_type,
                  sizeof(best_txk_type[0]) * num_blk);
 #endif
@@ -2268,7 +2268,7 @@
 #endif  // CONFIG_EXT_TX && CONFIG_RECT_TX
     TX_TYPE tx_start = DCT_DCT;
     TX_TYPE tx_end = TX_TYPES;
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
     // The tx_type becomes dummy when lv_map is on. The tx_type search will be
     // performed in av1_search_txk_type()
     tx_end = DCT_DCT + 1;
@@ -2290,7 +2290,7 @@
 
       last_rd = rd;
       if (rd < best_rd) {
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
         memcpy(best_txk_type, mbmi->txk_type,
                sizeof(best_txk_type[0]) * num_blk);
 #endif
@@ -2307,7 +2307,7 @@
   }
   mbmi->tx_size = best_tx_size;
   mbmi->tx_type = best_tx_type;
-#if CONFIG_LV_MAP
+#if CONFIG_TXK_SEL
   memcpy(mbmi->txk_type, best_txk_type, sizeof(best_txk_type[0]) * num_blk);
 #endif