Add flag to enable error resilience

This finalizes the fix for the ParseAbilityTest for
lag_in_frames > 0.

Change-Id: I5eba86dc9526f8496212090605690f538f3c5451
diff --git a/test/error_resilience_test.cc b/test/error_resilience_test.cc
index 693e017..bd3c31d 100644
--- a/test/error_resilience_test.cc
+++ b/test/error_resilience_test.cc
@@ -74,8 +74,9 @@
   virtual void PreEncodeFrameHook(libaom_test::VideoSource *video,
                                   libaom_test::Encoder *encoder) {
     if (video->frame() == 0) encoder->Control(AOME_SET_CPUUSED, kCpuUsed);
-    frame_flags_ &= ~(AOM_EFLAG_NO_UPD_LAST | AOM_EFLAG_NO_UPD_GF |
-                      AOM_EFLAG_NO_UPD_ARF | AOM_EFLAG_NO_REF_FRAME_MVS);
+    frame_flags_ &=
+        ~(AOM_EFLAG_NO_UPD_LAST | AOM_EFLAG_NO_UPD_GF | AOM_EFLAG_NO_UPD_ARF |
+          AOM_EFLAG_NO_REF_FRAME_MVS | AOM_EFLAG_ERROR_RESILIENT);
     if (droppable_nframes_ > 0 &&
         (cfg_.g_pass == AOM_RC_LAST_PASS || cfg_.g_pass == AOM_RC_ONE_PASS)) {
       for (unsigned int i = 0; i < droppable_nframes_; ++i) {
@@ -89,14 +90,13 @@
       }
     }
 
-    encoder->Control(AV1E_SET_ERROR_RESILIENT_MODE, 0);
     if (error_resilient_nframes_ > 0 &&
         (cfg_.g_pass == AOM_RC_LAST_PASS || cfg_.g_pass == AOM_RC_ONE_PASS)) {
       for (unsigned int i = 0; i < error_resilient_nframes_; ++i) {
         if (error_resilient_frames_[i] == video->frame()) {
           std::cout << "             Encoding error_resilient frame: "
                     << error_resilient_frames_[i] << "\n";
-          encoder->Control(AV1E_SET_ERROR_RESILIENT_MODE, 1);
+          frame_flags_ |= AOM_EFLAG_ERROR_RESILIENT;
           break;
         }
       }
@@ -302,9 +302,7 @@
 // subsequent frames from using MFMV. If frames are dropped before the
 // E frame, all frames starting from the E frame should be parse-able.
 TEST_P(ErrorResilienceTestLarge, ParseAbilityTest) {
-  // TODO(sarahparker, debargha): Make control setting work correctly for
-  // lag_in_frames > 0
-  SetupEncoder(500, 0);
+  SetupEncoder(500, 10);
 
   libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
                                      cfg_.g_timebase.den, cfg_.g_timebase.num,
@@ -334,7 +332,7 @@
   EXPECT_EQ(GetEncodedFrames() - GetDecodedFrames(), num_error_frames);
   // All frames following the E-frame and the E-frame are expected to have
   // mismatches, but still be parse-able.
-  EXPECT_EQ(GetMismatchFrames(), num_nomfmv_frames + 1);
+  EXPECT_LE(GetMismatchFrames(), num_nomfmv_frames + 1);
 }
 
 // Check for ParseAbility property of an S frame.