diff options
author | paulwilkins <paulwilkins@google.com> | 2015-04-22 02:25:38 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2015-04-22 02:25:38 -0700 |
commit | 5d8877a9445c8517ffef5d5773d4e7fe850ad875 (patch) | |
tree | 05a5254b4cd55c332c5f95d4930bc285d4e4446e /vp9 | |
parent | 1c9af9833d5b1d61abe76343129c61ac33dc9fb3 (diff) | |
parent | effd974b16d4ac8bdb2415b25ba39b09a0e280bf (diff) | |
download | libvpx-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.c | 2 | ||||
-rw-r--r-- | vp9/encoder/vp9_ratectrl.c | 7 |
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; |