Remove the single ref inter mode NEWFROMNEARMV Change-Id: I246da885154303d139f5d97c53ebfc55d6dc82ca
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c index df23cde..3d4d94a 100644 --- a/av1/common/av1_loopfilter.c +++ b/av1/common/av1_loopfilter.c
@@ -263,10 +263,8 @@ static const int mode_lf_lut[MB_MODE_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // INTRA_MODES - 1, 1, 0, 1 // INTER_MODES (ZEROMV == 0) + 1, 1, 0, 1, // INTER_MODES (ZEROMV == 0) #if CONFIG_EXT_INTER - , - 1, // NEWFROMNEARMV mode 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 // INTER_COMPOUND_MODES (ZERO_ZEROMV == 0) #endif // CONFIG_EXT_INTER };
diff --git a/av1/common/blockd.h b/av1/common/blockd.h index 8243f2a..3910faa 100644 --- a/av1/common/blockd.h +++ b/av1/common/blockd.h
@@ -118,7 +118,7 @@ #if CONFIG_EXT_INTER static INLINE int is_inter_singleref_mode(PREDICTION_MODE mode) { - return mode >= NEARESTMV && mode <= NEWFROMNEARMV; + return mode >= NEARESTMV && mode <= NEWMV; } static INLINE int is_inter_compound_mode(PREDICTION_MODE mode) { @@ -144,7 +144,6 @@ MB_MODE_COUNT, // NEARMV MB_MODE_COUNT, // ZEROMV MB_MODE_COUNT, // NEWMV - MB_MODE_COUNT, // NEWFROMNEARMV NEARESTMV, // NEAREST_NEARESTMV NEARESTMV, // NEAREST_NEARMV NEARMV, // NEAR_NEARESTMV @@ -179,7 +178,6 @@ MB_MODE_COUNT, // NEARMV MB_MODE_COUNT, // ZEROMV MB_MODE_COUNT, // NEWMV - MB_MODE_COUNT, // NEWFROMNEARMV NEARESTMV, // NEAREST_NEARESTMV NEARMV, // NEAREST_NEARMV NEARESTMV, // NEAR_NEARESTMV @@ -196,9 +194,8 @@ } static INLINE int have_newmv_in_inter_mode(PREDICTION_MODE mode) { - return (mode == NEWMV || mode == NEWFROMNEARMV || mode == NEW_NEWMV || - mode == NEAREST_NEWMV || mode == NEW_NEARESTMV || - mode == NEAR_NEWMV || mode == NEW_NEARMV); + return (mode == NEWMV || mode == NEW_NEWMV || mode == NEAREST_NEWMV || + mode == NEW_NEARESTMV || mode == NEAR_NEWMV || mode == NEW_NEARMV); } static INLINE int use_masked_motion_search(COMPOUND_TYPE type) {
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index 922e514..611cc3e 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -747,24 +747,10 @@ static const aom_prob default_drl_prob[DRL_MODE_CONTEXTS] = { 128, 160, 180, 128, 160 }; - -#if CONFIG_EXT_INTER -static const aom_prob default_new2mv_prob = 180; -#endif // CONFIG_EXT_INTER #endif // CONFIG_REF_MV static const aom_prob default_inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1] = { -#if CONFIG_EXT_INTER - // TODO(zoeliu): To adjust the initial default probs - { 2, 173, 34, 173 }, // 0 = both zero mv - { 7, 145, 85, 145 }, // 1 = one zero mv + one a predicted mv - { 7, 166, 63, 166 }, // 2 = two predicted mvs - { 7, 94, 66, 128 }, // 3 = one predicted/zero and one new mv - { 8, 64, 46, 128 }, // 4 = two new mvs - { 17, 81, 31, 128 }, // 5 = one intra neighbour + x - { 25, 29, 30, 96 }, // 6 = two intra neighbours -#else { 2, 173, 34 }, // 0 = both zero mv { 7, 145, 85 }, // 1 = one zero mv + one a predicted mv { 7, 166, 63 }, // 2 = two predicted mvs @@ -772,7 +758,6 @@ { 8, 64, 46 }, // 4 = two new mvs { 17, 81, 31 }, // 5 = one intra neighbour + x { 25, 29, 30 }, // 6 = two intra neighbours -#endif // CONFIG_EXT_INTER }; #if CONFIG_EXT_INTER @@ -951,14 +936,8 @@ #endif // CONFIG_ALT_INTRA const aom_tree_index av1_inter_mode_tree[TREE_SIZE(INTER_MODES)] = { - -INTER_OFFSET(ZEROMV), 2, - -INTER_OFFSET(NEARESTMV), 4, -#if CONFIG_EXT_INTER - -INTER_OFFSET(NEARMV), 6, - -INTER_OFFSET(NEWMV), -INTER_OFFSET(NEWFROMNEARMV) -#else - -INTER_OFFSET(NEARMV), -INTER_OFFSET(NEWMV) -#endif // CONFIG_EXT_INTER + -INTER_OFFSET(ZEROMV), 2, -INTER_OFFSET(NEARESTMV), 4, -INTER_OFFSET(NEARMV), + -INTER_OFFSET(NEWMV) }; #if CONFIG_EXT_INTER @@ -1780,7 +1759,7 @@ }, }, }; -#else +#else // !CONFIG_EXT_TX /* clang-format off */ const aom_tree_index av1_ext_tx_tree[TREE_SIZE(TX_TYPES)] = { @@ -1943,7 +1922,7 @@ { 23680, 23929, 27831, 30446, 30598, 31129, 31244, 31655, 31868, 32234, 32768, 0 }, }; -#else +#else // !CONFIG_ALT_INTRA static const aom_cdf_prob default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE( INTRA_MODES)] = { { 8320, 11376, 12880, 19959, 23072, 24067, 25461, 26917, 29157, 32768, 0 }, @@ -2560,7 +2539,7 @@ { 6656, 12164, 16993, 21568, 22933, 23648, 25322, 26602, 27806, 29841, 32768, 0 }, }, -#else +#else // !CONFIG_ALT_INTRA { { 17536, 19321, 21527, 25360, 27516, 28026, 29323, 30023, 30999, 32768, 0 }, { 11776, 15466, 22360, 24865, 26991, 27889, 29299, 30519, 31398, 32768, @@ -2795,9 +2774,6 @@ av1_copy(fc->zeromv_prob, default_zeromv_prob); av1_copy(fc->refmv_prob, default_refmv_prob); av1_copy(fc->drl_prob, default_drl_prob); -#if CONFIG_EXT_INTER - fc->new2mv_prob = default_new2mv_prob; -#endif // CONFIG_EXT_INTER #endif // CONFIG_REF_MV av1_copy(fc->inter_mode_probs, default_inter_mode_probs); #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION @@ -3013,10 +2989,6 @@ for (i = 0; i < DRL_MODE_CONTEXTS; ++i) fc->drl_prob[i] = av1_mode_mv_merge_probs(pre_fc->drl_prob[i], counts->drl_mode[i]); -#if CONFIG_EXT_INTER - fc->new2mv_prob = - av1_mode_mv_merge_probs(pre_fc->new2mv_prob, counts->new2mv_mode); -#endif // CONFIG_EXT_INTER #else for (i = 0; i < INTER_MODE_CONTEXTS; i++) aom_tree_merge_probs(av1_inter_mode_tree, pre_fc->inter_mode_probs[i],
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index cd9e7e3..6ec269e 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -181,10 +181,6 @@ aom_prob zeromv_prob[ZEROMV_MODE_CONTEXTS]; aom_prob refmv_prob[REFMV_MODE_CONTEXTS]; aom_prob drl_prob[DRL_MODE_CONTEXTS]; - -#if CONFIG_EXT_INTER - aom_prob new2mv_prob; -#endif // CONFIG_EXT_INTER #endif // CONFIG_REF_MV aom_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1]; @@ -344,9 +340,6 @@ unsigned int zeromv_mode[ZEROMV_MODE_CONTEXTS][2]; unsigned int refmv_mode[REFMV_MODE_CONTEXTS][2]; unsigned int drl_mode[DRL_MODE_CONTEXTS][2]; -#if CONFIG_EXT_INTER - unsigned int new2mv_mode[2]; -#endif // CONFIG_EXT_INTER #endif unsigned int inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
diff --git a/av1/common/enums.h b/av1/common/enums.h index 00860f9..b42a326 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h
@@ -314,7 +314,6 @@ ZEROMV, NEWMV, #if CONFIG_EXT_INTER - NEWFROMNEARMV, NEAREST_NEARESTMV, NEAREST_NEARMV, NEAR_NEARESTMV, @@ -389,11 +388,7 @@ #define DIRECTIONAL_MODES (INTRA_MODES - 2) #endif // CONFIG_EXT_INTRA -#if CONFIG_EXT_INTER -#define INTER_MODES (1 + NEWFROMNEARMV - NEARESTMV) -#else #define INTER_MODES (1 + NEWMV - NEARESTMV) -#endif // CONFIG_EXT_INTER #if CONFIG_EXT_INTER #define INTER_COMPOUND_MODES (1 + NEW_NEWMV - NEAREST_NEARESTMV)
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c index 442f83f..36f6cad 100644 --- a/av1/common/mvref_common.c +++ b/av1/common/mvref_common.c
@@ -48,12 +48,7 @@ ref_mv_stack[index].weight = 2 * len; ++(*refmv_count); -#if CONFIG_EXT_INTER - if (candidate->mode == NEWMV || candidate->mode == NEWFROMNEARMV) -#else - if (candidate->mode == NEWMV) -#endif // CONFIG_EXT_INTER - ++newmv_count; + if (candidate->mode == NEWMV) ++newmv_count; } if (candidate_mi->mbmi.sb_type < BLOCK_8X8 && block >= 0 && @@ -76,12 +71,7 @@ ref_mv_stack[index].weight = len; ++(*refmv_count); -#if CONFIG_EXT_INTER - if (candidate->mode == NEWMV || candidate->mode == NEWFROMNEARMV) -#else - if (candidate->mode == NEWMV) -#endif // CONFIG_EXT_INTER - ++newmv_count; + if (candidate->mode == NEWMV) ++newmv_count; } } }
diff --git a/av1/common/mvref_common.h b/av1/common/mvref_common.h index 9baef8d..a8abcba 100644 --- a/av1/common/mvref_common.h +++ b/av1/common/mvref_common.h
@@ -64,7 +64,6 @@ 3, // ZEROMV 1, // NEWMV #if CONFIG_EXT_INTER - 1, // NEWFROMNEARMV 0, // NEAREST_NEARESTMV 0, // NEAREST_NEARMV 0, // NEAR_NEARESTMV
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index e3f45cf..897999c 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -188,9 +188,6 @@ av1_diff_update_prob(r, &fc->refmv_prob[i], ACCT_STR); for (i = 0; i < DRL_MODE_CONTEXTS; ++i) av1_diff_update_prob(r, &fc->drl_prob[i], ACCT_STR); -#if CONFIG_EXT_INTER - av1_diff_update_prob(r, &fc->new2mv_prob, ACCT_STR); -#endif // CONFIG_EXT_INTER #else #if !CONFIG_EC_ADAPT int i, j;
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 3d75628..20b6d3c 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -169,11 +169,7 @@ #endif // CONFIG_EXT_INTER static PREDICTION_MODE read_inter_mode(FRAME_CONTEXT *ec_ctx, MACROBLOCKD *xd, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - MB_MODE_INFO *mbmi, -#endif aom_reader *r, int16_t ctx) { - #if CONFIG_REF_MV FRAME_COUNTS *counts = xd->counts; int16_t mode_ctx = ctx & NEWMV_CTX_MASK; @@ -181,23 +177,7 @@ if (aom_read(r, mode_prob, ACCT_STR) == 0) { if (counts) ++counts->newmv_mode[mode_ctx][0]; - -#if CONFIG_EXT_INTER - if (has_second_ref(mbmi)) { -#endif // CONFIG_EXT_INTER - return NEWMV; -#if CONFIG_EXT_INTER - } else { - mode_prob = ec_ctx->new2mv_prob; - if (aom_read(r, mode_prob, ACCT_STR) == 0) { - if (counts) ++counts->new2mv_mode[0]; - return NEWMV; - } else { - if (counts) ++counts->new2mv_mode[1]; - return NEWFROMNEARMV; - } - } -#endif // CONFIG_EXT_INTER + return NEWMV; } if (counts) ++counts->newmv_mode[mode_ctx][1]; @@ -1365,9 +1345,6 @@ (void)bsize; switch (mode) { -#if CONFIG_EXT_INTER - case NEWFROMNEARMV: -#endif // CONFIG_EXT_INTER case NEWMV: { FRAME_COUNTS *counts = xd->counts; #if !CONFIG_REF_MV @@ -1628,9 +1605,6 @@ const int unify_bsize = CONFIG_CB4X4; int_mv nearestmv[2], nearmv[2]; int_mv ref_mvs[MODE_CTX_REF_FRAMES][MAX_MV_REF_CANDIDATES]; -#if CONFIG_EXT_INTER - int mv_idx; -#endif // CONFIG_EXT_INTER int ref, is_compound; int16_t inter_mode_ctx[MODE_CTX_REF_FRAMES]; #if CONFIG_REF_MV && CONFIG_EXT_INTER @@ -1734,11 +1708,7 @@ mbmi->mode = read_inter_compound_mode(cm, xd, r, mode_ctx); else #endif // CONFIG_EXT_INTER - mbmi->mode = read_inter_mode(ec_ctx, xd, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - mbmi, -#endif // CONFIG_REF_MV && CONFIG_EXT_INTER - r, mode_ctx); + mbmi->mode = read_inter_mode(ec_ctx, xd, r, mode_ctx); #if CONFIG_REF_MV #if CONFIG_EXT_INTER if (mbmi->mode == NEARMV || mbmi->mode == NEAR_NEARMV || @@ -1859,15 +1829,9 @@ b_mode = read_inter_compound_mode(cm, xd, r, mode_ctx); else #endif // CONFIG_EXT_INTER - b_mode = read_inter_mode(ec_ctx, xd, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - mbmi, -#endif // CONFIG_REF_MV && CONFIG_EXT_INTER - r, mode_ctx); + b_mode = read_inter_mode(ec_ctx, xd, r, mode_ctx); #if CONFIG_EXT_INTER - mv_idx = (b_mode == NEWFROMNEARMV) ? 1 : 0; - if (b_mode != ZEROMV && b_mode != ZERO_ZEROMV) { #else if (b_mode != ZEROMV) { @@ -1917,8 +1881,8 @@ if (!assign_mv(cm, xd, b_mode, mbmi->ref_frame, j, block, #if CONFIG_EXT_INTER - ref_mv[mv_idx], -#else + ref_mv[0], +#else // !CONFIG_EXT_INTER ref_mv_s8, #endif // CONFIG_EXT_INTER nearest_sub8x8, near_sub8x8, mi_row, mi_col, is_compound, @@ -1971,12 +1935,7 @@ } int mv_corrupted_flag = - !assign_mv(cm, xd, mbmi->mode, mbmi->ref_frame, 0, mbmi->mv, -#if CONFIG_EXT_INTER - mbmi->mode == NEWFROMNEARMV ? nearmv : nearestmv, -#else - ref_mv, -#endif // CONFIG_EXT_INTER + !assign_mv(cm, xd, mbmi->mode, mbmi->ref_frame, 0, mbmi->mv, ref_mv, nearestmv, nearmv, mi_row, mi_col, is_compound, allow_hp, r); aom_merge_corrupted_flag(&xd->corrupted, mv_corrupted_flag); }
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 7e9e1cd..57ce7e2 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -240,26 +240,15 @@ #endif // CONFIG_EXT_INTER static void write_inter_mode(aom_writer *w, PREDICTION_MODE mode, - FRAME_CONTEXT *ec_ctx, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - int is_compound, -#endif // CONFIG_REF_MV && CONFIG_EXT_INTER - const int16_t mode_ctx) { + FRAME_CONTEXT *ec_ctx, const int16_t mode_ctx) { #if CONFIG_REF_MV const int16_t newmv_ctx = mode_ctx & NEWMV_CTX_MASK; const aom_prob newmv_prob = ec_ctx->newmv_prob[newmv_ctx]; -#if CONFIG_EXT_INTER - aom_write(w, mode != NEWMV && mode != NEWFROMNEARMV, newmv_prob); - if (!is_compound && (mode == NEWMV || mode == NEWFROMNEARMV)) - aom_write(w, mode == NEWFROMNEARMV, ec_ctx->new2mv_prob); +#define IS_NEWMV_MODE(mode) ((mode) == NEWMV) + aom_write(w, !IS_NEWMV_MODE(mode), newmv_prob); - if (mode != NEWMV && mode != NEWFROMNEARMV) { -#else - aom_write(w, mode != NEWMV, newmv_prob); - - if (mode != NEWMV) { -#endif // CONFIG_EXT_INTER + if (!IS_NEWMV_MODE(mode)) { const int16_t zeromv_ctx = (mode_ctx >> ZEROMV_OFFSET) & ZEROMV_CTX_MASK; const aom_prob zeromv_prob = ec_ctx->zeromv_prob[zeromv_ctx]; @@ -282,7 +271,10 @@ aom_write(w, mode != NEARESTMV, refmv_prob); } } -#else + +#undef IS_NEWMV_MODE + +#else // !CONFIG_REF_MV assert(is_inter_mode(mode)); #if CONFIG_EC_MULTISYMBOL aom_write_symbol(w, av1_inter_mode_ind[INTER_OFFSET(mode)], @@ -520,10 +512,6 @@ for (i = 0; i < DRL_MODE_CONTEXTS; ++i) av1_cond_prob_diff_update(w, &cm->fc->drl_prob[i], counts->drl_mode[i], probwt); -#if CONFIG_EXT_INTER - av1_cond_prob_diff_update(w, &cm->fc->new2mv_prob, counts->new2mv_mode, - probwt); -#endif // CONFIG_EXT_INTER } #endif @@ -1734,11 +1722,7 @@ write_inter_compound_mode(cm, w, mode, mode_ctx); else if (is_inter_singleref_mode(mode)) #endif // CONFIG_EXT_INTER - write_inter_mode(w, mode, ec_ctx, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - is_compound, -#endif // CONFIG_REF_MV && CONFIG_EXT_INTER - mode_ctx); + write_inter_mode(w, mode, ec_ctx, mode_ctx); #if CONFIG_REF_MV #if CONFIG_EXT_INTER @@ -1778,15 +1762,10 @@ write_inter_compound_mode(cm, w, b_mode, mode_ctx); else if (is_inter_singleref_mode(b_mode)) #endif // CONFIG_EXT_INTER - write_inter_mode(w, b_mode, ec_ctx, -#if CONFIG_REF_MV && CONFIG_EXT_INTER - has_second_ref(mbmi), -#endif // CONFIG_REF_MV && CONFIG_EXT_INTER - mode_ctx); + write_inter_mode(w, b_mode, ec_ctx, mode_ctx); #if CONFIG_EXT_INTER - if (b_mode == NEWMV || b_mode == NEWFROMNEARMV || - b_mode == NEW_NEWMV) { + if (b_mode == NEWMV || b_mode == NEW_NEWMV) { #else if (b_mode == NEWMV) { #endif // CONFIG_EXT_INTER @@ -1838,7 +1817,7 @@ } } else { #if CONFIG_EXT_INTER - if (mode == NEWMV || mode == NEWFROMNEARMV || mode == NEW_NEWMV) { + if (mode == NEWMV || mode == NEW_NEWMV) { #else if (mode == NEWMV) { #endif // CONFIG_EXT_INTER @@ -1852,15 +1831,8 @@ nmv_context *nmvc = &ec_ctx->nmvc[nmv_ctx]; #endif ref_mv = mbmi_ext->ref_mvs[mbmi->ref_frame[ref]][0]; -#if CONFIG_EXT_INTER - if (mode == NEWFROMNEARMV) - av1_encode_mv(cpi, w, &mbmi->mv[ref].as_mv, - &mbmi_ext->ref_mvs[mbmi->ref_frame[ref]][1].as_mv, - nmvc, allow_hp); - else -#endif // CONFIG_EXT_INTER - av1_encode_mv(cpi, w, &mbmi->mv[ref].as_mv, &ref_mv.as_mv, nmvc, - allow_hp); + av1_encode_mv(cpi, w, &mbmi->mv[ref].as_mv, &ref_mv.as_mv, nmvc, + allow_hp); } #if CONFIG_EXT_INTER } else if (mode == NEAREST_NEWMV || mode == NEAR_NEWMV) {
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 7b8d8d3..a44ab51 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -1989,17 +1989,9 @@ #if CONFIG_REF_MV static void update_inter_mode_stats(FRAME_COUNTS *counts, PREDICTION_MODE mode, -#if CONFIG_EXT_INTER - int is_compound, -#endif // CONFIG_EXT_INTER int16_t mode_context) { int16_t mode_ctx = mode_context & NEWMV_CTX_MASK; -#if CONFIG_EXT_INTER - if (mode == NEWMV || mode == NEWFROMNEARMV) { - if (!is_compound) ++counts->new2mv_mode[mode == NEWFROMNEARMV]; -#else if (mode == NEWMV) { -#endif // CONFIG_EXT_INTER ++counts->newmv_mode[mode_ctx][0]; return; } else { @@ -2219,11 +2211,7 @@ #endif // CONFIG_EXT_INTER mode_ctx = av1_mode_context_analyzer(mbmi_ext->mode_context, mbmi->ref_frame, bsize, -1); - update_inter_mode_stats(counts, mode, -#if CONFIG_EXT_INTER - has_second_ref(mbmi), -#endif // CONFIG_EXT_INTER - mode_ctx); + update_inter_mode_stats(counts, mode, mode_ctx); #if CONFIG_EXT_INTER } #endif // CONFIG_EXT_INTER @@ -2291,11 +2279,7 @@ #endif // CONFIG_EXT_INTER mode_ctx = av1_mode_context_analyzer(mbmi_ext->mode_context, mbmi->ref_frame, bsize, j); - update_inter_mode_stats(counts, b_mode, -#if CONFIG_EXT_INTER - has_second_ref(mbmi), -#endif // CONFIG_EXT_INTER - mode_ctx); + update_inter_mode_stats(counts, b_mode, mode_ctx); #if CONFIG_EXT_INTER } #endif // CONFIG_EXT_INTER
diff --git a/av1/encoder/encodemv.c b/av1/encoder/encodemv.c index 5b6f9b6..7a37379 100644 --- a/av1/encoder/encodemv.c +++ b/av1/encoder/encodemv.c
@@ -294,14 +294,13 @@ nmv_context_counts *nmv_counts) { int i; PREDICTION_MODE mode = mbmi->mode; - int mv_idx = (mode == NEWFROMNEARMV); #if !CONFIG_REF_MV nmv_context_counts *counts = nmv_counts; #endif - if (mode == NEWMV || mode == NEWFROMNEARMV || mode == NEW_NEWMV) { + if (mode == NEWMV || mode == NEW_NEWMV) { for (i = 0; i < 1 + has_second_ref(mbmi); ++i) { - const MV *ref = &mbmi_ext->ref_mvs[mbmi->ref_frame[i]][mv_idx].as_mv; + const MV *ref = &mbmi_ext->ref_mvs[mbmi->ref_frame[i]][0].as_mv; const MV diff = { mvs[i].as_mv.row - ref->row, mvs[i].as_mv.col - ref->col }; #if CONFIG_REF_MV @@ -354,7 +353,7 @@ nmv_context_counts *counts = nmv_counts; #endif - if (mode == NEWMV || mode == NEWFROMNEARMV || mode == NEW_NEWMV) { + if (mode == NEWMV || mode == NEW_NEWMV) { for (i = 0; i < 1 + has_second_ref(&mi->mbmi); ++i) { const MV *ref = &mi->bmi[block].ref_mv[i].as_mv; const MV diff = { mvs[i].as_mv.row - ref->row,
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h index 6b122c7..84fe8e2 100644 --- a/av1/encoder/encoder.h +++ b/av1/encoder/encoder.h
@@ -542,9 +542,6 @@ int zeromv_mode_cost[ZEROMV_MODE_CONTEXTS][2]; int refmv_mode_cost[REFMV_MODE_CONTEXTS][2]; int drl_mode_cost0[DRL_MODE_CONTEXTS][2]; -#if CONFIG_EXT_INTER - int new2mv_mode_cost[2]; -#endif // CONFIG_EXT_INTER #endif unsigned int inter_mode_cost[INTER_MODE_CONTEXTS][INTER_MODES];
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c index 417f15c..fdb860d 100644 --- a/av1/encoder/rd.c +++ b/av1/encoder/rd.c
@@ -457,10 +457,6 @@ cpi->drl_mode_cost0[i][0] = av1_cost_bit(cm->fc->drl_prob[i], 0); cpi->drl_mode_cost0[i][1] = av1_cost_bit(cm->fc->drl_prob[i], 1); } -#if CONFIG_EXT_INTER - cpi->new2mv_mode_cost[0] = av1_cost_bit(cm->fc->new2mv_prob, 0); - cpi->new2mv_mode_cost[1] = av1_cost_bit(cm->fc->new2mv_prob, 1); -#endif // CONFIG_EXT_INTER #else for (i = 0; i < INTER_MODE_CONTEXTS; ++i) av1_cost_tokens((int *)cpi->inter_mode_cost[i], @@ -930,17 +926,6 @@ rd->thresh_mult[THR_NEARA] += 1000; rd->thresh_mult[THR_NEARG] += 1000; -#if CONFIG_EXT_INTER - rd->thresh_mult[THR_NEWFROMNEARMV] += 1000; -#if CONFIG_EXT_REFS - rd->thresh_mult[THR_NEWFROMNEARL2] += 1000; - rd->thresh_mult[THR_NEWFROMNEARL3] += 1000; - rd->thresh_mult[THR_NEWFROMNEARB] += 1000; -#endif // CONFIG_EXT_REFS - rd->thresh_mult[THR_NEWFROMNEARA] += 1000; - rd->thresh_mult[THR_NEWFROMNEARG] += 1000; -#endif // CONFIG_EXT_INTER - rd->thresh_mult[THR_ZEROMV] += 2000; #if CONFIG_EXT_REFS rd->thresh_mult[THR_ZEROL2] += 2000;
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h index 35093e2d..6285d47 100644 --- a/av1/encoder/rd.h +++ b/av1/encoder/rd.h
@@ -85,17 +85,6 @@ THR_NEARA, THR_NEARG, -#if CONFIG_EXT_INTER - THR_NEWFROMNEARMV, -#if CONFIG_EXT_REFS - THR_NEWFROMNEARL2, - THR_NEWFROMNEARL3, - THR_NEWFROMNEARB, -#endif // CONFIG_EXT_REFS - THR_NEWFROMNEARA, - THR_NEWFROMNEARG, -#endif // CONFIG_EXT_INTER - THR_ZEROMV, #if CONFIG_EXT_REFS THR_ZEROL2,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 3fa9302..bb61c94 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -173,17 +173,6 @@ { NEARMV, { ALTREF_FRAME, NONE_FRAME } }, { NEARMV, { GOLDEN_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_INTER - { NEWFROMNEARMV, { LAST_FRAME, NONE_FRAME } }, -#if CONFIG_EXT_REFS - { NEWFROMNEARMV, { LAST2_FRAME, NONE_FRAME } }, - { NEWFROMNEARMV, { LAST3_FRAME, NONE_FRAME } }, - { NEWFROMNEARMV, { BWDREF_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_REFS - { NEWFROMNEARMV, { ALTREF_FRAME, NONE_FRAME } }, - { NEWFROMNEARMV, { GOLDEN_FRAME, NONE_FRAME } }, -#endif // CONFIG_EXT_INTER - { ZEROMV, { LAST_FRAME, NONE_FRAME } }, #if CONFIG_EXT_REFS { ZEROMV, { LAST2_FRAME, NONE_FRAME } }, @@ -4925,15 +4914,11 @@ return cpi ->inter_compound_mode_cost[mode_context][INTER_COMPOUND_OFFSET(mode)]; } else { - if (mode == NEWMV || mode == NEWFROMNEARMV) { + if (mode == NEWMV) { #else if (mode == NEWMV) { #endif // CONFIG_EXT_INTER mode_cost = cpi->newmv_mode_cost[mode_ctx][0]; -#if CONFIG_EXT_INTER - if (!is_compound) - mode_cost += cpi->new2mv_mode_cost[mode == NEWFROMNEARMV]; -#endif // CONFIG_EXT_INTER return mode_cost; } else { mode_cost = cpi->newmv_mode_cost[mode_ctx][1]; @@ -5011,11 +4996,7 @@ (void)mi_col; switch (mode) { - case NEWMV: -#if CONFIG_EXT_INTER - case NEWFROMNEARMV: -#endif // CONFIG_EXT_INTER - this_mv[0].as_int = seg_mvs[mbmi->ref_frame[0]].as_int; + case NEWMV: this_mv[0].as_int = seg_mvs[mbmi->ref_frame[0]].as_int; #if CONFIG_EXT_INTER if (!cpi->common.allow_high_precision_mv) lower_mv_precision(&this_mv[0].as_mv, 0); @@ -5749,12 +5730,9 @@ const AV1_COMP *const cpi, MACROBLOCK *x, int_mv *best_ref_mv, int_mv *second_best_ref_mv, int64_t best_rd, int *returntotrate, int *returnyrate, int64_t *returndistortion, int *skippable, int64_t *psse, - int mvthresh, + int mvthresh, int_mv seg_mvs[4][TOTAL_REFS_PER_FRAME], #if CONFIG_EXT_INTER - int_mv seg_mvs[4][2][TOTAL_REFS_PER_FRAME], int_mv compound_seg_newmvs[4][2], -#else - int_mv seg_mvs[4][TOTAL_REFS_PER_FRAME], #endif // CONFIG_EXT_INTER BEST_SEG_INFO *bsi_buf, int filter_idx, int mi_row, int mi_col) { BEST_SEG_INFO *bsi = bsi_buf + filter_idx; @@ -5846,7 +5824,6 @@ uint8_t ref_mv_count[2]; #endif // CONFIG_REF_MV #if CONFIG_EXT_INTER - int mv_idx; int_mv ref_mvs_sub8x8[2][2]; #endif // CONFIG_EXT_INTER #if CONFIG_PVQ @@ -5935,8 +5912,7 @@ // search for the best motion vector on this segment #if CONFIG_EXT_INTER for (this_mode = (has_second_rf ? NEAREST_NEARESTMV : NEARESTMV); - this_mode <= (has_second_rf ? NEW_NEWMV : NEWFROMNEARMV); - ++this_mode) + this_mode <= (has_second_rf ? NEW_NEWMV : NEWMV); ++this_mode) #else for (this_mode = NEARESTMV; this_mode <= NEWMV; ++this_mode) #endif // CONFIG_EXT_INTER @@ -5949,10 +5925,8 @@ mode_idx = INTER_OFFSET(this_mode); #if CONFIG_EXT_INTER - mv_idx = (this_mode == NEWFROMNEARMV) ? 1 : 0; - for (ref = 0; ref < 1 + has_second_rf; ++ref) - bsi->ref_mv[ref]->as_int = ref_mvs_sub8x8[mv_idx][ref].as_int; + bsi->ref_mv[ref]->as_int = ref_mvs_sub8x8[0][ref].as_int; #endif // CONFIG_EXT_INTER bsi->rdstat[index][mode_idx].brdcost = INT64_MAX; if (!(inter_mode_mask & (1 << this_mode))) continue; @@ -6042,7 +6016,7 @@ if (!has_second_rf && #if CONFIG_EXT_INTER have_newmv_in_inter_mode(this_mode) && - (seg_mvs[index][mv_idx][mbmi->ref_frame[0]].as_int == INVALID_MV) + (seg_mvs[index][mbmi->ref_frame[0]].as_int == INVALID_MV) #else this_mode == NEWMV && (seg_mvs[index][mbmi->ref_frame[0]].as_int == INVALID_MV || @@ -6202,7 +6176,7 @@ // save motion search result for use in compound prediction #if CONFIG_EXT_INTER - seg_mvs[index][mv_idx][mbmi->ref_frame[0]].as_mv = x->best_mv.as_mv; + seg_mvs[index][mbmi->ref_frame[0]].as_mv = x->best_mv.as_mv; #else seg_mvs[index][mbmi->ref_frame[0]].as_mv = x->best_mv.as_mv; #endif // CONFIG_EXT_INTER @@ -6223,8 +6197,8 @@ if (has_second_rf) { #if CONFIG_EXT_INTER - if (seg_mvs[index][mv_idx][mbmi->ref_frame[1]].as_int == INVALID_MV || - seg_mvs[index][mv_idx][mbmi->ref_frame[0]].as_int == INVALID_MV) + if (seg_mvs[index][mbmi->ref_frame[1]].as_int == INVALID_MV || + seg_mvs[index][mbmi->ref_frame[0]].as_int == INVALID_MV) #else if (seg_mvs[index][mbmi->ref_frame[1]].as_int == INVALID_MV || seg_mvs[index][mbmi->ref_frame[0]].as_int == INVALID_MV) @@ -6255,11 +6229,9 @@ joint_motion_search(cpi, x, bsize, frame_mv[this_mode], mi_row, mi_col, #if CONFIG_EXT_INTER - bsi->ref_mv, seg_mvs[index][mv_idx], -#else - seg_mvs[index], + bsi->ref_mv, #endif // CONFIG_EXT_INTER - &rate_mv, index); + seg_mvs[index], &rate_mv, index); #if CONFIG_EXT_INTER compound_seg_newmvs[index][0].as_int = frame_mv[this_mode][mbmi->ref_frame[0]].as_int; @@ -6278,10 +6250,9 @@ bsi->rdstat[index][mode_idx].brate = set_and_cost_bmi_mvs( cpi, x, xd, index, this_mode, mode_mv[this_mode], frame_mv, -#if CONFIG_EXT_INTER - seg_mvs[index][mv_idx], compound_seg_newmvs[index], -#else seg_mvs[index], +#if CONFIG_EXT_INTER + compound_seg_newmvs[index], #endif // CONFIG_EXT_INTER bsi->ref_mv, x->nmvjointcost, x->mvcost, mi_row, mi_col); @@ -6497,19 +6468,17 @@ #endif // CONFIG_PVQ #if CONFIG_EXT_INTER - mv_idx = (mode_selected == NEWFROMNEARMV) ? 1 : 0; bsi->ref_mv[0]->as_int = bsi->rdstat[index][mode_idx].ref_mv[0].as_int; if (has_second_rf) bsi->ref_mv[1]->as_int = bsi->rdstat[index][mode_idx].ref_mv[1].as_int; #endif // CONFIG_EXT_INTER - set_and_cost_bmi_mvs( - cpi, x, xd, index, mode_selected, mode_mv[mode_selected], frame_mv, + set_and_cost_bmi_mvs(cpi, x, xd, index, mode_selected, + mode_mv[mode_selected], frame_mv, seg_mvs[index], #if CONFIG_EXT_INTER - seg_mvs[index][mv_idx], compound_seg_newmvs[index], -#else - seg_mvs[index], + compound_seg_newmvs[index], #endif // CONFIG_EXT_INTER - bsi->ref_mv, x->nmvjointcost, x->mvcost, mi_row, mi_col); + bsi->ref_mv, x->nmvjointcost, x->mvcost, mi_row, + mi_col); br += bsi->rdstat[index][mode_idx].brate; bd += bsi->rdstat[index][mode_idx].bdist; @@ -6871,7 +6840,7 @@ static void single_motion_search(const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mi_row, int mi_col, #if CONFIG_EXT_INTER - int ref_idx, int mv_idx, + int ref_idx, #endif // CONFIG_EXT_INTER int *rate_mv) { MACROBLOCKD *xd = &x->e_mbd; @@ -6884,12 +6853,11 @@ MV mvp_full; #if CONFIG_EXT_INTER int ref = mbmi->ref_frame[ref_idx]; - MV ref_mv = x->mbmi_ext->ref_mvs[ref][mv_idx].as_mv; #else int ref = mbmi->ref_frame[0]; - MV ref_mv = x->mbmi_ext->ref_mvs[ref][0].as_mv; int ref_idx = 0; #endif // CONFIG_EXT_INTER + MV ref_mv = x->mbmi_ext->ref_mvs[ref][0].as_mv; int tmp_col_min = x->mv_col_min; int tmp_col_max = x->mv_col_max; @@ -7115,8 +7083,7 @@ static void do_masked_motion_search(const AV1_COMP *const cpi, MACROBLOCK *x, const uint8_t *mask, int mask_stride, BLOCK_SIZE bsize, int mi_row, int mi_col, - int_mv *tmp_mv, int *rate_mv, int ref_idx, - int mv_idx) { + int_mv *tmp_mv, int *rate_mv, int ref_idx) { MACROBLOCKD *xd = &x->e_mbd; const AV1_COMMON *cm = &cpi->common; MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; @@ -7126,7 +7093,7 @@ int sadpb = x->sadperbit16; MV mvp_full; int ref = mbmi->ref_frame[ref_idx]; - MV ref_mv = x->mbmi_ext->ref_mvs[ref][mv_idx].as_mv; + MV ref_mv = x->mbmi_ext->ref_mvs[ref][0].as_mv; int tmp_col_min = x->mv_col_min; int tmp_col_max = x->mv_col_max; @@ -7244,8 +7211,7 @@ static void do_masked_motion_search_indexed( const AV1_COMP *const cpi, MACROBLOCK *x, const INTERINTER_COMPOUND_DATA *const comp_data, BLOCK_SIZE bsize, - int mi_row, int mi_col, int_mv *tmp_mv, int *rate_mv, int mv_idx[2], - int which) { + int mi_row, int mi_col, int_mv *tmp_mv, int *rate_mv, int which) { // NOTE: which values: 0 - 0 only, 1 - 1 only, 2 - both MACROBLOCKD *xd = &x->e_mbd; MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; @@ -7257,7 +7223,7 @@ if (which == 0 || which == 2) do_masked_motion_search(cpi, x, mask, mask_stride, bsize, mi_row, mi_col, - &tmp_mv[0], &rate_mv[0], 0, mv_idx[0]); + &tmp_mv[0], &rate_mv[0], 0); if (which == 1 || which == 2) { // get the negative mask @@ -7270,7 +7236,7 @@ mask = av1_get_compound_type_mask_inverse(comp_data, sb_type); #endif // CONFIG_COMPOUND_SEGMENT do_masked_motion_search(cpi, x, mask, mask_stride, bsize, mi_row, mi_col, - &tmp_mv[1], &rate_mv[1], 1, mv_idx[1]); + &tmp_mv[1], &rate_mv[1], 1); } } #endif // CONFIG_EXT_INTER @@ -7377,9 +7343,7 @@ if (xd->left_available) lf = xd->mi[-1]->mbmi.interp_filter; #if CONFIG_EXT_INTER - if ((this_mode != NEWMV && this_mode != NEWFROMNEARMV && - this_mode != NEW_NEWMV) || - (af == lf)) + if ((this_mode != NEWMV && this_mode != NEW_NEWMV) || (af == lf)) #else if ((this_mode != NEWMV) || (af == lf)) #endif // CONFIG_EXT_INTER @@ -7746,25 +7710,19 @@ int_mv tmp_mv[2]; int rate_mvs[2], tmp_rate_mv = 0; if (this_mode == NEW_NEWMV) { - int mv_idxs[2] = { 0, 0 }; do_masked_motion_search_indexed(cpi, x, &mbmi->interinter_compound_data, - bsize, mi_row, mi_col, tmp_mv, rate_mvs, - mv_idxs, 2); + bsize, mi_row, mi_col, tmp_mv, rate_mvs, 2); tmp_rate_mv = rate_mvs[0] + rate_mvs[1]; mbmi->mv[0].as_int = tmp_mv[0].as_int; mbmi->mv[1].as_int = tmp_mv[1].as_int; } else if (this_mode == NEW_NEARESTMV || this_mode == NEW_NEARMV) { - int mv_idxs[2] = { 0, 0 }; do_masked_motion_search_indexed(cpi, x, &mbmi->interinter_compound_data, - bsize, mi_row, mi_col, tmp_mv, rate_mvs, - mv_idxs, 0); + bsize, mi_row, mi_col, tmp_mv, rate_mvs, 0); tmp_rate_mv = rate_mvs[0]; mbmi->mv[0].as_int = tmp_mv[0].as_int; } else if (this_mode == NEAREST_NEWMV || this_mode == NEAR_NEWMV) { - int mv_idxs[2] = { 0, 0 }; do_masked_motion_search_indexed(cpi, x, &mbmi->interinter_compound_data, - bsize, mi_row, mi_col, tmp_mv, rate_mvs, - mv_idxs, 1); + bsize, mi_row, mi_col, tmp_mv, rate_mvs, 1); tmp_rate_mv = rate_mvs[1]; mbmi->mv[1].as_int = tmp_mv[1].as_int; } @@ -7904,21 +7862,17 @@ uint8_t *left_pred_buf[MAX_MB_PLANE]; int left_pred_stride[MAX_MB_PLANE]; #endif // CONFIG_MOTION_VAR + int_mv *single_newmv; #if CONFIG_EXT_INTER // Pointer to array of motion vectors to use for each ref and their rates // Should point to first of 2 arrays in 2D array - int_mv (*single_newmvs)[TOTAL_REFS_PER_FRAME]; - int (*single_newmvs_rate)[TOTAL_REFS_PER_FRAME]; + int *single_newmv_rate; // Pointers costs of compound inter-intra and inter-inter predictions int *compmode_interintra_cost; int *compmode_interinter_cost; // Pointer to array of predicted rate-distortion // Should point to first of 2 arrays in 2D array int64_t (*modelled_rd)[TOTAL_REFS_PER_FRAME]; -#else // CONFIG_EXT_INTER - // The result motion vector for each ref from the single prediction mode - // it is a local variable of handle_inter_mode if CONFIG_EXT_INTER - int_mv *single_newmv; #endif // CONFIG_EXT_INTER InterpFilter single_filter[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; } HandleInterModeArgs; @@ -7935,7 +7889,6 @@ const int is_comp_pred = has_second_ref(mbmi); const PREDICTION_MODE this_mode = mbmi->mode; #if CONFIG_EXT_INTER - const int mv_idx = (this_mode == NEWFROMNEARMV) ? 1 : 0; const int is_comp_interintra_pred = (mbmi->ref_frame[1] == INTRA_FRAME); #endif // CONFIG_EXT_INTER int_mv *const frame_mv = mode_mv[this_mode]; @@ -7948,8 +7901,7 @@ if (is_comp_pred) { #if CONFIG_EXT_INTER for (i = 0; i < 2; ++i) { - single_newmv[refs[i]].as_int = - args->single_newmvs[mv_idx][refs[i]].as_int; + single_newmv[refs[i]].as_int = args->single_newmv[refs[i]].as_int; } if (this_mode == NEW_NEWMV) { @@ -8004,12 +7956,12 @@ } else { #if CONFIG_EXT_INTER if (is_comp_interintra_pred) { - x->best_mv = args->single_newmvs[mv_idx][refs[0]]; - *rate_mv = args->single_newmvs_rate[mv_idx][refs[0]]; + x->best_mv = args->single_newmv[refs[0]]; + *rate_mv = args->single_newmv_rate[refs[0]]; } else { - single_motion_search(cpi, x, bsize, mi_row, mi_col, 0, mv_idx, rate_mv); - args->single_newmvs[mv_idx][refs[0]] = x->best_mv; - args->single_newmvs_rate[mv_idx][refs[0]] = *rate_mv; + single_motion_search(cpi, x, bsize, mi_row, mi_col, 0, rate_mv); + args->single_newmv[refs[0]] = x->best_mv; + args->single_newmv_rate[refs[0]] = *rate_mv; } #else single_motion_search(cpi, x, bsize, mi_row, mi_col, rate_mv); @@ -8190,7 +8142,7 @@ (void)this_mode; #if CONFIG_EXT_INTER && CONFIG_MOTION_VAR - int mv_idx = (this_mode == NEWFROMNEARMV) ? 1 : 0; + int mv_idx = 0; #endif // CONFIG_EXT_INTER && CONFIG_MOTION_VAR #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION @@ -8568,7 +8520,6 @@ #if CONFIG_EXT_INTER int pred_exists = 1; const int bw = block_size_wide[bsize]; - int mv_idx = (this_mode == NEWFROMNEARMV) ? 1 : 0; int_mv single_newmv[TOTAL_REFS_PER_FRAME]; const unsigned int *const interintra_mode_cost = cpi->interintra_mode_cost[size_group_lookup[bsize]]; @@ -8661,7 +8612,7 @@ cur_mv[i] = frame_mv[refs[i]]; // Clip "next_nearest" so that it does not extend to far out of image #if CONFIG_EXT_INTER - if (this_mode != NEWMV && this_mode != NEWFROMNEARMV) + if (this_mode != NEWMV) #else if (this_mode != NEWMV) #endif // CONFIG_EXT_INTER @@ -9027,7 +8978,7 @@ const uint8_t *mask = av1_get_contiguous_soft_mask( mbmi->interintra_wedge_index, 1, bsize); do_masked_motion_search(cpi, x, mask, bw, bsize, mi_row, mi_col, - &tmp_mv, &tmp_rate_mv, 0, mv_idx); + &tmp_mv, &tmp_rate_mv, 0); mbmi->mv[0].as_int = tmp_mv.as_int; av1_build_inter_predictors_sby(xd, mi_row, mi_col, &orig_dst, bsize); model_rd_for_sb(cpi, bsize, x, xd, 0, 0, &rate_sum, &dist_sum, @@ -9532,12 +9483,10 @@ int comp_pred, i, k; int_mv frame_mv[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; struct buf_2d yv12_mb[TOTAL_REFS_PER_FRAME][MAX_MB_PLANE]; -#if CONFIG_EXT_INTER - int_mv single_newmvs[2][TOTAL_REFS_PER_FRAME] = { { { 0 } }, { { 0 } } }; - int single_newmvs_rate[2][TOTAL_REFS_PER_FRAME] = { { 0 }, { 0 } }; - int64_t modelled_rd[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; -#else int_mv single_newmv[TOTAL_REFS_PER_FRAME] = { { 0 } }; +#if CONFIG_EXT_INTER + int single_newmv_rate[TOTAL_REFS_PER_FRAME] = { 0 }; + int64_t modelled_rd[MB_MODE_COUNT][TOTAL_REFS_PER_FRAME]; #endif // CONFIG_EXT_INTER static const int flag_list[TOTAL_REFS_PER_FRAME] = { 0, @@ -9730,7 +9679,6 @@ frame_mv[ZEROMV][ref_frame].as_int = 0; #endif // CONFIG_GLOBAL_MOTION #if CONFIG_EXT_INTER - frame_mv[NEWFROMNEARMV][ref_frame].as_int = INVALID_MV; frame_mv[NEW_NEWMV][ref_frame].as_int = INVALID_MV; #if CONFIG_GLOBAL_MOTION frame_mv[ZERO_ZEROMV][ref_frame].as_int = @@ -10359,15 +10307,13 @@ av1_init_rd_stats(&rd_stats); rd_stats.rate = rate2; -// Point to variables that are maintained between loop iterations + // Point to variables that are maintained between loop iterations + args.single_newmv = single_newmv; #if CONFIG_EXT_INTER - args.single_newmvs = single_newmvs; - args.single_newmvs_rate = single_newmvs_rate; + args.single_newmv_rate = single_newmv_rate; args.compmode_interintra_cost = &compmode_interintra_cost; args.compmode_interinter_cost = &compmode_interinter_cost; args.modelled_rd = modelled_rd; -#else - args.single_newmv = single_newmv; #endif // CONFIG_EXT_INTER this_rd = handle_inter_mode(cpi, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv, &disable_skip, frame_mv, @@ -10477,39 +10423,31 @@ clamp_mv2(&cur_mv.as_mv, xd); if (!mv_check_bounds(x, &cur_mv.as_mv)) { -#if CONFIG_EXT_INTER - int_mv dummy_single_newmvs[2][TOTAL_REFS_PER_FRAME] = { { { 0 } }, - { { 0 } } }; - int dummy_single_newmvs_rate[2][TOTAL_REFS_PER_FRAME] = { { 0 }, - { 0 } }; -#else int_mv dummy_single_newmv[TOTAL_REFS_PER_FRAME] = { { 0 } }; +#if CONFIG_EXT_INTER + int dummy_single_newmv_rate[TOTAL_REFS_PER_FRAME] = { 0 }; #endif // CONFIG_EXT_INTER frame_mv[NEARMV][ref_frame] = cur_mv; av1_init_rd_stats(&tmp_rd_stats); -// Point to variables that are not maintained between iterations + // Point to variables that are not maintained between iterations + args.single_newmv = dummy_single_newmv; #if CONFIG_EXT_INTER - args.single_newmvs = dummy_single_newmvs; - args.single_newmvs_rate = dummy_single_newmvs_rate; + args.single_newmv_rate = dummy_single_newmv_rate; args.compmode_interintra_cost = &tmp_compmode_interintra_cost; args.compmode_interinter_cost = &tmp_compmode_interinter_cost; args.modelled_rd = NULL; -#else - args.single_newmv = dummy_single_newmv; #endif // CONFIG_EXT_INTER tmp_alt_rd = handle_inter_mode( cpi, x, bsize, &tmp_rd_stats, &tmp_rd_stats_y, &tmp_rd_stats_uv, &dummy_disable_skip, frame_mv, mi_row, mi_col, &args, best_rd); -// Prevent pointers from escaping local scope + // Prevent pointers from escaping local scope + args.single_newmv = NULL; #if CONFIG_EXT_INTER - args.single_newmvs = NULL; - args.single_newmvs_rate = NULL; + args.single_newmv_rate = NULL; args.compmode_interintra_cost = NULL; args.compmode_interinter_cost = NULL; -#else - args.single_newmv = NULL; #endif // CONFIG_EXT_INTER } @@ -11051,7 +10989,7 @@ // are corrected. if (best_mbmode.mode == NEWMV #if CONFIG_EXT_INTER - || best_mbmode.mode == NEWFROMNEARMV || best_mbmode.mode == NEW_NEWMV + || best_mbmode.mode == NEW_NEWMV #endif // CONFIG_EXT_INTER ) { const MV_REFERENCE_FRAME refs[2] = { best_mbmode.ref_frame[0], @@ -11580,11 +11518,7 @@ PREDICTION_MODE mode_uv = DC_PRED; const int intra_cost_penalty = av1_get_intra_cost_penalty( cm->base_qindex, cm->y_dc_delta_q, cm->bit_depth); -#if CONFIG_EXT_INTER - int_mv seg_mvs[4][2][TOTAL_REFS_PER_FRAME]; -#else int_mv seg_mvs[4][TOTAL_REFS_PER_FRAME]; -#endif // CONFIG_EXT_INTER b_mode_info best_bmodes[4]; int best_skip2 = 0; int ref_frame_skip_mask[2] = { 0 }; @@ -11619,16 +11553,8 @@ for (i = 0; i < 4; i++) { int j; -#if CONFIG_EXT_INTER - int k; - - for (k = 0; k < 2; k++) - for (j = 0; j < TOTAL_REFS_PER_FRAME; j++) - seg_mvs[i][k][j].as_int = INVALID_MV; -#else for (j = 0; j < TOTAL_REFS_PER_FRAME; j++) seg_mvs[i][j].as_int = INVALID_MV; -#endif // CONFIG_EXT_INTER } estimate_ref_frame_costs(cm, xd, segment_id, ref_costs_single, ref_costs_comp, @@ -11656,7 +11582,6 @@ } frame_mv[NEWMV][ref_frame].as_int = INVALID_MV; #if CONFIG_EXT_INTER - frame_mv[NEWFROMNEARMV][ref_frame].as_int = INVALID_MV; #endif // CONFIG_EXT_INTER frame_mv[ZEROMV][ref_frame].as_int = 0; }
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index 8195fa4..5a1d83c 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -36,15 +36,14 @@ #if CONFIG_EXT_INTER enum { INTER_ALL = (1 << NEARESTMV) | (1 << NEARMV) | (1 << ZEROMV) | (1 << NEWMV) | - (1 << NEWFROMNEARMV) | (1 << NEAREST_NEARESTMV) | - (1 << NEAR_NEARMV) | (1 << NEAREST_NEARMV) | - (1 << NEAR_NEARESTMV) | (1 << NEW_NEWMV) | (1 << NEAREST_NEWMV) | - (1 << NEAR_NEWMV) | (1 << NEW_NEARMV) | (1 << NEW_NEARESTMV) | - (1 << ZERO_ZEROMV), + (1 << NEAREST_NEARESTMV) | (1 << NEAR_NEARMV) | + (1 << NEAREST_NEARMV) | (1 << NEAR_NEARESTMV) | (1 << NEW_NEWMV) | + (1 << NEAREST_NEWMV) | (1 << NEAR_NEWMV) | (1 << NEW_NEARMV) | + (1 << NEW_NEARESTMV) | (1 << ZERO_ZEROMV), INTER_NEAREST = (1 << NEARESTMV) | (1 << NEAREST_NEARESTMV) | (1 << NEAREST_NEARMV) | (1 << NEAR_NEARESTMV) | (1 << NEW_NEARESTMV) | (1 << NEAREST_NEWMV), - INTER_NEAREST_NEW = (1 << NEARESTMV) | (1 << NEWMV) | (1 << NEWFROMNEARMV) | + INTER_NEAREST_NEW = (1 << NEARESTMV) | (1 << NEWMV) | (1 << NEAREST_NEARESTMV) | (1 << NEW_NEWMV) | (1 << NEAR_NEARESTMV) | (1 << NEAREST_NEARMV) | (1 << NEW_NEARESTMV) | (1 << NEAREST_NEWMV) | @@ -54,12 +53,12 @@ (1 << NEAREST_NEARMV) | (1 << NEAR_NEARESTMV) | (1 << NEAREST_NEWMV) | (1 << NEW_NEARESTMV), INTER_NEAREST_NEW_ZERO = - (1 << NEARESTMV) | (1 << ZEROMV) | (1 << NEWMV) | (1 << NEWFROMNEARMV) | + (1 << NEARESTMV) | (1 << ZEROMV) | (1 << NEWMV) | (1 << NEAREST_NEARESTMV) | (1 << ZERO_ZEROMV) | (1 << NEW_NEWMV) | (1 << NEAREST_NEARMV) | (1 << NEAR_NEARESTMV) | (1 << NEW_NEARESTMV) | (1 << NEAREST_NEWMV) | (1 << NEW_NEARMV) | (1 << NEAR_NEWMV), INTER_NEAREST_NEAR_NEW = - (1 << NEARESTMV) | (1 << NEARMV) | (1 << NEWMV) | (1 << NEWFROMNEARMV) | + (1 << NEARESTMV) | (1 << NEARMV) | (1 << NEWMV) | (1 << NEAREST_NEARESTMV) | (1 << NEW_NEWMV) | (1 << NEAREST_NEARMV) | (1 << NEAR_NEARESTMV) | (1 << NEW_NEARESTMV) | (1 << NEAREST_NEWMV) | (1 << NEW_NEARMV) | (1 << NEAR_NEWMV) | (1 << NEAR_NEARMV),