mirror of https://github.com/mstorsjo/fdk-aac.git
Limit smoothedNoise values to avoid integer overflows in adjustTimeSlotHQ() and adjustTimeSlotHQ_GainAndNoise().
Bug: 176246647 Test: atest DecoderTestXheAac DecoderTestAacDrc Change-Id: Ib630d56a626ddd59a9155df38cda2011c3165346
This commit is contained in:
parent
2b281bb5a3
commit
4305167ceb
|
@ -1,7 +1,7 @@
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
Software License for The Fraunhofer FDK AAC Codec Library for Android
|
||||||
|
|
||||||
© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
© Copyright 1995 - 2020 Fraunhofer-Gesellschaft zur Förderung der angewandten
|
||||||
Forschung e.V. All rights reserved.
|
Forschung e.V. All rights reserved.
|
||||||
|
|
||||||
1. INTRODUCTION
|
1. INTRODUCTION
|
||||||
|
@ -1398,6 +1398,17 @@ void calculateSbrEnvelope(
|
||||||
*/
|
*/
|
||||||
noise_e = (start_pos < no_cols) ? adj_e : final_e;
|
noise_e = (start_pos < no_cols) ? adj_e : final_e;
|
||||||
|
|
||||||
|
if (start_pos >= no_cols) {
|
||||||
|
int diff = h_sbr_cal_env->filtBufferNoise_e - noise_e;
|
||||||
|
if (diff > 0) {
|
||||||
|
int s = getScalefactor(h_sbr_cal_env->filtBufferNoise, noSubbands);
|
||||||
|
if (diff > s) {
|
||||||
|
final_e += diff - s;
|
||||||
|
noise_e = final_e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Convert energies to amplitude levels
|
Convert energies to amplitude levels
|
||||||
*/
|
*/
|
||||||
|
@ -2741,6 +2752,9 @@ static void adjustTimeSlotHQ_GainAndNoise(
|
||||||
fMult(direct_ratio, noiseLevel[k]);
|
fMult(direct_ratio, noiseLevel[k]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
smoothedNoise = fMax(fMin(smoothedNoise, (FIXP_DBL)(MAXVAL_DBL / 2)),
|
||||||
|
(FIXP_DBL)(MINVAL_DBL / 2));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The next 2 multiplications constitute the actual envelope adjustment
|
The next 2 multiplications constitute the actual envelope adjustment
|
||||||
of the signal and should be carried out with full accuracy
|
of the signal and should be carried out with full accuracy
|
||||||
|
@ -2930,6 +2944,9 @@ static void adjustTimeSlotHQ(
|
||||||
fMult(direct_ratio, noiseLevel[k]);
|
fMult(direct_ratio, noiseLevel[k]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
smoothedNoise = fMax(fMin(smoothedNoise, (FIXP_DBL)(MAXVAL_DBL / 2)),
|
||||||
|
(FIXP_DBL)(MINVAL_DBL / 2));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The next 2 multiplications constitute the actual envelope adjustment
|
The next 2 multiplications constitute the actual envelope adjustment
|
||||||
of the signal and should be carried out with full accuracy
|
of the signal and should be carried out with full accuracy
|
||||||
|
|
Loading…
Reference in New Issue