Abstract gf_state to AV1_PRIMARY
Moved gf_state from cpi to ppi.
Change-Id: Ib8d0dddd5a183bda7ac3ba0f9b2fa47ee57c0fea
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 36b0ac3..bf51e2d 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -2096,6 +2096,11 @@
* Information related to a gf group.
*/
GF_GROUP gf_group;
+
+ /*!
+ * Track prior gf group state.
+ */
+ GF_STATE gf_state;
} AV1_PRIMARY;
/*!
@@ -2366,11 +2371,6 @@
unsigned char gf_frame_index;
/*!
- * Track prior gf group state.
- */
- GF_STATE gf_state;
-
- /*!
* To control the reference frame buffer and selection.
*/
RefBufferStack ref_buffer_stack;
diff --git a/av1/encoder/gop_structure.c b/av1/encoder/gop_structure.c
index 42ff79a..d4fa1fe 100644
--- a/av1/encoder/gop_structure.c
+++ b/av1/encoder/gop_structure.c
@@ -194,11 +194,11 @@
FRAME_INFO *const frame_info = &cpi->frame_info;
const int key_frame = rc->frames_since_key == 0;
const FRAME_UPDATE_TYPE first_frame_update_type =
- key_frame
- ? KF_UPDATE
- : cpi->gf_state.arf_gf_boost_lst || (rc->baseline_gf_interval == 1)
- ? OVERLAY_UPDATE
- : GF_UPDATE;
+ key_frame ? KF_UPDATE
+ : cpi->ppi->gf_state.arf_gf_boost_lst ||
+ (rc->baseline_gf_interval == 1)
+ ? OVERLAY_UPDATE
+ : GF_UPDATE;
gf_group->size = construct_multi_layer_gf_structure(
cpi, twopass, gf_group, rc, frame_info, rc->baseline_gf_interval - 1,
first_frame_update_type);
diff --git a/av1/encoder/pass2_strategy.c b/av1/encoder/pass2_strategy.c
index 3752c42..30f1945 100644
--- a/av1/encoder/pass2_strategy.c
+++ b/av1/encoder/pass2_strategy.c
@@ -1953,7 +1953,7 @@
max_intervals = cpi->lap_enabled ? 1 : max_intervals;
int count_cuts = 1;
// If cpi->gf_state.arf_gf_boost_lst is 0, we are starting with a KF or GF.
- int cur_start = -1 + !cpi->gf_state.arf_gf_boost_lst, cur_last;
+ int cur_start = -1 + !cpi->ppi->gf_state.arf_gf_boost_lst, cur_last;
int cut_pos[MAX_NUM_GF_INTERVALS + 1] = { -1 };
int cut_here;
GF_GROUP_STATS gf_stats;
@@ -2633,7 +2633,7 @@
// TODO(jingning): Generalize this condition.
if (is_final_pass) {
- cpi->gf_state.arf_gf_boost_lst = use_alt_ref;
+ cpi->ppi->gf_state.arf_gf_boost_lst = use_alt_ref;
// Reset rolling actual and target bits counters for ARF groups.
twopass->rolling_arf_group_target_bits = 1;
@@ -3662,7 +3662,7 @@
rc->frames_since_key == 0) {
// If we start from a scenecut, then the last GOP's arf boost is not
// needed for this GOP.
- cpi->gf_state.arf_gf_boost_lst = 0;
+ cpi->ppi->gf_state.arf_gf_boost_lst = 0;
}
// TODO(jingning): Resoleve the redundant calls here.