Make filter intra RD search support txk-sel

Store the selected tx type per transform block in the filter
intra RD search loop.

Change-Id: Icf6b5fe21e500fe31a3ccb5b5d460fd6230bb1dc
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index c42d249..45d7ba1 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2860,7 +2860,9 @@
   TX_SIZE best_tx_size = TX_8X8;
   FILTER_INTRA_MODE_INFO filter_intra_mode_info;
   TX_TYPE best_tx_type;
-
+#if CONFIG_TXK_SEL
+  TX_TYPE best_txk_type[MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)];
+#endif
   av1_zero(filter_intra_mode_info);
   mbmi->filter_intra_mode_info.use_filter_intra = 1;
   mbmi->mode = DC_PRED;
@@ -2888,6 +2890,11 @@
       best_tx_size = mic->mbmi.tx_size;
       filter_intra_mode_info = mbmi->filter_intra_mode_info;
       best_tx_type = mic->mbmi.tx_type;
+#if CONFIG_TXK_SEL
+      memcpy(best_txk_type, mbmi->txk_type,
+             sizeof(*best_txk_type) *
+                 (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
+#endif
       *rate = this_rate;
       *rate_tokenonly = tokenonly_rd_stats.rate;
       *distortion = tokenonly_rd_stats.dist;
@@ -2901,6 +2908,11 @@
     mbmi->tx_size = best_tx_size;
     mbmi->filter_intra_mode_info = filter_intra_mode_info;
     mbmi->tx_type = best_tx_type;
+#if CONFIG_TXK_SEL
+    memcpy(mbmi->txk_type, best_txk_type,
+           sizeof(*best_txk_type) *
+               (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
+#endif
     return 1;
   } else {
     return 0;
@@ -9402,6 +9414,12 @@
         int filter_intra_selected_flag = 0;
         TX_SIZE best_tx_size = mbmi->tx_size;
         TX_TYPE best_tx_type = mbmi->tx_type;
+#if CONFIG_TXK_SEL
+        TX_TYPE best_txk_type[MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)];
+        memcpy(best_txk_type, mbmi->txk_type,
+               sizeof(*best_txk_type) *
+                   (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
+#endif
         FILTER_INTRA_MODE best_fi_mode = FILTER_DC_PRED;
         int64_t best_rd_tmp = INT64_MAX;
         if (rate_y != INT_MAX &&
@@ -9430,6 +9448,11 @@
           if (this_rd_tmp < best_rd_tmp) {
             best_tx_size = mbmi->tx_size;
             best_tx_type = mbmi->tx_type;
+#if CONFIG_TXK_SEL
+            memcpy(best_txk_type, mbmi->txk_type,
+                   sizeof(*best_txk_type) *
+                       (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
+#endif
             best_fi_mode = fi_mode;
             rd_stats_y = rd_stats_y_fi;
             rate_y = rd_stats_y_fi.rate;
@@ -9442,6 +9465,11 @@
 
         mbmi->tx_size = best_tx_size;
         mbmi->tx_type = best_tx_type;
+#if CONFIG_TXK_SEL
+        memcpy(mbmi->txk_type, best_txk_type,
+               sizeof(*best_txk_type) *
+                   (MAX_SB_SQUARE / (TX_SIZE_W_MIN * TX_SIZE_H_MIN)));
+#endif
         if (filter_intra_selected_flag) {
           mbmi->filter_intra_mode_info.use_filter_intra = 1;
           mbmi->filter_intra_mode_info.filter_intra_mode = best_fi_mode;