diff options
author | Jingning Han <jingning@google.com> | 2014-08-26 15:53:56 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-08-27 14:59:52 -0700 |
commit | cd228fcdb8deafe51ead715988d395e05f8eda17 (patch) | |
tree | d82c97a8967198a42c5b2eb181656baba620b183 | |
parent | ec7ce316d2dff305bb068301301c498d9964ed1e (diff) | |
download | libvpx-cd228fcdb8deafe51ead715988d395e05f8eda17.tar libvpx-cd228fcdb8deafe51ead715988d395e05f8eda17.tar.gz libvpx-cd228fcdb8deafe51ead715988d395e05f8eda17.tar.bz2 libvpx-cd228fcdb8deafe51ead715988d395e05f8eda17.zip |
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
-rw-r--r-- | vp9/encoder/vp9_rdopt.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index f7b5925fa..053dbbbd0 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -2236,6 +2236,10 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, * 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); |