g723.1: fix addition overflow
authorMans Rullgard <mans@mansr.com>
Fri, 10 Aug 2012 00:17:20 +0000 (01:17 +0100)
committerMans Rullgard <mans@mansr.com>
Fri, 10 Aug 2012 11:18:38 +0000 (12:18 +0100)
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>
libavcodec/g723_1.c
tests/ref/fate/g723_1-dec-3

index 53b9ade..7d8a48e 100644 (file)
@@ -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++) {
 
         /* 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;
         }
                                         ((signal_ptr[j - 1] >> 16) *
                                          temp << 1)) >> 16;
         }
index eabdd73..d1a2946 100644 (file)
@@ -13,7 +13,7 @@
 0,       2640,       2640,      240,      480, 0xe253c7e1
 0,       2880,       2880,      240,      480, 0x672cbf0a
 0,       3120,       3120,      240,      480, 0x5f32aa27
 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
 0,       3600,       3600,      240,      480, 0x4819e5bc
 0,       3840,       3840,      240,      480, 0x423dec60
 0,       4080,       4080,      240,      480, 0xafefe289