rtc: Fix to non_last reference in nonrd_pickmode

For nonrd_pickmode (speed >= 7):
-avoid skip testing non_last reference if LAST
is not used as a reference
-only do the fast int_pro motion estimation for
non_last reference if LAST is used as a reference.

This improves the quality for LTR case, as in this issue
from av1_discuss:
https://groups.google.com/a/aomedia.org/g/av1-discuss/c/sqFad980SsA
Follow-up will be done to further improve quality.

No change in rtc test stats as LAST is always used as a
reference there.

Change-Id: Ic20d202b512cd903e9b47a389a905f75f933e8ec
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index a39fab4..3f143bd 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -314,7 +314,7 @@
   int_mv *this_ref_frm_newmv = &frame_mv[NEWMV][ref_frame];
   unsigned int y_sad_zero;
   if (ref_frame > LAST_FRAME && cpi->oxcf.rc_cfg.mode == AOM_CBR &&
-      gf_temporal_ref) {
+      (cpi->ref_frame_flags & AOM_LAST_FLAG) && gf_temporal_ref) {
     int tmp_sad;
     int dis;
 
@@ -2466,6 +2466,11 @@
   // Skip the mode if use reference frame mask flag is not set.
   if (!search_state->use_ref_frame_mask[*ref_frame]) return true;
 
+  // Don't skip non_last references if LAST is not used a reference.
+  if (!(cpi->ref_frame_flags & AOM_LAST_FLAG) &&
+      (*ref_frame == GOLDEN_FRAME || *ref_frame == ALTREF_FRAME))
+    return false;
+
   // Skip mode for some modes and reference frames when
   // force_zeromv_skip_for_blk flag is true.
   if (x->force_zeromv_skip_for_blk &&