Allocate MB_RD_RECORD conditionally

The structure MB_RD_RECORD is used to store a partition block's
inter-mode txfm result under use_mb_rd_hash sf. Hence this patch
allocates the memory related to MB_RD_RECORD based on the sf.

Change-Id: I05e80863d39225abdc177d2140563664c467c21f
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index d7a03c6..d3d9414 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -1025,7 +1025,8 @@
   if (cpi->allocated_tiles < tile_cols * tile_rows) av1_alloc_tile_data(cpi);
 
   av1_init_tile_data(cpi);
-  av1_alloc_mb_data(cm, mb, cpi->sf.rt_sf.use_nonrd_pick_mode);
+  av1_alloc_mb_data(cm, mb, cpi->sf.rt_sf.use_nonrd_pick_mode,
+                    cpi->sf.rd_sf.use_mb_rd_hash);
 
   for (tile_row = 0; tile_row < tile_rows; ++tile_row) {
     for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
diff --git a/av1/encoder/encodeframe_utils.h b/av1/encoder/encodeframe_utils.h
index 803b305..1da643b 100644
--- a/av1/encoder/encodeframe_utils.h
+++ b/av1/encoder/encodeframe_utils.h
@@ -426,10 +426,14 @@
 
 static AOM_INLINE void av1_alloc_mb_data(struct AV1Common *cm,
                                          struct macroblock *mb,
-                                         int use_nonrd_pick_mode) {
+                                         int use_nonrd_pick_mode,
+                                         int use_mb_rd_hash) {
   if (!use_nonrd_pick_mode) {
-    mb->txfm_search_info.mb_rd_record =
-        (MB_RD_RECORD *)aom_malloc(sizeof(MB_RD_RECORD));
+    // Memory for mb_rd_record is allocated only when use_mb_rd_hash sf is
+    // enabled.
+    if (use_mb_rd_hash)
+      mb->txfm_search_info.mb_rd_record =
+          (MB_RD_RECORD *)aom_malloc(sizeof(MB_RD_RECORD));
     if (!frame_is_intra_only(cm))
       CHECK_MEM_ERROR(
           cm, mb->inter_modes_info,
diff --git a/av1/encoder/ethread.c b/av1/encoder/ethread.c
index 2ebb770..016f8ac 100644
--- a/av1/encoder/ethread.c
+++ b/av1/encoder/ethread.c
@@ -1218,7 +1218,8 @@
       }
     }
     av1_alloc_mb_data(cm, &thread_data->td->mb,
-                      cpi->sf.rt_sf.use_nonrd_pick_mode);
+                      cpi->sf.rt_sf.use_nonrd_pick_mode,
+                      cpi->sf.rd_sf.use_mb_rd_hash);
 
     // Reset cyclic refresh counters.
     av1_init_cyclic_refresh_counters(&thread_data->td->mb);
@@ -1293,7 +1294,8 @@
     }
 
     av1_alloc_mb_data(cm, &thread_data->td->mb,
-                      cpi->sf.rt_sf.use_nonrd_pick_mode);
+                      cpi->sf.rt_sf.use_nonrd_pick_mode,
+                      cpi->sf.rd_sf.use_mb_rd_hash);
   }
 }
 #endif