From 645cb98e9045733f87ea59b411377bc8a9c68ab8 Mon Sep 17 00:00:00 2001 From: Dmitry Kovalev Date: Tue, 18 Mar 2014 10:41:22 -0700 Subject: [PATCH] Cleaning up calc_active_worst_quality_one_pass_vbr(). Change-Id: Ibfccee5e35c235c02843e1c1fbd3c39034619cf5 --- vp9/encoder/vp9_ratectrl.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c index 8430e4b64..5aa3cf5f0 100644 --- a/vp9/encoder/vp9_ratectrl.c +++ b/vp9/encoder/vp9_ratectrl.c @@ -462,33 +462,25 @@ static int get_active_quality(int q, int gfu_boost, int low, int high, } static int calc_active_worst_quality_one_pass_vbr(const VP9_COMP *cpi) { + const RATE_CONTROL *const rc = &cpi->rc; + const unsigned int curr_frame = cpi->common.current_video_frame; int active_worst_quality; + if (cpi->common.frame_type == KEY_FRAME) { - if (cpi->common.current_video_frame == 0) { - active_worst_quality = cpi->rc.worst_quality; - } else { - // Choose active worst quality twice as large as the last q. - active_worst_quality = cpi->rc.last_q[KEY_FRAME] * 2; - } - } else if (!cpi->rc.is_src_frame_alt_ref && - (cpi->refresh_golden_frame || cpi->refresh_alt_ref_frame)) { - if (cpi->common.current_video_frame == 1) { - active_worst_quality = cpi->rc.last_q[KEY_FRAME] * 5 / 4; - } else { - // Choose active worst quality twice as large as the last q. - active_worst_quality = cpi->rc.last_q[INTER_FRAME]; - } + active_worst_quality = curr_frame == 0 ? rc->worst_quality + : rc->last_q[KEY_FRAME] * 2; } else { - if (cpi->common.current_video_frame == 1) { - active_worst_quality = cpi->rc.last_q[KEY_FRAME] * 2; + 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 + : rc->last_q[INTER_FRAME]; } else { - // Choose active worst quality twice as large as the last q. - active_worst_quality = cpi->rc.last_q[INTER_FRAME] * 2; + active_worst_quality = curr_frame == 1 ? rc->last_q[KEY_FRAME] * 2 + : rc->last_q[INTER_FRAME] * 2; } } - if (active_worst_quality > cpi->rc.worst_quality) - active_worst_quality = cpi->rc.worst_quality; - return active_worst_quality; + + return MIN(active_worst_quality, rc->worst_quality); } // Adjust active_worst_quality level based on buffer level. -- 2.40.0