From 8fab3e82ca593328680c4388b45dd772110f41fe Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 30 Mar 2016 16:27:25 -0700 Subject: vp9-1 pass vbr: Use average QP for active_worst_quality, for inter-frames. And replace some operation with shift. Change-Id: If1ea874ee05b7238d5f954e55bb3ceda804a091a --- vp9/encoder/vp9_ratectrl.c | 11 ++++++----- 1 file 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%. -- cgit v1.2.3