aboutsummaryrefslogtreecommitdiffstats
path: root/libAACdec/src/usacdec_fac.cpp
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2018-12-26 18:07:50 -0800
committerandroid-build-merger <android-build-merger@google.com>2018-12-26 18:07:50 -0800
commit18d4dcf2551245c887962e34130cb24414b0b969 (patch)
treec85f22e09e179d9293d4c9e813b94157af297e1b /libAACdec/src/usacdec_fac.cpp
parent350e4ffea2b756a40a124db5ba341257299f1e3f (diff)
parenteaad782db3d81611164cc195587c53a6b51b0922 (diff)
downloadfdk-aac-18d4dcf2551245c887962e34130cb24414b0b969.tar.gz
fdk-aac-18d4dcf2551245c887962e34130cb24414b0b969.tar.bz2
fdk-aac-18d4dcf2551245c887962e34130cb24414b0b969.zip
Merge "Prevent overflow in usac filters" am: 4053380094
am: eaad782db3 Change-Id: I86ee269643f3247138c71ffe88a2a589bfce0357
Diffstat (limited to 'libAACdec/src/usacdec_fac.cpp')
-rw-r--r--libAACdec/src/usacdec_fac.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/libAACdec/src/usacdec_fac.cpp b/libAACdec/src/usacdec_fac.cpp
index 25d3119..c10a3fe 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);
}
}