Update frame_context_idx for intra_only/e-frames

Currently, the intra_only/error resilient frame will reuse the
frame_context_idx from the frame coded  before it. If the frame
coded before it is an altref frame, the reused frame_context_idx
will point to the ARF_FRAME slot even if cpi->refresh_alt_ref_frame != 1.
This can lead to an uninitialized entropy context for the frame after
the intra_only/error resilient frame.

Change-Id: Idece65a9e21e6606c1028b232cc21bf95e503f39
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index ac5b245..46ef2c6 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -282,6 +282,7 @@
     }
     cm->fb_of_context_type[REGULAR_FRAME] =
         get_ref_frame_map_idx(cpi, GOLDEN_FRAME);
+    cm->frame_context_idx = REGULAR_FRAME;
   } else if (!cm->large_scale_tile) {
     // for large scale tile we leave the default PRIMARY_REF_NONE
     const GF_GROUP *gf_group = &cpi->twopass.gf_group;
diff --git a/test/error_resilience_test.cc b/test/error_resilience_test.cc
index 8209a21..55c3b9a 100644
--- a/test/error_resilience_test.cc
+++ b/test/error_resilience_test.cc
@@ -371,24 +371,21 @@
   // frame. Currently, this will cause an assertion failure.
   // Set an arbitrary error resilient (E) frame
   unsigned int num_error_resilient_frames = 1;
-  unsigned int error_resilient_frame_list[] = { 8 };
+  unsigned int error_resilient_frame_list[] = { 7 };
   SetErrorResilientFrames(num_error_resilient_frames,
                           error_resilient_frame_list);
   // Ensure that any invisible frames before the E frame are dropped
   SetInvisibleErrorFrames(num_error_resilient_frames,
                           error_resilient_frame_list);
-  // Set all frames after the error resilient frame to not allow MFMV and to
-  // use PRIMARY_REF_NONE for their primary_ref_frame.
-  unsigned int num_post_error_resilient_frames = 6;
-  unsigned int post_error_resilient_frame_list[] = { 9, 10, 11, 12, 13, 14 };
+  // Set all frames after the error resilient frame to not allow MFMV
+  unsigned int num_post_error_resilient_frames = 7;
+  unsigned int post_error_resilient_frame_list[] = { 8, 9, 10, 11, 12, 13, 14 };
   SetNoMFMVFrames(num_post_error_resilient_frames,
                   post_error_resilient_frame_list);
-  // SetPrimaryRefNoneFrames(num_post_error_resilient_frames,
-  //                         post_error_resilient_frame_list);
 
   // Set a few frames before the E frame that are lost (not decoded)
-  unsigned int num_error_frames = 5;
-  unsigned int error_frame_list[] = { 3, 4, 5, 6, 7 };
+  unsigned int num_error_frames = 4;
+  unsigned int error_frame_list[] = { 3, 4, 5, 6 };
   SetErrorFrames(num_error_frames, error_frame_list);
 
   ASSERT_NO_FATAL_FAILURE(RunLoop(&video));