From 532179e845a37861fe7a703b0f6243d06e8e3a5b Mon Sep 17 00:00:00 2001 From: Jim Bankoski Date: Wed, 4 Sep 2013 09:47:57 -0700 Subject: [PATCH] faster accounting of inc_mv Moves counting of mv branches to where we have a new mv, instead of after the whole frame is summed. Change-Id: I945d9f6d9199ba2443fe816c92d5849340d17bbd --- vp9/common/vp9_entropymv.c | 27 ++++++--------------------- vp9/encoder/vp9_encodemv.c | 1 - 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/vp9/common/vp9_entropymv.c b/vp9/common/vp9_entropymv.c index c6eefda92..2e973e53f 100644 --- a/vp9/common/vp9_entropymv.c +++ b/vp9/common/vp9_entropymv.c @@ -149,8 +149,6 @@ int vp9_get_mv_mag(MV_CLASS_TYPE c, int offset) { static void inc_mv_component(int v, nmv_component_counts *comp_counts, int incr, int usehp) { int s, z, c, o, d, e, f; - if (!incr) - return; assert (v != 0); /* should not be zero */ s = v < 0; comp_counts->sign[s] += incr; @@ -177,35 +175,24 @@ static void inc_mv_component(int v, nmv_component_counts *comp_counts, } } -static void counts_to_context(nmv_component_counts *mvcomp, int usehp) { - int v; - vpx_memset(mvcomp->sign, 0, sizeof(nmv_component_counts) - sizeof(mvcomp->mvcount)); - for (v = 1; v <= MV_MAX; v++) { - inc_mv_component(-v, mvcomp, mvcomp->mvcount[MV_MAX - v], usehp); - inc_mv_component( v, mvcomp, mvcomp->mvcount[MV_MAX + v], usehp); - } -} void vp9_inc_mv(const MV *mv, nmv_context_counts *counts) { const MV_JOINT_TYPE j = vp9_get_mv_joint(mv); ++counts->joints[j]; - if (mv_joint_vertical(j)) - ++counts->comps[0].mvcount[MV_MAX + mv->row]; + if (mv_joint_vertical(j)) { + inc_mv_component(mv->row, &counts->comps[0], 1, 1); + } - if (mv_joint_horizontal(j)) - ++counts->comps[1].mvcount[MV_MAX + mv->col]; + if (mv_joint_horizontal(j)) { + inc_mv_component(mv->col, &counts->comps[1], 1, 1); + } } static vp9_prob adapt_prob(vp9_prob prep, const unsigned int ct[2]) { return merge_probs2(prep, ct, MV_COUNT_SAT, MV_MAX_UPDATE_FACTOR); } -void vp9_counts_process(nmv_context_counts *nmv_count, int usehp) { - counts_to_context(&nmv_count->comps[0], usehp); - counts_to_context(&nmv_count->comps[1], usehp); -} - static unsigned int adapt_probs(unsigned int i, vp9_tree tree, vp9_prob this_probs[], @@ -235,8 +222,6 @@ void vp9_adapt_mv_probs(VP9_COMMON *cm, int allow_hp) { nmv_context *pre_ctx = &pre_fc->nmvc; nmv_context_counts *cts = &cm->counts.mv; - vp9_counts_process(cts, allow_hp); - adapt_probs(0, vp9_mv_joint_tree, ctx->joints, pre_ctx->joints, cts->joints); for (i = 0; i < 2; ++i) { diff --git a/vp9/encoder/vp9_encodemv.c b/vp9/encoder/vp9_encodemv.c index 1203c00ab..997728930 100644 --- a/vp9/encoder/vp9_encodemv.c +++ b/vp9/encoder/vp9_encodemv.c @@ -155,7 +155,6 @@ static void counts_to_nmv_context( unsigned int (*branch_ct_class0_hp)[2], unsigned int (*branch_ct_hp)[2]) { int i, j, k; - vp9_counts_process(nmv_count, usehp); vp9_tree_probs_from_distribution(vp9_mv_joint_tree, prob->joints, branch_ct_joint,