rtc: Prune inter modes with reference frame as golden

As part of this CL, introduced a speed feature to prune
NEARMV and NEWMV modes evaluation for golden reference
frame based on temporal distance, blocksize and best
reference frame so far.

          Instruction Count      BD-Rate Loss(%)
cpu-used    Reduction(%)    avg.psnr    ovr.psnr    ssim
   5          1.651    	    -0.0010     -0.0022   -0.0437
   6          1.221          0.0518      0.0553    0.0636

STATS_CHANGED for rt speed 5 and 6

Change-Id: Iab89531e1672eda2a08ead3f5b6f458aa0f4470f
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index c346c92..a6c0cd6 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -4795,6 +4795,16 @@
       return 1;
   }
 
+  if (sf->rt_sf.prune_inter_modes_with_golden_ref &&
+      ref_frame == GOLDEN_FRAME && !comp_pred) {
+    const int subgop_size = AOMMIN(cpi->ppi->gf_group.size, FIXED_GF_INTERVAL);
+    if (cpi->rc.frames_since_golden > (subgop_size >> 2) &&
+        args->search_state->best_mbmode.ref_frame[0] != GOLDEN_FRAME) {
+      if ((bsize > BLOCK_16X16 && this_mode == NEWMV) || this_mode == NEARMV)
+        return 1;
+    }
+  }
+
   return 0;
 }
 
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index cd4a439..9199b62 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -1405,6 +1405,7 @@
     sf->rt_sf.skip_interp_filter_search = 1;
     sf->rt_sf.use_real_time_ref_set = 1;
     sf->rt_sf.use_simple_rd_model = 1;
+    sf->rt_sf.prune_inter_modes_with_golden_ref = boosted ? 0 : 1;
 
     sf->rt_sf.check_scene_detection = 1;
     if (cm->current_frame.frame_type != KEY_FRAME &&
@@ -1847,6 +1848,7 @@
   rt_sf->skip_tx_no_split_var_based_partition = 0;
   rt_sf->skip_newmv_mode_based_on_sse = 0;
   rt_sf->gf_length_lvl = 0;
+  rt_sf->prune_inter_modes_with_golden_ref = 0;
 }
 
 void av1_set_speed_features_framesize_dependent(AV1_COMP *cpi, int speed) {
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index 6202191..d8ea242 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -1317,6 +1317,9 @@
   // Define gf length multiplier.
   // Level 0: use large multiplier, level 1: use medium multiplier.
   int gf_length_lvl;
+
+  // Prune inter modes with golden frame as reference for NEARMV and NEWMV modes
+  int prune_inter_modes_with_golden_ref;
 } REAL_TIME_SPEED_FEATURES;
 
 /*!\endcond */