Make av1_build_inter_predictor support mask compound
Change-Id: Idfeffa511357cfaaa9787f97b3e47f3c1b339c70
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 83a0150..7977828 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -115,9 +115,11 @@
const INTERINTER_COMPOUND_DATA *mask_comp) {
inter_pred_params->sb_type = bsize;
inter_pred_params->mask_comp = *mask_comp;
- inter_pred_params->comp_mode = MASK_COMP;
- inter_pred_params->conv_params.do_average = 0;
+ if (inter_pred_params->conv_params.compound_index == 1) {
+ inter_pred_params->conv_params.do_average = 0;
+ inter_pred_params->comp_mode = MASK_COMP;
+ }
}
void av1_make_inter_predictor(const uint8_t *src, int src_stride, uint8_t *dst,
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index ec60123..0e6f8ac 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -218,17 +218,9 @@
inter_pred_params.mask_comp.seg_mask = xd->seg_mask;
}
- if (ref && is_masked_compound_type(mi->interinter_comp.type)) {
- // masked compound type has its own average mechanism
- inter_pred_params.conv_params.do_average = 0;
- av1_make_masked_inter_predictor(pre, pre_buf.stride, dst,
- dst_buf->stride, &inter_pred_params,
- &subpel_params);
- } else {
- av1_build_inter_predictor(pre_buf.buf, pre_buf.stride, dst,
- dst_buf->stride, &mv, mi_x, mi_y,
- &inter_pred_params);
- }
+ av1_build_inter_predictor(pre_buf.buf, pre_buf.stride, dst,
+ dst_buf->stride, &mv, mi_x, mi_y,
+ &inter_pred_params);
}
}
}
@@ -305,8 +297,13 @@
subpel_params.xs = sf->x_step_q4;
subpel_params.ys = sf->y_step_q4;
- av1_make_inter_predictor(src, src_stride, dst, dst_stride, inter_pred_params,
- &subpel_params);
+ if (inter_pred_params->comp_mode == UNIFORM_SINGLE ||
+ inter_pred_params->comp_mode == UNIFORM_COMP)
+ av1_make_inter_predictor(src, src_stride, dst, dst_stride,
+ inter_pred_params, &subpel_params);
+ else
+ av1_make_masked_inter_predictor(src, src_stride, dst, dst_stride,
+ inter_pred_params, &subpel_params);
}
static INLINE void build_obmc_prediction(MACROBLOCKD *xd, int rel_mi_row,