diff options
author | Dmitry Kovalev <dkovalev@google.com> | 2014-05-19 10:29:42 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-05-19 10:29:42 -0700 |
commit | 9ef3347b85f9b4cf367e944eb9c38ae970273618 (patch) | |
tree | 42e3cb2eaf7c19f2fdc17a1347714be253d16bfd /vp9 | |
parent | 05d55026f7fb3db0eab97e48b95fc9eab84337ef (diff) | |
parent | be49292ca1f01cd4269d4d2471397e68f9eabf38 (diff) | |
download | libvpx-9ef3347b85f9b4cf367e944eb9c38ae970273618.tar libvpx-9ef3347b85f9b4cf367e944eb9c38ae970273618.tar.gz libvpx-9ef3347b85f9b4cf367e944eb9c38ae970273618.tar.bz2 libvpx-9ef3347b85f9b4cf367e944eb9c38ae970273618.zip |
Merge "Cleaning up vp9_pick_inter_mode()."
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_pickmode.c | 55 |
1 files changed, 17 insertions, 38 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index 1e9887c2d..d5379f6bc 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -318,48 +318,27 @@ int64_t vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, pred_filter_search && ((mbmi->mv[0].as_mv.row & 0x07) != 0 || (mbmi->mv[0].as_mv.col & 0x07) != 0)) { - int64_t tmp_rdcost1 = INT64_MAX; - int64_t tmp_rdcost2 = INT64_MAX; - int64_t tmp_rdcost3 = INT64_MAX; int pf_rate[3]; int64_t pf_dist[3]; - - mbmi->interp_filter = EIGHTTAP; - vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize); - model_rd_for_sb_y(cpi, bsize, x, xd, &pf_rate[EIGHTTAP], - &pf_dist[EIGHTTAP]); - tmp_rdcost1 = RDCOST(x->rdmult, x->rddiv, - vp9_get_switchable_rate(cpi) + pf_rate[EIGHTTAP], - pf_dist[EIGHTTAP]); - - mbmi->interp_filter = EIGHTTAP_SHARP; - vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize); - model_rd_for_sb_y(cpi, bsize, x, xd, &pf_rate[EIGHTTAP_SHARP], - &pf_dist[EIGHTTAP_SHARP]); - tmp_rdcost2 = RDCOST(x->rdmult, x->rddiv, vp9_get_switchable_rate(cpi) + - pf_rate[EIGHTTAP_SHARP], - pf_dist[EIGHTTAP_SHARP]); - - mbmi->interp_filter = EIGHTTAP_SMOOTH; - vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize); - model_rd_for_sb_y(cpi, bsize, x, xd, &pf_rate[EIGHTTAP_SMOOTH], - &pf_dist[EIGHTTAP_SMOOTH]); - tmp_rdcost3 = RDCOST(x->rdmult, x->rddiv, vp9_get_switchable_rate(cpi) + - pf_rate[EIGHTTAP_SMOOTH], - pf_dist[EIGHTTAP_SMOOTH]); - - if (tmp_rdcost2 < tmp_rdcost1) { - if (tmp_rdcost2 < tmp_rdcost3) - mbmi->interp_filter = EIGHTTAP_SHARP; - else - mbmi->interp_filter = EIGHTTAP_SMOOTH; - } else { - if (tmp_rdcost1 < tmp_rdcost3) - mbmi->interp_filter = EIGHTTAP; - else - mbmi->interp_filter = EIGHTTAP_SMOOTH; + int64_t best_cost = INT64_MAX; + INTERP_FILTER best_filter = SWITCHABLE, filter; + + for (filter = EIGHTTAP; filter <= EIGHTTAP_SHARP; ++filter) { + int64_t cost; + mbmi->interp_filter = filter; + vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize); + model_rd_for_sb_y(cpi, bsize, x, xd, &pf_rate[filter], + &pf_dist[filter]); + cost = RDCOST(x->rdmult, x->rddiv, + vp9_get_switchable_rate(cpi) + pf_rate[filter], + pf_dist[filter]); + if (cost < best_cost) { + best_filter = filter; + best_cost = cost; + } } + mbmi->interp_filter = best_filter; rate = pf_rate[mbmi->interp_filter]; dist = pf_dist[mbmi->interp_filter]; } else { |