mirror of
https://github.com/mstorsjo/fdk-aac.git
synced 2025-02-19 04:30:34 +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:
parent
c69e4584c3
commit
801b45ffab
@ -1014,8 +1014,8 @@ void lppTransposerHBE(
|
|||||||
pSettings->nCols) +
|
pSettings->nCols) +
|
||||||
lowBandShift);
|
lowBandShift);
|
||||||
|
|
||||||
dynamicScale = fixMax(
|
dynamicScale =
|
||||||
0, dynamicScale - 1); /* one additional bit headroom to prevent -1.0 */
|
dynamicScale - 1; /* one additional bit headroom to prevent -1.0 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Scale temporal QMF buffer.
|
Scale temporal QMF buffer.
|
||||||
@ -1194,6 +1194,9 @@ void lppTransposerHBE(
|
|||||||
} else { /* bw <= 0 */
|
} else { /* bw <= 0 */
|
||||||
|
|
||||||
int descale = fixMin(DFRACT_BITS - 1, (LPC_SCALE_FACTOR + dynamicScale));
|
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++) {
|
for (i = startSample; i < stopSample; i++) {
|
||||||
FIXP_DBL accu1, accu2;
|
FIXP_DBL accu1, accu2;
|
||||||
@ -1210,9 +1213,9 @@ void lppTransposerHBE(
|
|||||||
dynamicScale;
|
dynamicScale;
|
||||||
|
|
||||||
qmfBufferReal[i][loBand] =
|
qmfBufferReal[i][loBand] =
|
||||||
(lowBandReal[LPC_ORDER + i] >> descale) + (accu1 << 1);
|
(lowBandReal[LPC_ORDER + i] >> descale) + (accu1 << (1 + 1));
|
||||||
qmfBufferImag[i][loBand] =
|
qmfBufferImag[i][loBand] =
|
||||||
(lowBandImag[LPC_ORDER + i] >> descale) + (accu2 << 1);
|
(lowBandImag[LPC_ORDER + i] >> descale) + (accu2 << (1 + 1));
|
||||||
}
|
}
|
||||||
} /* bw <= 0 */
|
} /* bw <= 0 */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user