diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index ef8cb38..a82c2e2 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -1845,6 +1845,62 @@
   return av1_rc_clamp_iframe_target_size(cpi, target);
 }
 
+static void set_reference_structure_one_pass_rt(AV1_COMP *cpi) {
+  AV1_COMMON *const cm = &cpi->common;
+  // Specify the reference prediction structure, for 1 layer nonrd mode.
+  // Current structue is to use 3 references (LAST, GOLDEN, ALTREF),
+  // where ALT_REF always behind current by lag_alt frames, and GOLDEN is
+  // either updated on LAST with period baseline_gf_interval (fixed slot)
+  // or always behind current by lag_gld (gld_fixed_slot = 0, lag_gld <= 7).
+  const int gld_fixed_slot = 1;
+  const unsigned int lag_alt = 4;
+  int last_idx = 0;
+  int last_idx_refresh = 0;
+  int gld_idx = 0;
+  int alt_ref_idx = 0;
+  cpi->ext_refresh_frame_flags_pending = 1;
+  cpi->svc.external_ref_frame_config = 1;
+  cpi->ext_ref_frame_flags = 0;
+  cpi->ext_refresh_last_frame = 1;
+  cpi->ext_refresh_golden_frame = 0;
+  cpi->ext_refresh_alt_ref_frame = 0;
+  for (int i = 0; i < INTER_REFS_PER_FRAME; ++i) cpi->svc.ref_idx[i] = 7;
+  for (int i = 0; i < REF_FRAMES; ++i) cpi->svc.refresh[i] = 0;
+  // Always reference LAST, GOLDEN, ALTREF
+  cpi->ext_ref_frame_flags ^= AOM_LAST_FLAG;
+  cpi->ext_ref_frame_flags ^= AOM_GOLD_FLAG;
+  cpi->ext_ref_frame_flags ^= AOM_ALT_FLAG;
+  const int sh = 7 - gld_fixed_slot;
+  // Moving index slot for last: 0 - (sh - 1).
+  if (cm->current_frame.frame_number > 1)
+    last_idx = ((cm->current_frame.frame_number - 1) % sh);
+  // Moving index for refresh of last: one ahead for next frame.
+  last_idx_refresh = (cm->current_frame.frame_number % sh);
+  gld_idx = 6;
+  if (!gld_fixed_slot) {
+    gld_idx = 7;
+    const unsigned int lag_gld = 7;  // Must be <= 7.
+    // Moving index for gld_ref, lag behind current by gld_interval frames.
+    if (cm->current_frame.frame_number > lag_gld)
+      gld_idx = ((cm->current_frame.frame_number - lag_gld) % sh);
+  }
+  // Moving index for alt_ref, lag behind LAST by lag_alt frames.
+  if (cm->current_frame.frame_number > lag_alt)
+    alt_ref_idx = ((cm->current_frame.frame_number - lag_alt) % sh);
+  cpi->svc.ref_idx[0] = last_idx;          // LAST
+  cpi->svc.ref_idx[1] = last_idx_refresh;  // LAST2 (for refresh of last).
+  cpi->svc.ref_idx[3] = gld_idx;           // GOLDEN
+  cpi->svc.ref_idx[6] = alt_ref_idx;       // ALT_REF
+  // Refresh this slot, which will become LAST on next frame.
+  cpi->svc.refresh[last_idx_refresh] = 1;
+  // Update GOLDEN on period for fixed slot case.
+  if (gld_fixed_slot &&
+      cpi->rc.frames_till_gf_update_due == cpi->rc.baseline_gf_interval) {
+    cpi->ext_refresh_golden_frame = 1;
+    cpi->svc.refresh[gld_idx] = 1;
+  }
+}
+
 #define DEFAULT_KF_BOOST_RT 2300
 #define DEFAULT_GF_BOOST_RT 2000
 
@@ -1855,6 +1911,9 @@
   AV1_COMMON *const cm = &cpi->common;
   GF_GROUP *const gf_group = &cpi->gf_group;
   int target;
+  // Turn this on to explicitly set the reference structure rather than
+  // relying on internal/default structure.
+  const int set_reference_structure = 0;
   if (cpi->use_svc) {
     av1_update_temporal_layer_framerate(cpi);
     av1_restore_layer_context(cpi);
@@ -1929,4 +1988,8 @@
   }
   av1_rc_set_frame_target(cpi, target, cm->width, cm->height);
   rc->base_frame_target = target;
+  // For 1 layer nonrd allow option to set reference structure.
+  if (set_reference_structure && cpi->sf.use_nonrd_pick_mode &&
+      cm->number_spatial_layers == 1 && cm->number_temporal_layers == 1)
+    set_reference_structure_one_pass_rt(cpi);
 }
diff --git a/test/rt_end_to_end_test.cc b/test/rt_end_to_end_test.cc
index eca47c7..8edaf18 100644
--- a/test/rt_end_to_end_test.cc
+++ b/test/rt_end_to_end_test.cc
@@ -33,7 +33,7 @@
     kPsnrThreshold = { { "park_joy_90p_8_420.y4m",
                          { { 6, { { 0, 35.4 }, { 3, 36.3 } } },
                            { 7, { { 0, 34.9 }, { 3, 35.8 } } },
-                           { 8, { { 0, 35.0 }, { 3, 36.0 } } } } },
+                           { 8, { { 0, 35.0 }, { 3, 35.8 } } } } },
                        { "paris_352_288_30.y4m",
                          { { 6, { { 0, 36.3 }, { 3, 36.7 } } },
                            { 7, { { 0, 35.5 }, { 3, 36.0 } } },
