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);