1
0
mirror of https://github.com/mstorsjo/fdk-aac.git synced 2025-02-11 09:00:39 +01:00

Adjust scaling in lppTransposerHBE() to prevent signed integer overflow in autocorrelation.

Bug: 145669291
Test: atest DecoderTestXheAac ; atest DecoderTestAacDrc
Change-Id: Ia32b081b982d6886f51642a7ed1ca73acb40dac9
This commit is contained in:
Fraunhofer IIS FDK 2019-10-29 13:09:09 +01:00 committed by Jean-Michel Trivi
parent c69e4584c3
commit 801b45ffab

View File

@ -1014,8 +1014,8 @@ void lppTransposerHBE(
pSettings->nCols) +
lowBandShift);
dynamicScale = fixMax(
0, dynamicScale - 1); /* one additional bit headroom to prevent -1.0 */
dynamicScale =
dynamicScale - 1; /* one additional bit headroom to prevent -1.0 */
/*
Scale temporal QMF buffer.
@ -1194,6 +1194,9 @@ void lppTransposerHBE(
} else { /* bw <= 0 */
int descale = fixMin(DFRACT_BITS - 1, (LPC_SCALE_FACTOR + dynamicScale));
dynamicScale +=
1; /* prevent negativ scale factor due to 'one additional bit
headroom' */
for (i = startSample; i < stopSample; i++) {
FIXP_DBL accu1, accu2;
@ -1210,9 +1213,9 @@ void lppTransposerHBE(
dynamicScale;
qmfBufferReal[i][loBand] =
(lowBandReal[LPC_ORDER + i] >> descale) + (accu1 << 1);
(lowBandReal[LPC_ORDER + i] >> descale) + (accu1 << (1 + 1));
qmfBufferImag[i][loBand] =
(lowBandImag[LPC_ORDER + i] >> descale) + (accu2 << 1);
(lowBandImag[LPC_ORDER + i] >> descale) + (accu2 << (1 + 1));
}
} /* bw <= 0 */