ref: ba38d25c3d86c7ffc9da3f73dd088d76f81ba3c6
parent: 5316cfe95af4364aee5eb7faf3f66b3a3f9c56fe
parent: 2cdc78fc61369c2e9721e1643c26fa70da54acd9
author: Marco Paniconi <marpan@google.com>
date: Tue Feb 5 13:30:57 EST 2019
Merge "vp8: Add extra conditon for overshoot-drop"
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -3950,6 +3950,7 @@
if (cpi->pass == 0 && cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER) {
if (vp8_drop_encodedframe_overshoot(cpi, Q)) return;
+ cpi->last_pred_err_mb = (int)(cpi->mb.prediction_error / cpi->common.MBs);
}
cpi->projected_frame_size -= vp8_estimate_entropy_savings(cpi);
--- a/vp8/encoder/onyx_int.h
+++ b/vp8/encoder/onyx_int.h
@@ -510,6 +510,7 @@
int force_maxqp;
int frames_since_last_drop_overshoot;
+ int last_pred_err_mb;
// GF update for 1 pass cbr.
int gf_update_onepass_cbr;
--- a/vp8/encoder/ratectrl.c
+++ b/vp8/encoder/ratectrl.c
@@ -1484,7 +1484,8 @@
if (cpi->drop_frames_allowed && pred_err_mb > (thresh_pred_err_mb << 4))
thresh_rate = thresh_rate >> 3;
if ((Q < thresh_qp && cpi->projected_frame_size > thresh_rate &&
- pred_err_mb > thresh_pred_err_mb) ||
+ pred_err_mb > thresh_pred_err_mb &&
+ pred_err_mb > 2 * cpi->last_pred_err_mb) ||
force_drop_overshoot) {
unsigned int i;
double new_correction_factor;