Properly set pointers in masked variance functions Align the address pointers used in the masked variance functions. Change-Id: I6bec5ee10fdb718f88083d11f0031f86219ddaa1
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) {