Commit 086ae992 authored by Adrian Grange's avatar Adrian Grange Committed by Gerrit Code Review
Browse files

Fixed handling of regularly placed keyframes

The encoder was not handling requests to place keyframes at
fixed intervals, i.e. kf_min_dist == kf_max_dist, correctly.

In this case when looking to place the next keyframe it was
accumulating stats all the way up to the end of the firstpass
file. This patch corrects this behavior.

Change-Id: I948ad9f1d7faa0c05861df588136cce3bb61d7e7
parent dddc3c69
......@@ -1935,7 +1935,8 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
// Find the next keyframe.
i = 0;
while (twopass->stats_in < twopass->stats_in_end) {
while (twopass->stats_in < twopass->stats_in_end &&
rc->frames_to_key < cpi->key_frame_frequency) {
// Accumulate kf group error.
kf_group_err += calculate_modified_err(cpi, this_frame);
......@@ -2003,7 +2004,8 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
input_stats(twopass, &tmp_frame);
}
rc->next_key_frame_forced = 1;
} else if (twopass->stats_in == twopass->stats_in_end) {
} else if (twopass->stats_in == twopass->stats_in_end ||
rc->frames_to_key >= cpi->key_frame_frequency) {
rc->next_key_frame_forced = 1;
} else {
rc->next_key_frame_forced = 0;
......
......@@ -185,7 +185,7 @@ static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx,
ERROR("ts_rate_decimator factors are not powers of 2");
}
// VP8 does not support a lower bound on the keyframe interval in
// VP9 does not support a lower bound on the keyframe interval in
// automatic keyframe placement mode.
if (cfg->kf_mode != VPX_KF_DISABLED &&
cfg->kf_min_dist != cfg->kf_max_dist &&
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment