return is_viable_kf;
}
+#define FRAMES_TO_CHECK_DECAY 8
+
static void find_next_key_frame(VP10_COMP *cpi, FIRSTPASS_STATS *this_frame) {
int i, j;
RATE_CONTROL *const rc = &cpi->rc;
double boost_score = 0.0;
double kf_mod_err = 0.0;
double kf_group_err = 0.0;
- double recent_loop_decay[8] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
+ double recent_loop_decay[FRAMES_TO_CHECK_DECAY];
vp10_zero(next_frame);
kf_mod_err = calculate_modified_err(cpi, twopass, oxcf, this_frame);
+ // Initialize the decay rates for the recent frames to check
+ for (j = 0; j < FRAMES_TO_CHECK_DECAY; ++j)
+ recent_loop_decay[j] = 1.0;
+
// Find the next keyframe.
i = 0;
while (twopass->stats_in < twopass->stats_in_end &&
// We want to know something about the recent past... rather than
// as used elsewhere where we are concerned with decay in prediction
// quality since the last GF or KF.
- recent_loop_decay[i % 8] = loop_decay_rate;
+ recent_loop_decay[i % FRAMES_TO_CHECK_DECAY] = loop_decay_rate;
decay_accumulator = 1.0;
- for (j = 0; j < 8; ++j)
+ for (j = 0; j < FRAMES_TO_CHECK_DECAY; ++j)
decay_accumulator *= recent_loop_decay[j];
// Special check for transition or high motion followed by a
return is_viable_kf;
}
+#define FRAMES_TO_CHECK_DECAY 8
+
static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
int i, j;
RATE_CONTROL *const rc = &cpi->rc;
double boost_score = 0.0;
double kf_mod_err = 0.0;
double kf_group_err = 0.0;
- double recent_loop_decay[8] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
+ double recent_loop_decay[FRAMES_TO_CHECK_DECAY];
vp9_zero(next_frame);
kf_mod_err = calculate_modified_err(cpi, twopass, oxcf, this_frame);
+ // Initialize the decay rates for the recent frames to check
+ for (j = 0; j < FRAMES_TO_CHECK_DECAY; ++j)
+ recent_loop_decay[j] = 1.0;
+
// Find the next keyframe.
i = 0;
while (twopass->stats_in < twopass->stats_in_end &&
// We want to know something about the recent past... rather than
// as used elsewhere where we are concerned with decay in prediction
// quality since the last GF or KF.
- recent_loop_decay[i % 8] = loop_decay_rate;
+ recent_loop_decay[i % FRAMES_TO_CHECK_DECAY] = loop_decay_rate;
decay_accumulator = 1.0;
- for (j = 0; j < 8; ++j)
+ for (j = 0; j < FRAMES_TO_CHECK_DECAY; ++j)
decay_accumulator *= recent_loop_decay[j];
// Special check for transition or high motion followed by a