diff options
author | Paul Wilkins <paulwilkins@google.com> | 2018-01-12 18:45:28 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-01-12 18:45:28 +0000 |
commit | f915e6d4afafabed8281b172f93502acbe101f3a (patch) | |
tree | c18a62f91ec8a1abedcf307243b70cd81668465d /vp9/encoder | |
parent | 733820c5092eb1504157f10c84519524f6fd511a (diff) | |
parent | 32f86ce276bad32ded0a5b5623c6c400a00deb3a (diff) | |
download | libvpx-f915e6d4afafabed8281b172f93502acbe101f3a.tar libvpx-f915e6d4afafabed8281b172f93502acbe101f3a.tar.gz libvpx-f915e6d4afafabed8281b172f93502acbe101f3a.tar.bz2 libvpx-f915e6d4afafabed8281b172f93502acbe101f3a.zip |
Merge "Add zoom break out for kf boost loop."
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_firstpass.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_firstpass.c b/vp9/encoder/vp9_firstpass.c index df1ab4447..4093b5529 100644 --- a/vp9/encoder/vp9_firstpass.c +++ b/vp9/encoder/vp9_firstpass.c @@ -2826,6 +2826,7 @@ static int test_candidate_kf(TWO_PASS *twopass, #define FRAMES_TO_CHECK_DECAY 8 #define MIN_KF_TOT_BOOST 300 #define KF_BOOST_SCAN_MAX_FRAMES 32 +#define KF_ABS_ZOOM_THRESH 6.0 #ifdef AGGRESSIVE_VBR #define KF_MAX_FRAME_BOOST 80.0 @@ -2853,6 +2854,7 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) { double kf_group_err = 0.0; double recent_loop_decay[FRAMES_TO_CHECK_DECAY]; double sr_accumulator = 0.0; + double abs_mv_in_out_accumulator = 0.0; const double av_err = get_distribution_av_err(cpi, twopass); vp9_zero(next_frame); @@ -3032,7 +3034,14 @@ static void find_next_key_frame(VP9_COMP *cpi, FIRSTPASS_STATS *this_frame) { KF_MAX_FRAME_BOOST * zm_factor); boost_score += frame_boost; - if (frame_boost < 25.00) break; + + // Measure of zoom. Large zoom tends to indicate reduced boost. + abs_mv_in_out_accumulator += + fabs(next_frame.mv_in_out_count * next_frame.pcnt_motion); + + if ((frame_boost < 25.00) || + (abs_mv_in_out_accumulator > KF_ABS_ZOOM_THRESH)) + break; } else { break; } |