diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index baa9597977..e792eaf163 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -328,10 +328,10 @@ static void compute_rematrixing_strategy(AC3EncodeContext *s) CoefType rt = block->mdct_coef[1][i]; CoefType md = lt + rt; CoefType sd = lt - rt; - sum[0] += lt * lt; - sum[1] += rt * rt; - sum[2] += md * md; - sum[3] += sd * sd; + sum[0] += MUL_COEF(lt, lt); + sum[1] += MUL_COEF(rt, rt); + sum[2] += MUL_COEF(md, md); + sum[3] += MUL_COEF(sd, sd); } /* compare sums to determine if rematrixing will be used for this band */ diff --git a/libavcodec/ac3enc_fixed.h b/libavcodec/ac3enc_fixed.h index 12c8ace4aa..773caec2c3 100644 --- a/libavcodec/ac3enc_fixed.h +++ b/libavcodec/ac3enc_fixed.h @@ -36,6 +36,8 @@ typedef int16_t SampleType; typedef int32_t CoefType; typedef int64_t CoefSumType; +#define MUL_COEF(a,b) MUL64(a,b) + /** * Compex number. diff --git a/libavcodec/ac3enc_float.h b/libavcodec/ac3enc_float.h index 1726ca045f..6ad22ecc0b 100644 --- a/libavcodec/ac3enc_float.h +++ b/libavcodec/ac3enc_float.h @@ -36,6 +36,8 @@ typedef float SampleType; typedef float CoefType; typedef float CoefSumType; +#define MUL_COEF(a,b) ((a)*(b)) + typedef struct AC3MDCTContext { const float *window; ///< MDCT window function