Properly set pointers in masked variance functions
Align the address pointers used in the masked variance functions.
Change-Id: I6bec5ee10fdb718f88083d11f0031f86219ddaa1
diff --git a/aom_dsp/variance.c b/aom_dsp/variance.c
index ec294a9..cbe756e 100644
--- a/aom_dsp/variance.c
+++ b/aom_dsp/variance.c
@@ -367,8 +367,9 @@
int ref_stride, int subpel_search) {
int i, j;
- aom_upsampled_pred(xd, cm, mi_row, mi_col, mv, comp_pred, width, height,
- subpel_x_q3, subpel_y_q3, ref, ref_stride, subpel_search);
+ aom_upsampled_pred_c(xd, cm, mi_row, mi_col, mv, comp_pred, width, height,
+ subpel_x_q3, subpel_y_q3, ref, ref_stride,
+ subpel_search);
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
comp_pred[j] = ROUND_POWER_OF_TWO(comp_pred[j] + pred[j], 1);
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 1e6b481..98e64c1 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -713,11 +713,11 @@
}
#if !CONFIG_REMOVE_DIST_WTD_COMP
-static void dist_wtd_comp_weight_assign(const AV1_COMMON *cm,
- const MB_MODE_INFO *mbmi, int order_idx,
- int *fwd_offset, int *bck_offset,
- int *use_dist_wtd_comp_avg,
- int is_compound) {
+void av1_dist_wtd_comp_weight_assign(const AV1_COMMON *cm,
+ const MB_MODE_INFO *mbmi, int order_idx,
+ int *fwd_offset, int *bck_offset,
+ int *use_dist_wtd_comp_avg,
+ int is_compound) {
assert(fwd_offset != NULL && bck_offset != NULL);
if (!is_compound || mbmi->compound_idx) {
*fwd_offset = 8;
@@ -924,7 +924,7 @@
ref, plane, xd->tmp_conv_dst, MAX_SB_SIZE, is_compound, xd->bd);
#if !CONFIG_REMOVE_DIST_WTD_COMP
- dist_wtd_comp_weight_assign(
+ av1_dist_wtd_comp_weight_assign(
cm, mi, 0, &inter_pred_params.conv_params.fwd_offset,
&inter_pred_params.conv_params.bck_offset,
&inter_pred_params.conv_params.use_dist_wtd_comp_avg, is_compound);
diff --git a/av1/common/reconinter.h b/av1/common/reconinter.h
index bbda4d2..be1f2fc 100644
--- a/av1/common/reconinter.h
+++ b/av1/common/reconinter.h
@@ -378,6 +378,14 @@
return av1_wedge_params_lookup[sb_type].masks[wedge_sign][wedge_index];
}
+#if !CONFIG_REMOVE_DIST_WTD_COMP
+void av1_dist_wtd_comp_weight_assign(const AV1_COMMON *cm,
+ const MB_MODE_INFO *mbmi, int order_idx,
+ int *fwd_offset, int *bck_offset,
+ int *use_dist_wtd_comp_avg,
+ int is_compound);
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
+
const uint8_t *av1_get_compound_type_mask(
const INTERINTER_COMPOUND_DATA *const comp_data, BLOCK_SIZE sb_type);
diff --git a/av1/encoder/mcomp.c b/av1/encoder/mcomp.c
index 115cc49..70cfbf7 100644
--- a/av1/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -641,9 +641,9 @@
int bestsme;
if (mask) {
- bestsme = vfp->msvf(src_buf, src_stride, 0, 0,
- get_buf_from_fullmv(ref, this_mv), ref_stride,
- second_pred, mask, mask_stride, invert_mask, &unused);
+ bestsme = vfp->msvf(get_buf_from_fullmv(ref, this_mv), ref_stride, 0, 0,
+ src_buf, src_stride, second_pred, mask, mask_stride,
+ invert_mask, &unused);
} else if (second_pred) {
bestsme = vfp->svaf(get_buf_from_fullmv(ref, this_mv), ref_stride, 0, 0,
src_buf, src_stride, &unused, second_pred);
@@ -3644,9 +3644,9 @@
const MV mv = get_mv_from_fullmv(&best_mv);
unsigned int unused;
- return vfp->msvf(src->buf, src->stride, 0, 0,
- get_buf_from_fullmv(pre, &best_mv), pre->stride, second_pred,
- mask, mask_stride, invert_mask, &unused) +
+ return vfp->msvf(get_buf_from_fullmv(pre, &best_mv), pre->stride, 0, 0,
+ src->buf, src->stride, second_pred, mask, mask_stride,
+ invert_mask, &unused) +
mv_err_cost_(&mv, mv_cost_params);
}
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index f6cd9a7..76573b8 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1053,8 +1053,8 @@
const BLOCK_SIZE bsize, int_mv *cur_mv,
int *const rate_mv, HandleInterModeArgs *const args,
inter_mode_info *mode_info) {
- const MACROBLOCKD *const xd = &x->e_mbd;
- const MB_MODE_INFO *const mbmi = xd->mi[0];
+ MACROBLOCKD *const xd = &x->e_mbd;
+ MB_MODE_INFO *const mbmi = xd->mi[0];
const int is_comp_pred = has_second_ref(mbmi);
const PREDICTION_MODE this_mode = mbmi->mode;
const int refs[2] = { mbmi->ref_frame[0],
@@ -1078,7 +1078,21 @@
// aomenc1
if (cpi->sf.inter_sf.comp_inter_joint_search_thresh <= bsize ||
!valid_mv0 || !valid_mv1) {
+ mbmi->compound_idx = 1;
+#if !CONFIG_REMOVE_DIST_WTD_COMP
+ InterPredParams inter_pred_params;
+ av1_dist_wtd_comp_weight_assign(
+ &cpi->common, mbmi, 0, &inter_pred_params.conv_params.fwd_offset,
+ &inter_pred_params.conv_params.bck_offset,
+ &inter_pred_params.conv_params.use_dist_wtd_comp_avg, 1);
+ uint8_t mask_value = inter_pred_params.conv_params.fwd_offset * 4;
+ memset(xd->seg_mask, mask_value, sizeof(xd->seg_mask));
+ av1_joint_motion_search(cpi, x, bsize, cur_mv, xd->seg_mask,
+ block_size_wide[bsize], rate_mv);
+#else
+ // uint8_t mask_value = 32;
av1_joint_motion_search(cpi, x, bsize, cur_mv, NULL, 0, rate_mv);
+#endif // !CONFIG_REMOVE_DIST_WTD_COMP
} else {
*rate_mv = 0;
for (int i = 0; i < 2; ++i) {