Modify av1_read_tx_type for lv_map exp

Change-Id: I422dfd9d7afe9f7baa04a962e19c8a92d5c12eeb
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 20b6d3c..762371b 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -739,12 +739,15 @@
 }
 #endif  // CONFIG_EXT_INTRA
 
-static void read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd,
-                         MB_MODE_INFO *mbmi,
+void av1_read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd,
 #if CONFIG_SUPERTX
-                         int supertx_enabled,
+                      int supertx_enabled,
 #endif
-                         aom_reader *r) {
+#if CONFIG_LV_MAP
+                      int block,
+#endif
+                      aom_reader *r) {
+  MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
   const int inter_block = is_inter_block(mbmi);
 #if CONFIG_VAR_TX
   const TX_SIZE tx_size = inter_block ? mbmi->min_tx_size : mbmi->tx_size;
@@ -757,6 +760,12 @@
   FRAME_CONTEXT *ec_ctx = cm->fc;
 #endif
 
+#if !CONFIG_LV_MAP
+  TX_TYPE *tx_type = &mbmi->tx_type;
+#else
+  TX_TYPE *tx_type = &mbmi->txk_type[block];
+#endif
+
   if (!FIXED_TX_TYPE) {
 #if CONFIG_EXT_TX
     const TX_SIZE square_tx_size = txsize_sqr_map[tx_size];
@@ -776,36 +785,34 @@
       if (inter_block) {
         if (eset > 0) {
 #if CONFIG_EC_MULTISYMBOL
-          mbmi->tx_type = av1_ext_tx_inter_inv[eset][aom_read_symbol(
+          *tx_type = av1_ext_tx_inter_inv[eset][aom_read_symbol(
               r, ec_ctx->inter_ext_tx_cdf[eset][square_tx_size],
               ext_tx_cnt_inter[eset], ACCT_STR)];
 #else
-          mbmi->tx_type = aom_read_tree(
+          *tx_type = aom_read_tree(
               r, av1_ext_tx_inter_tree[eset],
               ec_ctx->inter_ext_tx_prob[eset][square_tx_size], ACCT_STR);
 #endif
-          if (counts)
-            ++counts->inter_ext_tx[eset][square_tx_size][mbmi->tx_type];
+          if (counts) ++counts->inter_ext_tx[eset][square_tx_size][*tx_type];
         }
       } else if (ALLOW_INTRA_EXT_TX) {
         if (eset > 0) {
 #if CONFIG_EC_MULTISYMBOL
-          mbmi->tx_type = av1_ext_tx_intra_inv[eset][aom_read_symbol(
+          *tx_type = av1_ext_tx_intra_inv[eset][aom_read_symbol(
               r, ec_ctx->intra_ext_tx_cdf[eset][square_tx_size][mbmi->mode],
               ext_tx_cnt_intra[eset], ACCT_STR)];
 #else
-          mbmi->tx_type = aom_read_tree(
+          *tx_type = aom_read_tree(
               r, av1_ext_tx_intra_tree[eset],
               ec_ctx->intra_ext_tx_prob[eset][square_tx_size][mbmi->mode],
               ACCT_STR);
 #endif
           if (counts)
-            ++counts->intra_ext_tx[eset][square_tx_size][mbmi->mode]
-                                  [mbmi->tx_type];
+            ++counts->intra_ext_tx[eset][square_tx_size][mbmi->mode][*tx_type];
         }
       }
     } else {
-      mbmi->tx_type = DCT_DCT;
+      *tx_type = DCT_DCT;
     }
 #else
 
@@ -821,28 +828,28 @@
 
       if (inter_block) {
 #if CONFIG_EC_MULTISYMBOL
-        mbmi->tx_type = av1_ext_tx_inv[aom_read_symbol(
+        *tx_type = av1_ext_tx_inv[aom_read_symbol(
             r, ec_ctx->inter_ext_tx_cdf[tx_size], TX_TYPES, ACCT_STR)];
 #else
-        mbmi->tx_type = aom_read_tree(
-            r, av1_ext_tx_tree, ec_ctx->inter_ext_tx_prob[tx_size], ACCT_STR);
+        *tx_type = aom_read_tree(r, av1_ext_tx_tree,
+                                 ec_ctx->inter_ext_tx_prob[tx_size], ACCT_STR);
 #endif
-        if (counts) ++counts->inter_ext_tx[tx_size][mbmi->tx_type];
+        if (counts) ++counts->inter_ext_tx[tx_size][*tx_type];
       } else {
         const TX_TYPE tx_type_nom = intra_mode_to_tx_type_context[mbmi->mode];
 #if CONFIG_EC_MULTISYMBOL
-        mbmi->tx_type = av1_ext_tx_inv[aom_read_symbol(
+        *tx_type = av1_ext_tx_inv[aom_read_symbol(
             r, ec_ctx->intra_ext_tx_cdf[tx_size][tx_type_nom], TX_TYPES,
             ACCT_STR)];
 #else
-        mbmi->tx_type = aom_read_tree(
+        *tx_type = aom_read_tree(
             r, av1_ext_tx_tree, ec_ctx->intra_ext_tx_prob[tx_size][tx_type_nom],
             ACCT_STR);
 #endif
-        if (counts) ++counts->intra_ext_tx[tx_size][tx_type_nom][mbmi->tx_type];
+        if (counts) ++counts->intra_ext_tx[tx_size][tx_type_nom][*tx_type];
       }
     } else {
-      mbmi->tx_type = DCT_DCT;
+      *tx_type = DCT_DCT;
     }
 #endif  // CONFIG_EXT_TX
   }
@@ -971,11 +978,13 @@
     read_filter_intra_mode_info(cm, xd, r);
 #endif  // CONFIG_FILTER_INTRA
 
-  read_tx_type(cm, xd, mbmi,
+#if !CONFIG_LV_MAP
+  av1_read_tx_type(cm, xd,
 #if CONFIG_SUPERTX
-               0,
+                   0,
 #endif
-               r);
+                   r);
+#endif  // !CONFIG_LV_MAP
 }
 
 static int read_mv_component(aom_reader *r, nmv_component *mvcomp, int usehp) {
@@ -2178,11 +2187,13 @@
   else
     read_intra_block_mode_info(cm, mi_row, mi_col, xd, mi, r);
 
-  read_tx_type(cm, xd, mbmi,
+#if !CONFIG_LV_MAP
+  av1_read_tx_type(cm, xd,
 #if CONFIG_SUPERTX
-               supertx_enabled,
+                   supertx_enabled,
 #endif
-               r);
+                   r);
+#endif  // !CONFIG_LV_MAP
 }
 
 void av1_read_mode_info(AV1Decoder *const pbi, MACROBLOCKD *xd,
diff --git a/av1/decoder/decodemv.h b/av1/decoder/decodemv.h
index e916262..0d751b2 100644
--- a/av1/decoder/decodemv.h
+++ b/av1/decoder/decodemv.h
@@ -32,4 +32,13 @@
 }  // extern "C"
 #endif
 
+void av1_read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd,
+#if CONFIG_SUPERTX
+                      int supertx_enabled,
+#endif
+#if CONFIG_LV_MAP
+                      int block,
+#endif
+                      aom_reader *r);
+
 #endif  // AV1_DECODER_DECODEMV_H_