Fix int overflow in diffwtd_mask_d32() BUG=b/69668572 Change-Id: Ie60081628b3fb5a14153664ec55f57fabd7d8433
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index 3d7fa0a..eae86cc 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -556,8 +556,9 @@ int block_stride = block_size_wide[sb_type]; for (i = 0; i < h; ++i) { for (j = 0; j < w; ++j) { - diff = abs(src0[i * src0_stride + j] - src1[i * src1_stride + j]); - diff = ROUND_POWER_OF_TWO(diff, round); + diff = (int)ROUND_POWER_OF_TWO(llabs((int64_t)src0[i * src0_stride + j] - + (int64_t)src1[i * src1_stride + j]), + round); m = clamp(mask_base + (diff / DIFF_FACTOR), 0, AOM_BLEND_A64_MAX_ALPHA); mask[i * block_stride + j] = which_inverse ? AOM_BLEND_A64_MAX_ALPHA - m : m;