summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorpaulwilkins <paulwilkins@google.com>2015-04-22 02:25:38 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2015-04-22 02:25:38 -0700
commit5d8877a9445c8517ffef5d5773d4e7fe850ad875 (patch)
tree05a5254b4cd55c332c5f95d4930bc285d4e4446e /vp9
parent1c9af9833d5b1d61abe76343129c61ac33dc9fb3 (diff)
parenteffd974b16d4ac8bdb2415b25ba39b09a0e280bf (diff)
downloadlibvpx-5d8877a9445c8517ffef5d5773d4e7fe850ad875.tar
libvpx-5d8877a9445c8517ffef5d5773d4e7fe850ad875.tar.gz
libvpx-5d8877a9445c8517ffef5d5773d4e7fe850ad875.tar.bz2
libvpx-5d8877a9445c8517ffef5d5773d4e7fe850ad875.zip
Merge "Limit arf interval for low fpf clips."
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_firstpass.c2
-rw-r--r--vp9/encoder/vp9_ratectrl.c7
2 files changed, 7 insertions, 2 deletions
diff --git a/vp9/encoder/vp9_firstpass.c b/vp9/encoder/vp9_firstpass.c
index 249c047ba..7b8a717e0 100644
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -1852,6 +1852,8 @@ static void define_gf_group(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) {
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;
}
}
diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c
index 7783f7bdc..8713caa73 100644
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -1612,8 +1612,11 @@ int vp9_compute_qdelta_by_rate(const RATE_CONTROL *rc, FRAME_TYPE frame_type,
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;