aboutsummaryrefslogtreecommitdiffstats
path: root/libAACdec
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2018-12-27 09:31:32 -0800
committerandroid-build-merger <android-build-merger@google.com>2018-12-27 09:31:32 -0800
commit83ba3e096a1982fddc4577880ab6a2ba0b6b7c2e (patch)
tree8a89db38ca02392824527b277a5c4cafd1ffc6a3 /libAACdec
parentcafc42b5eb188678d5690f7a7f0274a28837f46d (diff)
parent7d959f2f303a6149c49d057b085beed8a9d6426c (diff)
downloadfdk-aac-83ba3e096a1982fddc4577880ab6a2ba0b6b7c2e.tar.gz
fdk-aac-83ba3e096a1982fddc4577880ab6a2ba0b6b7c2e.tar.bz2
fdk-aac-83ba3e096a1982fddc4577880ab6a2ba0b6b7c2e.zip
Merge "Signed Integer Overflows in imlt_block()" am: 55930c28af
am: 7d959f2f30 Change-Id: Iea1e4a89029523511bef926c98ee23e9bcb216fe
Diffstat (limited to 'libAACdec')
-rw-r--r--libAACdec/src/usacdec_fac.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/libAACdec/src/usacdec_fac.cpp b/libAACdec/src/usacdec_fac.cpp
index c10a3fe..0d3d844 100644
--- a/libAACdec/src/usacdec_fac.cpp
+++ b/libAACdec/src/usacdec_fac.cpp
@@ -534,10 +534,12 @@ INT CLpd_FAC_Acelp2Mdct(H_MDCT hMdct, FIXP_DBL *output, FIXP_DBL *_pSpec,
/* Optional scaling of time domain - no yet windowed - of current spectrum */
if (total_gain != (FIXP_DBL)0) {
- scaleValuesWithFactor(pSpec, total_gain, tl, spec_scale[0] + scale);
- } else {
- scaleValuesSaturate(pSpec, tl, spec_scale[0] + scale);
+ for (i = 0; i < tl; i++) {
+ pSpec[i] = fMult(pSpec[i], total_gain);
+ }
}
+ int loc_scale = fixmin_I(spec_scale[0] + scale, (INT)DFRACT_BITS - 1);
+ scaleValuesSaturate(pSpec, tl, loc_scale);
pOut1 += fl / 2 - 1;
pCurr = pSpec + tl - fl / 2;
@@ -623,10 +625,12 @@ INT CLpd_FAC_Acelp2Mdct(H_MDCT hMdct, FIXP_DBL *output, FIXP_DBL *_pSpec,
*/
/* and de-scale current spectrum signal (time domain, no yet windowed) */
if (total_gain != (FIXP_DBL)0) {
- scaleValuesWithFactor(pSpec, total_gain, tl, spec_scale[w] + scale);
- } else {
- scaleValuesSaturate(pSpec, tl, spec_scale[w] + scale);
+ for (i = 0; i < tl; i++) {
+ pSpec[i] = fMult(pSpec[i], total_gain);
+ }
}
+ loc_scale = fixmin_I(spec_scale[w] + scale, (INT)DFRACT_BITS - 1);
+ scaleValuesSaturate(pSpec, tl, loc_scale);
if (noOutSamples <= nrSamples) {
/* Divert output first half to overlap buffer if we already got enough