g723_1: clip argument for 15-bit version of normalize_bits()
authorKostya Shishkov <kostya.shishkov@gmail.com>
Tue, 7 Aug 2012 17:32:20 +0000 (19:32 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Wed, 8 Aug 2012 11:24:19 +0000 (13:24 +0200)
It expects maximum value to be 32767 but calculations in scale_vector()
which uses this function can give it ABS(-32768) which leads to wrong
result and thus clipping is needed.

libavcodec/g723_1.c

index aabb03d..e917f5a 100644 (file)
@@ -290,6 +290,7 @@ static int scale_vector(int16_t *vector, int length)
     for (i = 0; i < length; i++)
         max = FFMAX(max, FFABS(vector[i]));
 
+    max   = FFMIN(max, 0x7FFF);
     bits  = normalize_bits(max, 15);
     scale = (bits == 15) ? 0x7FFF : (1 << bits);