g723.1: fix addition overflow

This addition must be done as 64-bit to avoid overflow and for
the subsequent clipping to be meaningful.

Signed-off-by: Mans Rullgard <mans@mansr.com>
pull/28/head
Mans Rullgard 13 years ago
parent 52aa3015a3
commit 05c36e0e5f
  1. 2
      libavcodec/g723_1.c
  2. 2
      tests/ref/fate/g723_1-dec-3

@ -979,7 +979,7 @@ static void formant_postfilter(G723_1_Context *p, int16_t *lpc, int16_t *buf)
/* Compensation filter */
for (j = 0; j < SUBFRAME_LEN; j++) {
buf_ptr[j] = av_clipl_int32(signal_ptr[j] +
buf_ptr[j] = av_clipl_int32((int64_t)signal_ptr[j] +
((signal_ptr[j - 1] >> 16) *
temp << 1)) >> 16;
}

@ -13,7 +13,7 @@
0, 2640, 2640, 240, 480, 0xe253c7e1
0, 2880, 2880, 240, 480, 0x672cbf0a
0, 3120, 3120, 240, 480, 0x5f32aa27
0, 3360, 3360, 240, 480, 0x8646a245
0, 3360, 3360, 240, 480, 0x0b3da147
0, 3600, 3600, 240, 480, 0x4819e5bc
0, 3840, 3840, 240, 480, 0x423dec60
0, 4080, 4080, 240, 480, 0xafefe289

Loading…
Cancel
Save