diff options
Diffstat (limited to 'vp8/encoder/firstpass.c')
-rw-r--r-- | vp8/encoder/firstpass.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c index 7d9c38665..9cf875c4c 100644 --- a/vp8/encoder/firstpass.c +++ b/vp8/encoder/firstpass.c @@ -420,7 +420,12 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, ref_mv_full.as_mv.row = ref_mv->as_mv.row>>3; tmp_err = cpi->diamond_search_sad(x, b, d, &ref_mv_full, &tmp_mv, step_param, x->sadperbit16, &num00, &v_fn_ptr, - x->mvcost, ref_mv); +#if CONFIG_HIGH_PRECISION_MV + x->e_mbd.allow_high_precision_mv?x->mvcost_hp:x->mvcost, +#else + x->mvcost, +#endif + ref_mv); if ( tmp_err < INT_MAX-new_mv_mode_penalty ) tmp_err += new_mv_mode_penalty; @@ -445,7 +450,12 @@ static void first_pass_motion_search(VP8_COMP *cpi, MACROBLOCK *x, { tmp_err = cpi->diamond_search_sad(x, b, d, &ref_mv_full, &tmp_mv, step_param + n, x->sadperbit16, - &num00, &v_fn_ptr, x->mvcost, + &num00, &v_fn_ptr, +#if CONFIG_HIGH_PRECISION_MV + x->e_mbd.allow_high_precision_mv?x->mvcost_hp:x->mvcost, +#else + x->mvcost, +#endif ref_mv); if ( tmp_err < INT_MAX-new_mv_mode_penalty ) tmp_err += new_mv_mode_penalty; @@ -520,6 +530,10 @@ void vp8_first_pass(VP8_COMP *cpi) vp8_initialize_rd_consts(cpi, cm->base_qindex + cm->y1dc_delta_q); vpx_memcpy(cm->fc.mvc, vp8_default_mv_context, sizeof(vp8_default_mv_context)); vp8_build_component_cost_table(cpi->mb.mvcost, (const MV_CONTEXT *) cm->fc.mvc, flag); +#if CONFIG_HIGH_PRECISION_MV + vpx_memcpy(cm->fc.mvc_hp, vp8_default_mv_context_hp, sizeof(vp8_default_mv_context_hp)); + vp8_build_component_cost_table_hp(cpi->mb.mvcost_hp, (const MV_CONTEXT_HP *) cm->fc.mvc_hp, flag); +#endif } // for each macroblock row in image |