Commit 62fe78e5 authored by Yunqing Wang's avatar Yunqing Wang
Browse files

Remove ext-warped-motion part2

Part2 of ext-warped-motion experiment was removed.

Change-Id: I1b7aebad1fd7cb60d92c3ce959d5101228addae2
parent 6396d3ac
......@@ -278,9 +278,6 @@ typedef struct MB_MODE_INFO {
int wedge_sign;
SEG_MASK_TYPE mask_type;
MOTION_MODE motion_mode;
#if CONFIG_EXT_WARPED_MOTION
int wm_ctx;
#endif // CONFIG_EXT_WARPED_MOTION
int overlappable_neighbors[2];
int_mv mv[2];
int_mv pred_mv[2];
......
......@@ -804,7 +804,6 @@ static const aom_cdf_prob
#endif // CONFIG_EXT_PARTITION
};
#if !CONFIG_EXT_WARPED_MOTION
static const aom_cdf_prob
default_motion_mode_cdf[BLOCK_SIZES_ALL][CDF_SIZE(MOTION_MODES)] = {
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(16384, 24576) },
......@@ -825,69 +824,6 @@ static const aom_cdf_prob
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
#endif
};
#else
static const aom_cdf_prob
default_motion_mode_cdf[MOTION_MODE_CTX][BLOCK_SIZES_ALL][CDF_SIZE(
MOTION_MODES)] = {
{
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(16384, 24576) },
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(7936, 19091) },
{ AOM_CDF3(4991, 19205) }, { AOM_CDF3(4992, 19314) },
{ AOM_CDF3(15104, 21590) }, { AOM_CDF3(9855, 21043) },
{ AOM_CDF3(12800, 22238) }, { AOM_CDF3(24320, 26498) },
{ AOM_CDF3(26496, 28995) }, { AOM_CDF3(25216, 28166) },
{ AOM_CDF3(30592, 31238) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
{ AOM_CDF3(32256, 32656) },
#endif
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
#endif
},
{
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(16384, 24576) },
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(7936, 19091) },
{ AOM_CDF3(4991, 19205) }, { AOM_CDF3(4992, 19314) },
{ AOM_CDF3(15104, 21590) }, { AOM_CDF3(9855, 21043) },
{ AOM_CDF3(12800, 22238) }, { AOM_CDF3(24320, 26498) },
{ AOM_CDF3(26496, 28995) }, { AOM_CDF3(25216, 28166) },
{ AOM_CDF3(30592, 31238) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
{ AOM_CDF3(32256, 32656) },
#endif
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
#endif
},
{
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(16384, 24576) },
{ AOM_CDF3(16384, 24576) }, { AOM_CDF3(7936, 19091) },
{ AOM_CDF3(4991, 19205) }, { AOM_CDF3(4992, 19314) },
{ AOM_CDF3(15104, 21590) }, { AOM_CDF3(9855, 21043) },
{ AOM_CDF3(12800, 22238) }, { AOM_CDF3(24320, 26498) },
{ AOM_CDF3(26496, 28995) }, { AOM_CDF3(25216, 28166) },
{ AOM_CDF3(30592, 31238) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
{ AOM_CDF3(32256, 32656) },
#endif
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
{ AOM_CDF3(32640, 32740) }, { AOM_CDF3(32640, 32740) },
#if CONFIG_EXT_PARTITION
{ AOM_CDF3(32256, 32656) }, { AOM_CDF3(32256, 32656) },
#endif
},
};
#endif // CONFIG_EXT_WARPED_MOTION
static const aom_cdf_prob default_obmc_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)] = {
{ AOM_CDF2(128 * 128) }, { AOM_CDF2(128 * 128) }, { AOM_CDF2(128 * 128) },
......
......@@ -144,12 +144,7 @@ typedef struct frame_contexts {
aom_cdf_prob wedge_interintra_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)];
aom_cdf_prob interintra_mode_cdf[BLOCK_SIZE_GROUPS]
[CDF_SIZE(INTERINTRA_MODES)];
#if CONFIG_EXT_WARPED_MOTION
aom_cdf_prob motion_mode_cdf[MOTION_MODE_CTX][BLOCK_SIZES_ALL]
[CDF_SIZE(MOTION_MODES)];
#else
aom_cdf_prob motion_mode_cdf[BLOCK_SIZES_ALL][CDF_SIZE(MOTION_MODES)];
#endif // CONFIG_EXT_WARPED_MOTION
aom_cdf_prob obmc_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)];
aom_prob comp_inter_prob[COMP_INTER_CONTEXTS];
aom_cdf_prob palette_y_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)];
......@@ -308,12 +303,7 @@ typedef struct FRAME_COUNTS {
#else
unsigned int compound_interinter[BLOCK_SIZES_ALL][COMPOUND_TYPES];
#endif // CONFIG_JNT_COMP
#if CONFIG_EXT_WARPED_MOTION
unsigned int motion_mode[MOTION_MODE_CTX][BLOCK_SIZES_ALL][MOTION_MODES];
#else
unsigned int motion_mode[BLOCK_SIZES_ALL][MOTION_MODES];
#endif // CONFIG_EXT_WARPED_MOTION
unsigned int obmc[BLOCK_SIZES_ALL][2];
unsigned int intra_inter[INTRA_INTER_CONTEXTS][2];
unsigned int comp_inter[COMP_INTER_CONTEXTS][2];
......
......@@ -515,10 +515,6 @@ typedef enum ATTRIBUTE_PACKED {
MOTION_MODES
} MOTION_MODE;
#if CONFIG_EXT_WARPED_MOTION
#define MOTION_MODE_CTX 3
#endif // CONFIG_EXT_WARPED_MOTION
typedef enum ATTRIBUTE_PACKED {
II_DC_PRED,
II_V_PRED,
......
......@@ -72,12 +72,12 @@ static uint8_t add_ref_mv_candidate(
#if USE_CUR_GM_REFMV
int_mv *gm_mv_candidates, const WarpedMotionParams *gm_params,
#endif // USE_CUR_GM_REFMV
int col, int weight,
int col, int weight
#if CONFIG_AMVR
int is_integer,
,
int is_integer
#endif
BLOCK_SIZE bsize, int mi_row, int mi_col, int subsampling_x,
int subsampling_y, int do_warping) {
) {
#if CONFIG_INTRABC
if (!is_inter_block(candidate)) return 0;
#endif // CONFIG_INTRABC
......@@ -85,74 +85,23 @@ static uint8_t add_ref_mv_candidate(
int newmv_count = 0;
assert(weight % 2 == 0);
(void)ref_match_count;
#if !CONFIG_EXT_WARPED_MOTION
(void)bsize;
(void)mi_row;
(void)mi_col;
(void)subsampling_x;
(void)subsampling_y;
(void)do_warping;
#endif // CONFIG_EXT_WARPED_MOTION
if (rf[1] == NONE_FRAME) {
// single reference frame
for (ref = 0; ref < 2; ++ref) {
if (candidate->ref_frame[ref] == rf[0]) {
int_mv this_refmv;
#if CONFIG_EXT_WARPED_MOTION
if (candidate->motion_mode == WARPED_CAUSAL && do_warping) {
const WarpedMotionParams wm = candidate->wm_params[0];
const int bw = block_size_wide[bsize];
const int bh = block_size_high[bsize];
int global_offset_c = mi_col * MI_SIZE;
int global_offset_r = mi_row * MI_SIZE;
int cc_offset = bw / 2 - 1;
int cr_offset = bh / 2 - 1;
int xc0 = cc_offset + global_offset_c;
int yc0 = cr_offset + global_offset_r;
int xc1 = xc0 + 1;
int yc1 = yc0 + 1;
int in[4] = { xc0, yc0, xc1, yc1 };
int out[4] = { 0, 0, 0, 0 };
assert(ref == 0);
// For WARPED_CAUSAL, wmtype is always AFFINE.
assert(wm.wmtype == AFFINE);
project_points_affine(wm.wmmat, in, out, 2, 2, 2, subsampling_x,
subsampling_y);
// assert(x_scale == 1024 && y_scale == 1024);
// out[]'s precision is 1/64, adjust xc, yc accordingly.
out[0] -= (xc0 << (3 + SCALING_FCT));
out[1] -= (yc0 << (3 + SCALING_FCT));
out[2] -= (xc1 << (3 + SCALING_FCT));
out[3] -= (yc1 << (3 + SCALING_FCT));
this_refmv.as_mv.col =
ROUND_POWER_OF_TWO_SIGNED(out[0] + out[2], SCALING_FCT + 1);
this_refmv.as_mv.row =
ROUND_POWER_OF_TWO_SIGNED(out[1] + out[3], SCALING_FCT + 1);
#if CONFIG_AMVR
lower_mv_precision(&this_refmv.as_mv, use_hp, is_integer);
#else
lower_mv_precision(&this_refmv.as_mv, use_hp);
#endif
} else {
#endif // CONFIG_EXT_WARPED_MOTION
#if USE_CUR_GM_REFMV
if (is_global_mv_block(candidate_mi, gm_params[rf[0]].wmtype))
this_refmv = gm_mv_candidates[0];
else
if (is_global_mv_block(candidate_mi, gm_params[rf[0]].wmtype))
this_refmv = gm_mv_candidates[0];
else
#endif // USE_CUR_GM_REFMV
this_refmv = get_sub_block_mv(candidate_mi, ref, col);
this_refmv = get_sub_block_mv(candidate_mi, ref, col);
#if CONFIG_AMVR
lower_mv_precision(&this_refmv.as_mv, use_hp, is_integer);
lower_mv_precision(&this_refmv.as_mv, use_hp, is_integer);
#else
lower_mv_precision(&this_refmv.as_mv, use_hp);
#endif // CONFIG_AMVR
#if CONFIG_EXT_WARPED_MOTION
}
#endif // CONFIG_EXT_WARPED_MOTION
for (index = 0; index < *refmv_count; ++index)
if (ref_mv_stack[index].this_mv.as_int == this_refmv.as_int) break;
......@@ -250,7 +199,7 @@ static uint8_t scan_row_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
}
const int use_step_16 = (xd->n8_w >= 16);
MODE_INFO **const candidate_mi0 = xd->mi + row_offset * xd->mi_stride;
const int do_warping = (row_offset == -1);
(void)mi_row;
for (i = 0; i < end_mi;) {
const MODE_INFO *const candidate_mi = candidate_mi0[col_offset + i];
......@@ -280,9 +229,7 @@ static uint8_t scan_row_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
col_offset + i, weight, cm->cur_frame_force_integer_mv,
xd->mi[0]->mbmi.sb_type, mi_row, mi_col, xd->plane[0].subsampling_x,
xd->plane[0].subsampling_y, do_warping);
col_offset + i, weight, cm->cur_frame_force_integer_mv);
#else
newmv_count += add_ref_mv_candidate(
candidate_mi, candidate, rf, refmv_count, ref_match_count, ref_mv_stack,
......@@ -290,8 +237,7 @@ static uint8_t scan_row_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
col_offset + i, weight, xd->mi[0]->mbmi.sb_type, mi_row, mi_col,
xd->plane[0].subsampling_x, xd->plane[0].subsampling_y, do_warping);
col_offset + i, weight);
#endif
i += len;
......@@ -321,7 +267,7 @@ static uint8_t scan_col_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
if (mi_row & 0x01 && xd->n8_h < n8_h_8) --row_offset;
}
const int use_step_16 = (xd->n8_h >= 16);
const int do_warping = (col_offset == -1);
(void)mi_col;
for (i = 0; i < end_mi;) {
const MODE_INFO *const candidate_mi =
......@@ -352,9 +298,7 @@ static uint8_t scan_col_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
col_offset, weight, cm->cur_frame_force_integer_mv,
xd->mi[0]->mbmi.sb_type, mi_row, mi_col, xd->plane[0].subsampling_x,
xd->plane[0].subsampling_y, do_warping);
col_offset, weight, cm->cur_frame_force_integer_mv);
#else
newmv_count += add_ref_mv_candidate(
candidate_mi, candidate, rf, refmv_count, ref_match_count, ref_mv_stack,
......@@ -362,8 +306,7 @@ static uint8_t scan_col_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
col_offset, weight, xd->mi[0]->mbmi.sb_type, mi_row, mi_col,
xd->plane[0].subsampling_x, xd->plane[0].subsampling_y, do_warping);
col_offset, weight);
#endif
i += len;
}
......@@ -383,7 +326,6 @@ static uint8_t scan_blk_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
const TileInfo *const tile = &xd->tile;
POSITION mi_pos;
uint8_t newmv_count = 0;
const int do_warping = 1;
mi_pos.row = row_offset;
mi_pos.col = col_offset;
......@@ -401,9 +343,7 @@ static uint8_t scan_blk_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
mi_pos.col, 2, cm->cur_frame_force_integer_mv, xd->mi[0]->mbmi.sb_type,
mi_row, mi_col, xd->plane[0].subsampling_x, xd->plane[0].subsampling_y,
do_warping);
mi_pos.col, 2, cm->cur_frame_force_integer_mv);
#else
newmv_count += add_ref_mv_candidate(
candidate_mi, candidate, rf, refmv_count, ref_match_count, ref_mv_stack,
......@@ -411,8 +351,7 @@ static uint8_t scan_blk_mbmi(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if USE_CUR_GM_REFMV
gm_mv_candidates, cm->global_motion,
#endif // USE_CUR_GM_REFMV
mi_pos.col, 2, xd->mi[0]->mbmi.sb_type, mi_row, mi_col,
xd->plane[0].subsampling_x, xd->plane[0].subsampling_y, do_warping);
mi_pos.col, 2);
#endif
} // Analyze a single 8x8 block motion information.
......@@ -1730,7 +1669,7 @@ int sortSamples(int *pts_mv, MV *mv, int *pts, int *pts_inref, int len) {
// Note: Samples returned are at 1/8-pel precision
int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
int *pts, int *pts_inref, int *pts_mv, int *pts_wm) {
int *pts, int *pts_inref, int *pts_mv) {
MB_MODE_INFO *const mbmi0 = &(xd->mi[0]->mbmi);
int ref_frame = mbmi0->ref_frame[0];
int up_available = xd->up_available;
......@@ -1760,11 +1699,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, 0, -1, col_offset, 1);
pts_wm[0] = mi_row_offset * xd->mi_stride;
pts_wm[1] = (mbmi->motion_mode == WARPED_CAUSAL)
? (n8_w * mi_size_high[mbmi->sb_type])
: 0;
pts_wm += 2;
pts += 2;
pts_inref += 2;
pts_mv += 2;
......@@ -1784,11 +1718,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, 0, -1, i, 1);
pts_wm[0] = mi_col_offset + mi_row_offset * xd->mi_stride;
pts_wm[1] = (mbmi->motion_mode == WARPED_CAUSAL)
? (n8_w * mi_size_high[mbmi->sb_type])
: 0;
pts_wm += 2;
pts += 2;
pts_inref += 2;
pts_mv += 2;
......@@ -1817,11 +1746,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, row_offset, 1, 0, -1);
pts_wm[0] = mi_col_offset;
pts_wm[1] = (mbmi->motion_mode == WARPED_CAUSAL)
? (n8_h * mi_size_wide[mbmi->sb_type])
: 0;
pts_wm += 2;
pts += 2;
pts_inref += 2;
pts_mv += 2;
......@@ -1841,11 +1765,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, i, 1, 0, -1);
pts_wm[0] = mi_col_offset + mi_row_offset * xd->mi_stride;
pts_wm[1] = (mbmi->motion_mode == WARPED_CAUSAL)
? (n8_h * mi_size_wide[mbmi->sb_type])
: 0;
pts_wm += 2;
pts += 2;
pts_inref += 2;
pts_mv += 2;
......@@ -1868,12 +1787,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, 0, -1, 0, -1);
pts_wm[0] = mi_col_offset + mi_row_offset * xd->mi_stride;
pts_wm[1] =
(mbmi->motion_mode == WARPED_CAUSAL)
? (mi_size_wide[mbmi->sb_type] * mi_size_high[mbmi->sb_type])
: 0;
pts_wm += 2;
pts += 2;
pts_inref += 2;
pts_mv += 2;
......@@ -1898,11 +1811,6 @@ int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
if (mbmi->ref_frame[0] == ref_frame && mbmi->ref_frame[1] == NONE_FRAME) {
record_samples(mbmi, pts, pts_inref, pts_mv, global_offset_r,
global_offset_c, 0, -1, xd->n8_w, 1);
pts_wm[0] = mi_col_offset + mi_row_offset * xd->mi_stride;
pts_wm[1] =
(mbmi->motion_mode == WARPED_CAUSAL)
? (mi_size_wide[mbmi->sb_type] * mi_size_high[mbmi->sb_type])
: 0;
np++;
if (np >= SAMPLES_MAX) return SAMPLES_MAX;
}
......
......@@ -444,7 +444,7 @@ void av1_update_mv_context(const AV1_COMMON *cm, const MACROBLOCKD *xd,
#if CONFIG_EXT_WARPED_MOTION
int sortSamples(int *pts_mv, MV *mv, int *pts, int *pts_inref, int len);
int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
int *pts, int *pts_inref, int *pts_mv, int *pts_wm);
int *pts, int *pts_inref, int *pts_mv);
#else
int findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int mi_row, int mi_col,
int *pts, int *pts_inref);
......
......@@ -36,8 +36,6 @@
// Here force number of samples within SAMPLES_MAX.
#define SAMPLES_MAX (LEAST_SQUARES_SAMPLES_MAX * 2)
#define SAMPLES_ARRAY_SIZE (SAMPLES_MAX * 2)
#define SCALING_FCT 3
#else
#define SAMPLES_ARRAY_SIZE (LEAST_SQUARES_SAMPLES_MAX * 2)
#endif // CONFIG_EXT_WARPED_MOTION
......
......@@ -280,13 +280,8 @@ static void read_drl_idx(FRAME_CONTEXT *ec_ctx, MACROBLOCKD *xd,
}
}
#if CONFIG_EXT_WARPED_MOTION
static MOTION_MODE read_motion_mode(MACROBLOCKD *xd, MODE_INFO *mi,
aom_reader *r, int best) {
#else
static MOTION_MODE read_motion_mode(MACROBLOCKD *xd, MODE_INFO *mi,
aom_reader *r) {
#endif // CONFIG_EXT_WARPED_MOTION
MB_MODE_INFO *mbmi = &mi->mbmi;
#if CONFIG_EXT_SKIP
......@@ -306,24 +301,10 @@ static MOTION_MODE read_motion_mode(MACROBLOCKD *xd, MODE_INFO *mi,
if (counts) ++counts->obmc[mbmi->sb_type][motion_mode];
return (MOTION_MODE)(SIMPLE_TRANSLATION + motion_mode);
} else {
#if CONFIG_EXT_WARPED_MOTION
int wm_ctx = 0;
if (best != -1) {
wm_ctx = 1;
if (mbmi->mode == NEARESTMV) wm_ctx = 2;
}
motion_mode =
aom_read_symbol(r, xd->tile_ctx->motion_mode_cdf[wm_ctx][mbmi->sb_type],
MOTION_MODES, ACCT_STR);
if (counts) ++counts->motion_mode[wm_ctx][mbmi->sb_type][motion_mode];
#else
motion_mode =
aom_read_symbol(r, xd->tile_ctx->motion_mode_cdf[mbmi->sb_type],
MOTION_MODES, ACCT_STR);
if (counts) ++counts->motion_mode[mbmi->sb_type][motion_mode];
#endif // CONFIG_EXT_WARPED_MOTION
return (MOTION_MODE)(SIMPLE_TRANSLATION + motion_mode);
}
}
......@@ -1846,7 +1827,7 @@ static void read_inter_block_mode_info(AV1Decoder *const pbi,
int16_t compound_inter_mode_ctx[MODE_CTX_REF_FRAMES];
int pts[SAMPLES_ARRAY_SIZE], pts_inref[SAMPLES_ARRAY_SIZE];
#if CONFIG_EXT_WARPED_MOTION
int pts_mv[SAMPLES_ARRAY_SIZE], pts_wm[SAMPLES_ARRAY_SIZE];
int pts_mv[SAMPLES_ARRAY_SIZE];
#endif // CONFIG_EXT_WARPED_MOTION
FRAME_CONTEXT *ec_ctx = xd->tile_ctx;
......@@ -2136,9 +2117,6 @@ static void read_inter_block_mode_info(AV1Decoder *const pbi,
xd->block_refs[ref] = ref_buf;
}
#if CONFIG_EXT_WARPED_MOTION
int best_cand = -1;
#endif // CONFIG_EXT_WARPED_MOTION
mbmi->motion_mode = SIMPLE_TRANSLATION;
if (mbmi->sb_type >= BLOCK_8X8 &&
#if CONFIG_EXT_SKIP
......@@ -2146,32 +2124,15 @@ static void read_inter_block_mode_info(AV1Decoder *const pbi,
#endif // CONFIG_EXT_SKIP
!has_second_ref(mbmi))
#if CONFIG_EXT_WARPED_MOTION
{
mbmi->num_proj_ref[0] =
findSamples(cm, xd, mi_row, mi_col, pts, pts_inref, pts_mv, pts_wm);
// Find a warped neighbor.
int best_weight = 0;
// if (mbmi->mode == NEARESTMV)
for (int cand = 0; cand < mbmi->num_proj_ref[0]; cand++) {
if (pts_wm[cand * 2 + 1] > best_weight) {
best_weight = pts_wm[cand * 2 + 1];
best_cand = cand;
}
}
}
findSamples(cm, xd, mi_row, mi_col, pts, pts_inref, pts_mv);
#else
mbmi->num_proj_ref[0] = findSamples(cm, xd, mi_row, mi_col, pts, pts_inref);
#endif // CONFIG_EXT_WARPED_MOTION
av1_count_overlappable_neighbors(cm, xd, mi_row, mi_col);
if (mbmi->ref_frame[1] != INTRA_FRAME)
#if CONFIG_EXT_WARPED_MOTION
mbmi->motion_mode = read_motion_mode(xd, mi, r, best_cand);
#else
mbmi->motion_mode = read_motion_mode(xd, mi, r);
#endif // CONFIG_EXT_WARPED_MOTION
#if CONFIG_JNT_COMP
// init
......@@ -2273,27 +2234,19 @@ static void read_inter_block_mode_info(AV1Decoder *const pbi,
mbmi->wm_params[0].wmtype = DEFAULT_WMTYPE;
#if CONFIG_EXT_WARPED_MOTION
if (mbmi->mode == NEARESTMV && best_cand != -1) {
MODE_INFO *best_mi = xd->mi[pts_wm[2 * best_cand]];
assert(best_mi->mbmi.motion_mode == WARPED_CAUSAL);
mbmi->wm_params[0] = best_mi->mbmi.wm_params[0];
} else {
if (mbmi->num_proj_ref[0] > 1)
mbmi->num_proj_ref[0] = sortSamples(pts_mv, &mbmi->mv[0].as_mv, pts,
pts_inref, mbmi->num_proj_ref[0]);
if (mbmi->num_proj_ref[0] > 1)
mbmi->num_proj_ref[0] = sortSamples(pts_mv, &mbmi->mv[0].as_mv, pts,
pts_inref, mbmi->num_proj_ref[0]);
#endif // CONFIG_EXT_WARPED_MOTION
if (find_projection(mbmi->num_proj_ref[0], pts, pts_inref, bsize,
mbmi->mv[0].as_mv.row, mbmi->mv[0].as_mv.col,
&mbmi->wm_params[0], mi_row, mi_col)) {
if (find_projection(mbmi->num_proj_ref[0], pts, pts_inref, bsize,
mbmi->mv[0].as_mv.row, mbmi->mv[0].as_mv.col,
&mbmi->wm_params[0], mi_row, mi_col)) {
#if WARPED_MOTION_DEBUG
printf("Warning: unexpected warped model from aomenc\n");
printf("Warning: unexpected warped model from aomenc\n");
#endif
mbmi->wm_params[0].invalid = 1;
}
#if CONFIG_EXT_WARPED_MOTION
mbmi->wm_params[0].invalid = 1;
}
#endif // CONFIG_EXT_WARPED_MOTION
}
#if DEC_MISMATCH_DEBUG
......
......@@ -306,22 +306,9 @@ static void write_motion_mode(const AV1_COMMON *cm, MACROBLOCKD *xd,
xd->tile_ctx->obmc_cdf[mbmi->sb_type], 2);
break;
default:
#if CONFIG_EXT_WARPED_MOTION
{
int wm_ctx = 0;
if (mbmi->wm_ctx != -1) {
wm_ctx = 1;
if (mbmi->mode == NEARESTMV) wm_ctx = 2;
}
aom_write_symbol(w, mbmi->motion_mode,
xd->tile_ctx->motion_mode_cdf[wm_ctx][mbmi->sb_type],
MOTION_MODES);
}
#else
aom_write_symbol(w, mbmi->motion_mode,
xd->tile_ctx->motion_mode_cdf[mbmi->sb_type],
MOTION_MODES);
#endif // CONFIG_EXT_WARPED_MOTION
}
}
......
......@@ -287,11 +287,7 @@ struct macroblock {
int interintra_cost[BLOCK_SIZE_GROUPS][2];
int wedge_interintra_cost[BLOCK_SIZES_ALL][2];
int interintra_mode_cost[BLOCK_SIZE_GROUPS][INTERINTRA_MODES];
#if CONFIG_EXT_WARPED_MOTION
int motion_mode_cost[MOTION_MODE_CTX][BLOCK_SIZES_ALL][MOTION_MODES];
#else
int motion_mode_cost[BLOCK_SIZES_ALL][MOTION_MODES];
#endif // CONFIG_EXT_WARPED_MOTION
int motion_mode_cost1[BLOCK_SIZES_ALL][2];
int intra_uv_mode_cost[INTRA_MODES][UV_INTRA_MODES];
int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES];
......
......@@ -1002,23 +1002,10 @@ static void update_stats(const AV1_COMMON *const cm, TileDataEnc *tile_data,
motion_mode_allowed(xd->global_motion, xd, mi);
if (mbmi->ref_frame[1] != INTRA_FRAME) {
if (motion_allowed == WARPED_CAUSAL) {
#if CONFIG_EXT_WARPED_MOTION
int wm_ctx = 0;
if (mbmi->wm_ctx != -1) {
wm_ctx = 1;
if (mbmi->mode == NEARESTMV) wm_ctx = 2;
}
counts->motion_mode[wm_ctx][bsize][mbmi->motion_mode]++;
if (allow_update_cdf)
update_cdf(fc->motion_mode_cdf[wm_ctx][bsize], mbmi->motion_mode,
MOTION_MODES);
#else
counts->motion_mode[bsize][mbmi->motion_mode]++;
if (allow_update_cdf)
update_cdf(fc->motion_mode_cdf[bsize], mbmi->motion_mode,
MOTION_MODES);
#endif // CONFIG_EXT_WARPED_MOTION
} else if (motion_allowed == OBMC_CAUSAL) {
counts->obmc[bsize][mbmi->motion_mode == OBMC_CAUSAL]++;
if (allow_update_cdf)
......
......@@ -262,20 +262,10 @@ void av1_fill_mode_rates(AV1_COMMON *const cm, MACROBLOCK *x,