ref: cd228fcdb8deafe51ead715988d395e05f8eda17
parent: ec7ce316d2dff305bb068301301c498d9964ed1e
author: Jingning Han <[email protected]>
date: Tue Aug 26 11:53:56 EDT 2014
Add an early termination check in handle_inter_mode Check the mode and motion vector cost. If it is already above the existing best rate-distortion cost, skip the rest check process on this mode. Change-Id: Ie065cebdfda2a3be3be18b8e8b43dc29aaa8c179
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -2236,6 +2236,10 @@
* if the first is known */
*rate2 += cost_mv_ref(cpi, this_mode, mbmi->mode_context[refs[0]]);
+ if (RDCOST(x->rdmult, x->rddiv, *rate2, 0) > ref_best_rd &&
+ mbmi->mode != NEARESTMV)
+ return INT64_MAX;
+
pred_exists = 0;
// Are all MVs integer pel for Y and UV
intpel_mv = !mv_has_subpel(&mbmi->mv[0].as_mv);