ref: f915e6d4afafabed8281b172f93502acbe101f3a
parent: 733820c5092eb1504157f10c84519524f6fd511a
parent: 32f86ce276bad32ded0a5b5623c6c400a00deb3a
author: Paul Wilkins <paulwilkins@google.com>
date: Fri Jan 12 13:45:28 EST 2018
Merge "Add zoom break out for kf boost loop."
--- a/vp9/encoder/vp9_firstpass.c
+++ b/vp9/encoder/vp9_firstpass.c
@@ -2826,6 +2826,7 @@
#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 @@
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 @@
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;
}