Bugfixes in pick_interinter_seg_mask
Change-Id: I5ad51375287b40170882c4816d34858be50afacd
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 63dfc61..19a4fcd 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -263,7 +263,7 @@
int wedge_sign;
#if CONFIG_COMPOUND_SEGMENT
int which;
- uint8_t seg_mask[2][2 * MAX_SB_SQUARE];
+ DECLARE_ALIGNED(16, uint8_t, seg_mask[2][2 * MAX_SB_SQUARE]);
#endif // CONFIG_COMPOUND_SEGMENT
} INTERINTER_COMPOUND_DATA;
#endif // CONFIG_EXT_INTER
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index b71d032..32b9798 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -6855,7 +6855,7 @@
#else
const int bd_round = 0;
#endif // CONFIG_AOM_HIGHBITDEPTH
- INTERINTER_COMPOUND_DATA comp_data = mbmi->interinter_compound_data;
+ INTERINTER_COMPOUND_DATA *comp_data = &mbmi->interinter_compound_data;
DECLARE_ALIGNED(32, int16_t, r0[MAX_SB_SQUARE]);
DECLARE_ALIGNED(32, int16_t, r1[MAX_SB_SQUARE]);
DECLARE_ALIGNED(32, int16_t, d10[MAX_SB_SQUARE]);
@@ -6877,19 +6877,17 @@
}
// build mask and inverse
- build_compound_seg_mask(&comp_data, p0, bw, p1, bw, bsize, bh, bw);
+ build_compound_seg_mask(comp_data, p0, bw, p1, bw, bsize, bh, bw);
// compute rd for mask0
- sse = av1_wedge_sse_from_residuals(r1, d10, comp_data.seg_mask[0], N);
- sse = 0;
+ sse = av1_wedge_sse_from_residuals(r1, d10, comp_data->seg_mask[0], N);
sse = ROUND_POWER_OF_TWO(sse, bd_round);
model_rd_from_sse(cpi, xd, bsize, 0, sse, &rate, &dist);
rd0 = RDCOST(x->rdmult, x->rddiv, rate, dist);
// compute rd for mask1
- sse = av1_wedge_sse_from_residuals(r1, d10, comp_data.seg_mask[1], N);
- sse = 0;
+ sse = av1_wedge_sse_from_residuals(r1, d10, comp_data->seg_mask[1], N);
sse = ROUND_POWER_OF_TWO(sse, bd_round);
model_rd_from_sse(cpi, xd, bsize, 0, sse, &rate, &dist);