Fix pruning of reference frames in global motion search

For frames of type ARF/GF/KF update, reference frames
are not pruned as per 'selective_ref_frame' speed feature
during encoder mode decision. Thus, for such frames,
reference frames should not pruned in global motion search.

STATS_CHANGED

Change-Id: Id5d6a89f82e3379400b0468421cf96fe5329546f
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 2cc96f3..36912d0 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -3093,9 +3093,9 @@
 
 static INLINE int is_frame_eligible_for_ref_pruning(const GF_GROUP *gf_group,
                                                     int selective_ref_frame,
-                                                    int prune_ref_frames_in_tpl,
+                                                    int prune_ref_frames,
                                                     int gf_index) {
-  return (selective_ref_frame > 0) && (prune_ref_frames_in_tpl > 0) &&
+  return (selective_ref_frame > 0) && (prune_ref_frames > 0) &&
          !is_frame_tpl_eligible(gf_group, gf_index);
 }
 
diff --git a/av1/encoder/global_motion_facade.c b/av1/encoder/global_motion_facade.c
index 466f239..a502ed0 100644
--- a/av1/encoder/global_motion_facade.c
+++ b/av1/encoder/global_motion_facade.c
@@ -305,6 +305,10 @@
   const OrderHintInfo *const order_hint_info = &cm->seq_params.order_hint_info;
   int *num_past_ref_frames = &num_ref_frames[0];
   int *num_future_ref_frames = &num_ref_frames[1];
+  const GF_GROUP *gf_group = &cpi->gf_group;
+  int ref_pruning_enabled = is_frame_eligible_for_ref_pruning(
+      gf_group, cpi->sf.inter_sf.selective_ref_frame, 1, gf_group->index);
+
   for (int frame = ALTREF_FRAME; frame >= LAST_FRAME; --frame) {
     const MV_REFERENCE_FRAME ref_frame[2] = { frame, NONE_FRAME };
     RefCntBuffer *buf = get_ref_frame_buf(cm, frame);
@@ -321,11 +325,14 @@
       ref_buf[frame] = &buf->buf;
     }
 
+    int prune_ref_frames =
+        ref_pruning_enabled &&
+        prune_ref_by_selective_ref_frame(cpi, NULL, ref_frame,
+                                         cm->cur_frame->ref_display_order_hint);
+
     if (ref_buf[frame]->y_crop_width == cpi->source->y_crop_width &&
         ref_buf[frame]->y_crop_height == cpi->source->y_crop_height &&
-        do_gm_search_logic(&cpi->sf, frame) &&
-        !prune_ref_by_selective_ref_frame(
-            cpi, NULL, ref_frame, cm->cur_frame->ref_display_order_hint) &&
+        do_gm_search_logic(&cpi->sf, frame) && !prune_ref_frames &&
         !(cpi->sf.gm_sf.selective_ref_gm && skip_gm_frame(cm, frame))) {
       assert(ref_buf[frame] != NULL);
       int relative_frame_dist = av1_encoder_get_relative_dist(