Remove redundant memset in encode_sb_row

Redundant memsets of x->mbmi_ext and inter_txb_hash
related structures are removed.

          Encode time
 cpu-used             Reduction
    1                   0.57%
    2                   0.84%
    3                   1.48%
    4                   2.00%


Change-Id: Ief0f1dee1220e0ccaa5bb834f89ad47083ee6289
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 5ef2260..2974a7e 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4179,7 +4179,6 @@
   const int mib_size = cm->seq_params.mib_size;
   const int mib_size_log2 = cm->seq_params.mib_size_log2;
   const int sb_row = (mi_row - tile_info->mi_row_start) >> mib_size_log2;
-  int sb_mi_size = av1_get_sb_mi_size(cm);
 
 #if CONFIG_COLLECT_COMPONENT_TIMING
   start_timing(cpi, encode_sb_time);
@@ -4201,8 +4200,6 @@
   // Code each SB in the row
   for (int mi_col = tile_info->mi_col_start, sb_col_in_tile = 0;
        mi_col < tile_info->mi_col_end; mi_col += mib_size, sb_col_in_tile++) {
-    if (!cpi->sf.use_real_time_ref_set)
-      memset(x->mbmi_ext, 0, sb_mi_size * sizeof(*x->mbmi_ext));
     (*(cpi->row_mt_sync_read_ptr))(&tile_data->row_mt_sync, sb_row,
                                    sb_col_in_tile);
     if (tile_data->allow_update_cdf && (cpi->row_mt == 1) &&
@@ -4267,17 +4264,12 @@
         break;
       default: assert(0);
     }
-    x->mb_rd_record.num = x->mb_rd_record.index_start = 0;
     x->color_sensitivity[0] = 0;
     x->color_sensitivity[1] = 0;
 
-    if (cpi->sf.use_inter_txb_hash) {
-      av1_zero(x->txb_rd_record_8X8);
-      av1_zero(x->txb_rd_record_16X16);
-      av1_zero(x->txb_rd_record_32X32);
-      av1_zero(x->txb_rd_record_64X64);
-      av1_zero(x->txb_rd_record_intra);
-    }
+    // Reset hash state for transform/mode rd hash information
+    reset_hash_records(x, cpi->sf.use_inter_txb_hash);
+
     if (!use_nonrd_mode) {
       av1_zero(x->picked_ref_frames_mask);
       av1_zero(x->pred_mv);
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h
index b50af0f..4bb7aa9 100644
--- a/av1/encoder/rd.h
+++ b/av1/encoder/rd.h
@@ -283,26 +283,29 @@
 }
 
 // Used to reset the state of tx/mb rd hash information
-static INLINE void reset_hash_records(MACROBLOCK *const x) {
+static INLINE void reset_hash_records(MACROBLOCK *const x,
+                                      int use_inter_txb_hash) {
   int32_t record_idx;
 
   // Reset the state for use_inter_txb_hash
-  for (record_idx = 0; record_idx < ((MAX_MIB_SIZE >> 1) * (MAX_MIB_SIZE >> 1));
-       record_idx++)
-    x->txb_rd_record_8X8[record_idx].num =
-        x->txb_rd_record_8X8[record_idx].index_start = 0;
-  for (record_idx = 0; record_idx < ((MAX_MIB_SIZE >> 2) * (MAX_MIB_SIZE >> 2));
-       record_idx++)
-    x->txb_rd_record_16X16[record_idx].num =
-        x->txb_rd_record_16X16[record_idx].index_start = 0;
-  for (record_idx = 0; record_idx < ((MAX_MIB_SIZE >> 3) * (MAX_MIB_SIZE >> 3));
-       record_idx++)
-    x->txb_rd_record_32X32[record_idx].num =
-        x->txb_rd_record_32X32[record_idx].index_start = 0;
-  for (record_idx = 0; record_idx < ((MAX_MIB_SIZE >> 4) * (MAX_MIB_SIZE >> 4));
-       record_idx++)
-    x->txb_rd_record_64X64[record_idx].num =
-        x->txb_rd_record_64X64[record_idx].index_start = 0;
+  if (use_inter_txb_hash) {
+    for (record_idx = 0;
+         record_idx < ((MAX_MIB_SIZE >> 1) * (MAX_MIB_SIZE >> 1)); record_idx++)
+      x->txb_rd_record_8X8[record_idx].num =
+          x->txb_rd_record_8X8[record_idx].index_start = 0;
+    for (record_idx = 0;
+         record_idx < ((MAX_MIB_SIZE >> 2) * (MAX_MIB_SIZE >> 2)); record_idx++)
+      x->txb_rd_record_16X16[record_idx].num =
+          x->txb_rd_record_16X16[record_idx].index_start = 0;
+    for (record_idx = 0;
+         record_idx < ((MAX_MIB_SIZE >> 3) * (MAX_MIB_SIZE >> 3)); record_idx++)
+      x->txb_rd_record_32X32[record_idx].num =
+          x->txb_rd_record_32X32[record_idx].index_start = 0;
+    for (record_idx = 0;
+         record_idx < ((MAX_MIB_SIZE >> 4) * (MAX_MIB_SIZE >> 4)); record_idx++)
+      x->txb_rd_record_64X64[record_idx].num =
+          x->txb_rd_record_64X64[record_idx].index_start = 0;
+  }
 
   // Reset the state for use_intra_txb_hash
   x->txb_rd_record_intra.num = x->txb_rd_record_intra.index_start = 0;
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index b371c95..381432f 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -380,7 +380,7 @@
       // the decisions would have been sub-optimal
       // TODO(any): Move the evaluation of palette/IntraBC modes before winner
       // mode is processed and clean-up the code below
-      reset_hash_records(x);
+      reset_hash_records(x, cpi->sf.use_inter_txb_hash);
 
       break;
     default: assert(0);