ref: 5d8877a9445c8517ffef5d5773d4e7fe850ad875
parent: 1c9af9833d5b1d61abe76343129c61ac33dc9fb3
parent: effd974b16d4ac8bdb2415b25ba39b09a0e280bf
author: paulwilkins <paulwilkins@google.com>
date: Tue Apr 21 22:25:38 EDT 2015
Merge "Limit arf interval for low fpf clips."
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -1852,6 +1852,8 @@
active_max_gf_interval = 12 + MIN(4, (int_lbq / 6));
if (active_max_gf_interval > rc->max_gf_interval)
active_max_gf_interval = rc->max_gf_interval;
+ if (active_max_gf_interval < active_min_gf_interval)
+ active_max_gf_interval = active_min_gf_interval;
}
}
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -1612,8 +1612,11 @@
void vp9_rc_set_gf_max_interval(const VP9_COMP *const cpi,
RATE_CONTROL *const rc) {
const VP9EncoderConfig *const oxcf = &cpi->oxcf;
- // Set Maximum gf/arf interval
- rc->max_gf_interval = 16;
+ // Set Maximum gf/arf interval.
+ rc->max_gf_interval =
+ MIN(16, (int)(cpi->framerate / 2.0));
+ // Round up to next even number if odd.
+ rc->max_gf_interval += (rc->max_gf_interval & 0x01);
// Extended interval for genuinely static scenes
rc->static_scene_max_gf_interval = MAX_LAG_BUFFERS * 2;