mirror of https://github.com/mstorsjo/fdk-aac.git
Adapt scaling in combineSignalCplxScale*() to prevent signed integer overflows.
Bug: 186777497 Test: atest android.media.cts.DecoderTestAacFormat android.media.cts.DecoderTestXheAac android.media.cts.DecoderTestAacDrc Change-Id: If773c90ccd256fd03641446c7f8bd82d04a100e4
This commit is contained in:
parent
85a3977fdf
commit
773ff1d3e8
|
@ -1,7 +1,7 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||
|
||||
© Copyright 1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
© Copyright 1995 - 2021 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||
Forschung e.V. All rights reserved.
|
||||
|
||||
1. INTRODUCTION
|
||||
|
@ -229,15 +229,13 @@ inline void combineSignalCplxScale1(FIXP_DBL *hybOutputRealDry,
|
|||
int n;
|
||||
FIXP_DBL scaleY;
|
||||
for (n = bands - 1; n >= 0; n--) {
|
||||
scaleY = fMultDiv2(scaleX, *pBP);
|
||||
scaleY = fMult(scaleX, *pBP);
|
||||
*hybOutputRealDry = SATURATE_LEFT_SHIFT(
|
||||
(*hybOutputRealDry >> 1) +
|
||||
(fMultDiv2(*hybOutputRealWet, scaleY) << (SF_SCALE + 1)),
|
||||
1, DFRACT_BITS);
|
||||
(*hybOutputRealDry >> SF_SCALE) + fMult(*hybOutputRealWet, scaleY),
|
||||
SF_SCALE, DFRACT_BITS);
|
||||
*hybOutputImagDry = SATURATE_LEFT_SHIFT(
|
||||
(*hybOutputImagDry >> 1) +
|
||||
(fMultDiv2(*hybOutputImagWet, scaleY) << (SF_SCALE + 1)),
|
||||
1, DFRACT_BITS);
|
||||
(*hybOutputImagDry >> SF_SCALE) + fMult(*hybOutputImagWet, scaleY),
|
||||
SF_SCALE, DFRACT_BITS);
|
||||
hybOutputRealDry++, hybOutputRealWet++;
|
||||
hybOutputImagDry++, hybOutputImagWet++;
|
||||
pBP++;
|
||||
|
@ -253,14 +251,11 @@ inline void combineSignalCplxScale2(FIXP_DBL *hybOutputRealDry,
|
|||
|
||||
for (n = bands - 1; n >= 0; n--) {
|
||||
*hybOutputRealDry = SATURATE_LEFT_SHIFT(
|
||||
(*hybOutputRealDry >> 1) +
|
||||
(fMultDiv2(*hybOutputRealWet, scaleX) << SF_SCALE),
|
||||
1, DFRACT_BITS);
|
||||
(*hybOutputRealDry >> SF_SCALE) + fMult(*hybOutputRealWet, scaleX),
|
||||
SF_SCALE, DFRACT_BITS);
|
||||
*hybOutputImagDry = SATURATE_LEFT_SHIFT(
|
||||
(*hybOutputImagDry >> 1) +
|
||||
(fMultDiv2(*hybOutputImagWet, scaleX) << SF_SCALE),
|
||||
1, DFRACT_BITS);
|
||||
;
|
||||
(*hybOutputImagDry >> SF_SCALE) + fMult(*hybOutputImagWet, scaleX),
|
||||
SF_SCALE, DFRACT_BITS);
|
||||
hybOutputRealDry++, hybOutputRealWet++;
|
||||
hybOutputImagDry++, hybOutputImagWet++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue