Refactor sub8x8 ref motion vector search
Take out an unnecessary use of the mode context array. Change-Id: I4032ed18464e5ec49a2160bea964bad9b716ee54
This commit is contained in:
@@ -385,6 +385,7 @@ static void find_mv_refs_idx(const VP10_COMMON *cm, const MACROBLOCKD *xd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
|
if (mode_context)
|
||||||
mode_context[ref_frame] = counter_to_context[context_counter];
|
mode_context[ref_frame] = counter_to_context[context_counter];
|
||||||
for (i = refmv_count; i < MAX_MV_REF_CANDIDATES; ++i)
|
for (i = refmv_count; i < MAX_MV_REF_CANDIDATES; ++i)
|
||||||
mv_ref_list[i].as_int = 0;
|
mv_ref_list[i].as_int = 0;
|
||||||
@@ -433,8 +434,7 @@ void vp10_find_best_ref_mvs(int allow_hp,
|
|||||||
|
|
||||||
void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd,
|
void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd,
|
||||||
int block, int ref, int mi_row, int mi_col,
|
int block, int ref, int mi_row, int mi_col,
|
||||||
int_mv *nearest_mv, int_mv *near_mv,
|
int_mv *nearest_mv, int_mv *near_mv) {
|
||||||
uint8_t *mode_context) {
|
|
||||||
int_mv mv_list[MAX_MV_REF_CANDIDATES];
|
int_mv mv_list[MAX_MV_REF_CANDIDATES];
|
||||||
MODE_INFO *const mi = xd->mi[0];
|
MODE_INFO *const mi = xd->mi[0];
|
||||||
b_mode_info *bmi = mi->bmi;
|
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);
|
assert(MAX_MV_REF_CANDIDATES == 2);
|
||||||
|
|
||||||
find_mv_refs_idx(cm, xd, mi, mi->mbmi.ref_frame[ref], mv_list, block,
|
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
|
#if CONFIG_REF_MV
|
||||||
|
|||||||
@@ -214,8 +214,7 @@ void vp10_find_best_ref_mvs(int allow_hp,
|
|||||||
|
|
||||||
void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd,
|
void vp10_append_sub8x8_mvs_for_idx(VP10_COMMON *cm, MACROBLOCKD *xd,
|
||||||
int block, int ref, int mi_row, int mi_col,
|
int block, int ref, int mi_row, int mi_col,
|
||||||
int_mv *nearest_mv, int_mv *near_mv,
|
int_mv *nearest_mv, int_mv *near_mv);
|
||||||
uint8_t *mode_context);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "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]]);
|
b_mode = read_inter_mode(cm, xd, r, inter_mode_ctx[mbmi->ref_frame[0]]);
|
||||||
|
|
||||||
if (b_mode == NEARESTMV || b_mode == NEARMV) {
|
if (b_mode == NEARESTMV || b_mode == NEARMV) {
|
||||||
uint8_t dummy_mode_ctx[MAX_REF_FRAMES];
|
|
||||||
for (ref = 0; ref < 1 + is_compound; ++ref)
|
for (ref = 0; ref < 1 + is_compound; ++ref)
|
||||||
vp10_append_sub8x8_mvs_for_idx(cm, xd, j, ref, mi_row, mi_col,
|
vp10_append_sub8x8_mvs_for_idx(cm, xd, j, ref, mi_row, mi_col,
|
||||||
&nearest_sub8x8[ref],
|
&nearest_sub8x8[ref],
|
||||||
&near_sub8x8[ref],
|
&near_sub8x8[ref]);
|
||||||
dummy_mode_ctx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!assign_mv(cm, xd, b_mode, block, nearestmv,
|
if (!assign_mv(cm, xd, b_mode, block, nearestmv,
|
||||||
|
|||||||
@@ -3410,8 +3410,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP10_COMP *cpi, MACROBLOCK *x,
|
|||||||
frame_mv[ZEROMV][frame].as_int = 0;
|
frame_mv[ZEROMV][frame].as_int = 0;
|
||||||
vp10_append_sub8x8_mvs_for_idx(cm, xd, i, ref, mi_row, mi_col,
|
vp10_append_sub8x8_mvs_for_idx(cm, xd, i, ref, mi_row, mi_col,
|
||||||
&frame_mv[NEARESTMV][frame],
|
&frame_mv[NEARESTMV][frame],
|
||||||
&frame_mv[NEARMV][frame],
|
&frame_mv[NEARMV][frame]);
|
||||||
mbmi_ext->mode_context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// search for the best motion vector on this segment
|
// search for the best motion vector on this segment
|
||||||
|
|||||||
Reference in New Issue
Block a user