diff options
author | Fraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de> | 2018-06-29 16:33:30 +0200 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2018-12-26 19:19:34 -0500 |
commit | 8166502969e261270d098146c3fcae37d92d3c50 (patch) | |
tree | b9dde5f7f2572b4184ea2e80733f6efa5d3329a0 /libAACdec/src/usacdec_fac.cpp | |
parent | f59fd73d4443b015b11a362c807f6b828658a799 (diff) | |
download | fdk-aac-8166502969e261270d098146c3fcae37d92d3c50.tar.gz fdk-aac-8166502969e261270d098146c3fcae37d92d3c50.tar.bz2 fdk-aac-8166502969e261270d098146c3fcae37d92d3c50.zip |
Prevent overflow in usac filters
Bug: 112663886
Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc
Change-Id: Ie7af65a1a556afb141ea5272f70bfea11881ac30
Diffstat (limited to 'libAACdec/src/usacdec_fac.cpp')
-rw-r--r-- | libAACdec/src/usacdec_fac.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/libAACdec/src/usacdec_fac.cpp b/libAACdec/src/usacdec_fac.cpp index 71ce4a9..f349ede 100644 --- a/libAACdec/src/usacdec_fac.cpp +++ b/libAACdec/src/usacdec_fac.cpp @@ -191,13 +191,11 @@ static void Syn_filt_zero(const FIXP_LPC a[], const INT a_exp, INT length, L_tmp = (FIXP_DBL)0; for (j = 0; j < fMin(i, M_LP_FILTER_ORDER); j++) { - L_tmp -= fMultDiv2(a[j], x[i - (j + 1)]); + L_tmp -= fMultDiv2(a[j], x[i - (j + 1)]) >> (LP_FILTER_SCALE - 1); } - L_tmp = scaleValue(L_tmp, a_exp + 1); - - x[i] = scaleValueSaturate((x[i] >> 1) + (L_tmp >> 1), - 1); /* Avoid overflow issues and saturate. */ + L_tmp = scaleValue(L_tmp, a_exp + LP_FILTER_SCALE); + x[i] = fAddSaturate(x[i], L_tmp); } } |