summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.c
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2016-03-04 15:55:11 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-03-04 15:55:11 +0000
commit38b3593eb94c5d2a56beca315856cfae18feaaf9 (patch)
tree3d05b5b527167748b787fd88475104125352a916 /vp9/encoder/vp9_encoder.c
parent38e401b5daa0ffb771255a3b6cafccef3146d709 (diff)
parentc7780075ec0e87f74a1a5706dec914aad8dc9200 (diff)
downloadlibvpx-38b3593eb94c5d2a56beca315856cfae18feaaf9.tar
libvpx-38b3593eb94c5d2a56beca315856cfae18feaaf9.tar.gz
libvpx-38b3593eb94c5d2a56beca315856cfae18feaaf9.tar.bz2
libvpx-38b3593eb94c5d2a56beca315856cfae18feaaf9.zip
Merge "Fix bug in stats output for HBD."
Diffstat (limited to 'vp9/encoder/vp9_encoder.c')
-rw-r--r--vp9/encoder/vp9_encoder.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index 332db300c..ac7c6deee 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -2722,6 +2722,13 @@ static int scale_down(VP9_COMP *cpi, int q) {
return scale;
}
+static int big_rate_miss(VP9_COMP *cpi, int high_limit, int low_limit) {
+ const RATE_CONTROL *const rc = &cpi->rc;
+
+ return (rc->projected_frame_size > ((high_limit * 3) / 2)) ||
+ (rc->projected_frame_size < (low_limit / 2));
+}
+
// Function to test for conditions that indicate we should loop
// back and recode a frame.
static int recode_loop_test(VP9_COMP *cpi,
@@ -2733,6 +2740,7 @@ static int recode_loop_test(VP9_COMP *cpi,
int force_recode = 0;
if ((rc->projected_frame_size >= rc->max_frame_bandwidth) ||
+ big_rate_miss(cpi, high_limit, low_limit) ||
(cpi->sf.recode_loop == ALLOW_RECODE) ||
(frame_is_kfgfarf &&
(cpi->sf.recode_loop == ALLOW_RECODE_KFARFGF))) {
@@ -3079,7 +3087,15 @@ static void output_frame_level_debug_stats(VP9_COMP *cpi) {
vpx_clear_system_state();
+#if CONFIG_VP9_HIGHBITDEPTH
+ if (cm->use_highbitdepth) {
+ recon_err = vp9_highbd_get_y_sse(cpi->Source, get_frame_new_buffer(cm));
+ } else {
+ recon_err = vp9_get_y_sse(cpi->Source, get_frame_new_buffer(cm));
+ }
+#else
recon_err = vp9_get_y_sse(cpi->Source, get_frame_new_buffer(cm));
+#endif // CONFIG_VP9_HIGHBITDEPTH
if (cpi->twopass.total_left_stats.coded_error != 0.0)
fprintf(f, "%10u %dx%d %10d %10d %d %d %10d %10d %10d %10d"