Fix issues in tx_size winner mode speed feature

Fixed issues in bitstream creation and encode_superblock() function when winner
mode speed feature 'enable_winner_mode_for_tx_size_srch' is enabled.

Change-Id: I5efdffc3a3d98dace7cf54b9b4af19c1a5a17790
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index ad1604d..31b4d27 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -516,7 +516,7 @@
           seg->update_map ? cpi->segmentation_map : cm->last_frame_seg_map;
       mi_addr->segment_id =
           map ? get_segment_id(cm, map, bsize, mi_row, mi_col) : 0;
-      reset_tx_size(x, mi_addr, cm->tx_mode);
+      reset_tx_size(x, mi_addr, x->tx_mode);
     }
     // Else for cyclic refresh mode update the segment map, set the segment id
     // and then update the quantizer.
@@ -5230,6 +5230,9 @@
     cm->delta_q_info.delta_q_present_flag = 0;
   }
 
+  // Set the transform size appropriately before bitstream creation
+  cm->tx_mode = get_eval_tx_mode(cpi, WINNER_MODE_EVAL);
+
   if (cpi->sf.tx_type_search.prune_tx_type_using_stats) {
     const FRAME_UPDATE_TYPE update_type = get_frame_update_type(&cpi->gf_group);
 
@@ -5536,6 +5539,9 @@
   const int mi_height = mi_size_high[bsize];
   const int is_inter = is_inter_block(mbmi);
 
+  // Initialize tx_mode and tx_size_search_method
+  set_tx_size_search_method(cpi, x, cpi->sf.enable_winner_mode_for_tx_size_srch,
+                            1);
   if (!is_inter) {
     xd->cfl.is_chroma_reference =
         is_chroma_reference(mi_row, mi_col, bsize, cm->seq_params.subsampling_x,
@@ -5620,7 +5626,7 @@
 
   if (!dry_run) {
     if (av1_allow_intrabc(cm) && is_intrabc_block(mbmi)) td->intrabc_used = 1;
-    if (cm->tx_mode == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id] &&
+    if (x->tx_mode == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id] &&
         mbmi->sb_type > BLOCK_4X4 && !(is_inter && (mbmi->skip || seg_skip))) {
       if (is_inter) {
         tx_partition_count_update(cm, x, bsize, mi_row, mi_col, td->counts,
@@ -5651,7 +5657,7 @@
         if (xd->lossless[mbmi->segment_id]) {
           intra_tx_size = TX_4X4;
         } else {
-          intra_tx_size = tx_size_from_tx_mode(bsize, cm->tx_mode);
+          intra_tx_size = tx_size_from_tx_mode(bsize, x->tx_mode);
         }
       } else {
         intra_tx_size = mbmi->tx_size;
@@ -5666,7 +5672,7 @@
     }
   }
 
-  if (cm->tx_mode == TX_MODE_SELECT && block_signals_txsize(mbmi->sb_type) &&
+  if (x->tx_mode == TX_MODE_SELECT && block_signals_txsize(mbmi->sb_type) &&
       is_inter && !(mbmi->skip || seg_skip) &&
       !xd->lossless[mbmi->segment_id]) {
     if (dry_run) tx_partition_set_contexts(cm, xd, bsize, mi_row, mi_col);
@@ -5677,7 +5683,7 @@
       if (xd->lossless[mbmi->segment_id]) {
         tx_size = TX_4X4;
       } else {
-        tx_size = tx_size_from_tx_mode(bsize, cm->tx_mode);
+        tx_size = tx_size_from_tx_mode(bsize, x->tx_mode);
       }
     } else {
       tx_size = (bsize > BLOCK_4X4) ? tx_size : TX_4X4;
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index 7d05019..090481e 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -229,7 +229,13 @@
 
 static INLINE TX_MODE get_eval_tx_mode(const AV1_COMP *cpi,
                                        MODE_EVAL_TYPE eval_type) {
-  return select_tx_mode(cpi, cpi->tx_size_search_methods[eval_type]);
+  TX_MODE tx_mode;
+  if (cpi->sf.enable_winner_mode_for_tx_size_srch)
+    tx_mode = select_tx_mode(cpi, cpi->tx_size_search_methods[eval_type]);
+  else
+    tx_mode = select_tx_mode(cpi, cpi->tx_size_search_methods[DEFAULT_EVAL]);
+
+  return tx_mode;
 }
 
 static INLINE void set_tx_size_search_method(