static void lower_mv_precision(int_mv *mv, int usehp) { if (!usehp || !vp9_use_mv_hp(&mv->as_mv)) { if (mv->as_mv.row & 1) mv->as_mv.row += (mv->as_mv.row > 0 ? -1 : 1); if (mv->as_mv.col & 1) mv->as_mv.col += (mv->as_mv.col > 0 ? -1 : 1); } }
static void lower_mv_precision(MV *mv, int allow_hp) { const int use_hp = allow_hp && vp9_use_mv_hp(mv); if (!use_hp) { if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1); if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1); } }
static INLINE void read_mv(vp9_reader *r, MV *mv, const MV *ref, const nmv_context *ctx, nmv_context_counts *counts, int allow_hp) { const MV_JOINT_TYPE j = vp9_read_tree(r, vp9_mv_joint_tree, ctx->joints); const int use_hp = allow_hp && vp9_use_mv_hp(ref); MV diff = {0, 0}; if (mv_joint_vertical(j)) diff.row = read_mv_component(r, &ctx->comps[0], use_hp); if (mv_joint_horizontal(j)) diff.col = read_mv_component(r, &ctx->comps[1], use_hp); vp9_inc_mv(&diff, counts); mv->row = ref->row + diff.row; mv->col = ref->col + diff.col; }