summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2016-04-07 16:31:12 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-04-07 16:31:12 +0000
commite96f0c3db3f61b65bdd63c1ed8867218111dbb62 (patch)
tree584aa516b0d5792e42758b0e0c141060b1cb184b /vp9
parent31b975713cf69879bcfd66bc653791112a8c3644 (diff)
parent8fab3e82ca593328680c4388b45dd772110f41fe (diff)
downloadlibvpx-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.c11
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%.