diff options
author | Marco Paniconi <marpan@google.com> | 2016-04-07 16:31:12 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-04-07 16:31:12 +0000 |
commit | e96f0c3db3f61b65bdd63c1ed8867218111dbb62 (patch) | |
tree | 584aa516b0d5792e42758b0e0c141060b1cb184b /vp9 | |
parent | 31b975713cf69879bcfd66bc653791112a8c3644 (diff) | |
parent | 8fab3e82ca593328680c4388b45dd772110f41fe (diff) | |
download | libvpx-e96f0c3db3f61b65bdd63c1ed8867218111dbb62.tar libvpx-e96f0c3db3f61b65bdd63c1ed8867218111dbb62.tar.gz libvpx-e96f0c3db3f61b65bdd63c1ed8867218111dbb62.tar.bz2 libvpx-e96f0c3db3f61b65bdd63c1ed8867218111dbb62.zip |
Merge "vp9-1 pass vbr: Use average QP for active_worst_quality, for inter-frames."
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_ratectrl.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 9dd739474..ebe081096 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -621,15 +621,16 @@ static int calc_active_worst_quality_one_pass_vbr(const VP9_COMP *cpi) { if (cpi->common.frame_type == KEY_FRAME) { active_worst_quality = curr_frame == 0 ? rc->worst_quality - : rc->last_q[KEY_FRAME] * 2; + : rc->last_q[KEY_FRAME] << 1; } else { if (!rc->is_src_frame_alt_ref && (cpi->refresh_golden_frame || cpi->refresh_alt_ref_frame)) { - active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] * 5 / 4 + active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] * 5 >> 2 : rc->last_q[INTER_FRAME]; } else { - active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] * 2 - : rc->last_q[INTER_FRAME] * 2; + active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] << 1 : + VPXMIN(rc->last_q[INTER_FRAME] << 1, + (rc->avg_frame_qindex[INTER_FRAME] * 3 >> 1)); } } return VPXMIN(active_worst_quality, rc->worst_quality); @@ -662,7 +663,7 @@ static int calc_active_worst_quality_one_pass_cbr(const VP9_COMP *cpi) { VPXMIN(rc->avg_frame_qindex[INTER_FRAME], rc->avg_frame_qindex[KEY_FRAME]) : rc->avg_frame_qindex[INTER_FRAME]; - active_worst_quality = VPXMIN(rc->worst_quality, ambient_qp * 5 / 4); + active_worst_quality = VPXMIN(rc->worst_quality, ambient_qp * 5 >> 2); if (rc->buffer_level > rc->optimal_buffer_level) { // Adjust down. // Maximum limit for down adjustment, ~30%. |