Merge "Cleaned code further for newmvref-sub8x8 and compound-modes" into nextgen

This commit is contained in:
Zoe Liu 2015-03-05 15:41:28 -08:00 committed by Gerrit Code Review
commit 756a18663c
3 changed files with 36 additions and 25 deletions

View File

@ -128,6 +128,19 @@ static INLINE int is_inter_compound_mode(PREDICTION_MODE mode) {
}
#endif
static INLINE int have_newmv_in_inter_mode(PREDICTION_MODE mode) {
#if CONFIG_COMPOUND_MODES
return (mode == NEWMV ||
mode == NEW_NEWMV ||
mode == NEAREST_NEWMV ||
mode == NEW_NEARESTMV ||
mode == NEAR_NEWMV ||
mode == NEW_NEARMV);
#else
return (mode == NEWMV);
#endif // CONFIG_COMPOUND_MODES
}
#define INTRA_MODES (TM_PRED + 1)
#define INTER_MODES (1 + NEWMV - NEARESTMV)

View File

@ -273,33 +273,39 @@ void vp9_update_mv_count(VP9_COMMON *cm, const MACROBLOCKD *xd) {
#else
if (mi->bmi[i].as_mode == NEWMV)
#endif
inc_mvs(mbmi, mi->bmi[i].as_mv,
#if CONFIG_NEWMVREF_SUB8X8
inc_mvs(mbmi, mi->bmi[i].as_mv,
mi->bmi[i].ref_mv,
#else
ref_mv,
#endif // CONFIG_NEWMVREF_SUB8X8
&cm->counts.mv);
#else
inc_mvs(mbmi, mi->bmi[i].as_mv,
ref_mv,
&cm->counts.mv);
#endif // CONFIG_NEWMVREF_SUB8X8
#if CONFIG_COMPOUND_MODES
else if (mi->bmi[i].as_mode == NEAREST_NEWMV ||
mi->bmi[i].as_mode == NEAR_NEWMV)
inc_compound_single_mv(1, mi->bmi[i].as_mv,
#if CONFIG_NEWMVREF_SUB8X8
inc_compound_single_mv(1, mi->bmi[i].as_mv,
mi->bmi[i].ref_mv,
#else
ref_mv,
#endif // CONFIG_NEWMVREF_SUB8X8
&cm->counts.mv);
#else
inc_compound_single_mv(1, mi->bmi[i].as_mv,
ref_mv,
&cm->counts.mv);
#endif // CONFIG_NEWMVREF_SUB8X8
else if (mi->bmi[i].as_mode == NEW_NEARESTMV ||
mi->bmi[i].as_mode == NEW_NEARMV)
inc_compound_single_mv(0, mi->bmi[i].as_mv,
#if CONFIG_NEWMVREF_SUB8X8
inc_compound_single_mv(0, mi->bmi[i].as_mv,
mi->bmi[i].ref_mv,
#else
ref_mv,
#endif // CONFIG_NEWMVREF_SUB8X8
&cm->counts.mv);
#endif
#else
inc_compound_single_mv(0, mi->bmi[i].as_mv,
ref_mv,
&cm->counts.mv);
#endif // CONFIG_NEWMVREF_SUB8X8
#endif // CONFIG_COMPOUND_MODES
}
}
} else {

View File

@ -2696,11 +2696,11 @@ static int64_t rd_pick_best_sub8x8_mode(VP9_COMP *cpi, MACROBLOCK *x,
// TODO(zoeliu): Further optimization work may be done for:
// NEW_NEARESTMV, NEW_NEARMV, NEAREST_NEWMV, and NEAR_NEWMV, as the mv
// ref may have changed in the compound mode as opposed to single ref.
if (has_second_rf
if (has_second_rf &&
#if CONFIG_COMPOUND_MODES
&& this_mode == NEW_NEWMV
this_mode == NEW_NEWMV
#else
&& this_mode == NEWMV
this_mode == NEWMV
#endif // CONFIG_COMPOUND_MODES
#if !CONFIG_NEWMVREF_SUB8X8
&& mbmi->interp_filter == EIGHTTAP
@ -2782,15 +2782,7 @@ static int64_t rd_pick_best_sub8x8_mode(VP9_COMP *cpi, MACROBLOCK *x,
for (ref = 0; ref < 1 + has_second_rf; ++ref) {
subpelmv |= mv_has_subpel(&mode_mv[this_mode][ref].as_mv);
#if CONFIG_NEWMVREF_SUB8X8
if (this_mode == NEWMV
#if CONFIG_COMPOUND_MODES
|| this_mode == NEW_NEWMV ||
this_mode == NEAREST_NEWMV ||
this_mode == NEW_NEARESTMV ||
this_mode == NEAR_NEWMV ||
this_mode == NEW_NEARMV
#endif // CONFIG_COMPOUND_MODES
)
if (have_newmv_in_prediction(this_mode))
have_ref &= (
(mode_mv[this_mode][ref].as_int ==
ref_bsi->rdstat[i][mode_idx].mvs[ref].as_int) &&