ref: 645cb98e9045733f87ea59b411377bc8a9c68ab8
parent: bf4e4e36a3a6a4a58220f76cf7f80095eb7859a2
author: Dmitry Kovalev <dkovalev@google.com>
date: Tue Mar 18 06:41:22 EDT 2014
Cleaning up calc_active_worst_quality_one_pass_vbr(). Change-Id: Ibfccee5e35c235c02843e1c1fbd3c39034619cf5
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -462,33 +462,25 @@
}
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.
--
⑨