Use unified condition to decide the first frame in a sequence

BUG=aomedia:3079

Change-Id: I8e4dde1934c70b22b6b864e3b3fef2348d6148ba
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 3545864..5096493 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -3730,7 +3730,8 @@
   memcpy(&cpi->refresh_frame, &frame_params->refresh_frame,
          sizeof(cpi->refresh_frame));
 
-  if (current_frame->frame_type == KEY_FRAME && !cpi->no_show_fwd_kf) {
+  if (current_frame->frame_type == KEY_FRAME &&
+      cpi->ppi->gf_group.refbuf_state[cpi->gf_frame_index] == REFBUF_RESET) {
     current_frame->frame_number = 0;
   }
 
@@ -4215,6 +4216,15 @@
     av1_lookahead_pop(cpi->ppi->lookahead, flush, cpi->compressor_stage);
   }
 
+  if (ppi->level_params.keep_level_stats && !is_stat_generation_stage(cpi)) {
+    // Initialize level info. at the beginning of each sequence.
+    if (cm->current_frame.frame_type == KEY_FRAME &&
+        ppi->gf_group.refbuf_state[cpi->gf_frame_index] == REFBUF_RESET) {
+      av1_init_level_info(cpi);
+    }
+    av1_update_level_info(cpi, size, time_stamp, time_end);
+  }
+
   if (!is_stat_generation_stage(cpi)) {
 #if !CONFIG_REALTIME_ONLY
     if (!has_no_stats_stage(cpi)) av1_twopass_postencode_update(cpi);
@@ -4233,14 +4243,6 @@
     }
   }
 
-  if (ppi->level_params.keep_level_stats && !is_stat_generation_stage(cpi)) {
-    // Initialize level info. at the beginning of each sequence.
-    if (cm->current_frame.frame_type == KEY_FRAME && !cpi->no_show_fwd_kf) {
-      av1_init_level_info(cpi);
-    }
-    av1_update_level_info(cpi, size, time_stamp, time_end);
-  }
-
 #if CONFIG_INTERNAL_STATS
   if (!is_stat_generation_stage(cpi)) {
     compute_internal_stats(cpi, (int)size);