From: Jingning Han Date: Wed, 25 Nov 2015 21:42:59 +0000 (-0800) Subject: Refactor sub8x8 ref motion vector search X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=40cedd6763ba04a4776914d27933802dae979a46;p=libvpx Refactor sub8x8 ref motion vector search Take out an unnecessary use of the mode context array. Change-Id: I4032ed18464e5ec49a2160bea964bad9b716ee54 --- diff --git a/vp10/common/mvref_common.c b/vp10/common/mvref_common.c index d5ef03c25..67411133c 100644 --- a/vp10/common/mvref_common.c +++ b/vp10/common/mvref_common.c @@ -384,8 +384,9 @@ static void find_mv_refs_idx(const VP10_COMMON *cm, const MACROBLOCKD *xd, } } - Done: - mode_context[ref_frame] = counter_to_context[context_counter]; +Done: + if (mode_context) + mode_context[ref_frame] = counter_to_context[context_counter]; for (i = refmv_count; i < MAX_MV_REF_CANDIDATES; ++i) mv_ref_list[i].as_int = 0; } @@ -432,9 +433,8 @@ void vp10_find_best_ref_mvs(int allow_hp, } void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd, - int block, int ref, int mi_row, int mi_col, - int_mv *nearest_mv, int_mv *near_mv, - uint8_t *mode_context) { + int block, int ref, int mi_row, int mi_col, + int_mv *nearest_mv, int_mv *near_mv) { int_mv mv_list[MAX_MV_REF_CANDIDATES]; MODE_INFO *const mi = xd->mi[0]; b_mode_info *bmi = mi->bmi; @@ -449,7 +449,7 @@ void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd, assert(MAX_MV_REF_CANDIDATES == 2); find_mv_refs_idx(cm, xd, mi, mi->mbmi.ref_frame[ref], mv_list, block, - mi_row, mi_col, NULL, NULL, mode_context); + mi_row, mi_col, NULL, NULL, NULL); #if CONFIG_REF_MV diff --git a/vp10/common/mvref_common.h b/vp10/common/mvref_common.h index 6b408785f..5950e1853 100644 --- a/vp10/common/mvref_common.h +++ b/vp10/common/mvref_common.h @@ -213,9 +213,8 @@ void vp10_find_best_ref_mvs(int allow_hp, int_mv *mvlist, int_mv *nearest_mv, int_mv *near_mv); void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd, - int block, int ref, int mi_row, int mi_col, - int_mv *nearest_mv, int_mv *near_mv, - uint8_t *mode_context); + int block, int ref, int mi_row, int mi_col, + int_mv *nearest_mv, int_mv *near_mv); #ifdef __cplusplus } // extern "C" diff --git a/vp10/decoder/decodemv.c b/vp10/decoder/decodemv.c index edc2716cc..532afeb87 100644 --- a/vp10/decoder/decodemv.c +++ b/vp10/decoder/decodemv.c @@ -834,12 +834,10 @@ static void read_inter_block_mode_info(VP10Decoder *const pbi, b_mode = read_inter_mode(cm, xd, r, inter_mode_ctx[mbmi->ref_frame[0]]); if (b_mode == NEARESTMV || b_mode == NEARMV) { - uint8_t dummy_mode_ctx[MAX_REF_FRAMES]; for (ref = 0; ref < 1 + is_compound; ++ref) vp10_append_sub8x8_mvs_for_idx(cm, xd, j, ref, mi_row, mi_col, &nearest_sub8x8[ref], - &near_sub8x8[ref], - dummy_mode_ctx); + &near_sub8x8[ref]); } if (!assign_mv(cm, xd, b_mode, block, nearestmv, diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c index 370821451..8e1ef5de5 100644 --- a/vp10/encoder/rdopt.c +++ b/vp10/encoder/rdopt.c @@ -3410,8 +3410,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP10_COMP *cpi, MACROBLOCK *x, frame_mv[ZEROMV][frame].as_int = 0; vp10_append_sub8x8_mvs_for_idx(cm, xd, i, ref, mi_row, mi_col, &frame_mv[NEARESTMV][frame], - &frame_mv[NEARMV][frame], - mbmi_ext->mode_context); + &frame_mv[NEARMV][frame]); } // search for the best motion vector on this segment