Convert "var" to uint64_t This is to avoid overflow at uint32_t. cherry-picked #000098a0 from aom/master Change-Id: I549d2d13d0577fd05d57303a438fbc8034755e45
diff --git a/av1/encoder/aq_variance.c b/av1/encoder/aq_variance.c index 7443897..1f5554e 100644 --- a/av1/encoder/aq_variance.c +++ b/av1/encoder/aq_variance.c
@@ -170,7 +170,7 @@ bw, bh, &sse, &avg); #endif // CONFIG_AOM_HIGHBITDEPTH var = sse - (((int64_t)avg * avg) / (bw * bh)); - return (256 * var) / (bw * bh); + return ((uint64_t)var * 256) / (bw * bh); } else { #if CONFIG_AOM_HIGHBITDEPTH if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { @@ -185,7 +185,7 @@ var = cpi->fn_ptr[bs].vf(x->plane[0].src.buf, x->plane[0].src.stride, av1_all_zeros, 0, &sse); #endif // CONFIG_AOM_HIGHBITDEPTH - return (256 * var) >> num_pels_log2_lookup[bs]; + return ((uint64_t)var * 256) >> num_pels_log2_lookup[bs]; } }