aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2019-03-15 14:03:19 +0200
committerMartin Storsjo <martin@martin.st>2019-03-15 14:03:19 +0200
commit4edc5c4808c2a21e6dc8dc6c8d5a00290d042528 (patch)
treef4e87a39dfeadfb60bfadc9f6851c1cf4420e856
parent95858d7bd36f19bde4a9595e2bd68f195215b164 (diff)
parentd5724aefe91189c173833d792f1ab1b5e17d8eec (diff)
downloadfdk-aac-4edc5c4808c2a21e6dc8dc6c8d5a00290d042528.tar.gz
fdk-aac-4edc5c4808c2a21e6dc8dc6c8d5a00290d042528.tar.bz2
fdk-aac-4edc5c4808c2a21e6dc8dc6c8d5a00290d042528.zip
Merge remote-tracking branch 'aosp/master'
-rw-r--r--libAACdec/src/aacdecoder_lib.cpp10
-rw-r--r--libAACdec/src/conceal.cpp8
-rw-r--r--libSACdec/src/sac_dec_lib.cpp4
3 files changed, 15 insertions, 7 deletions
diff --git a/libAACdec/src/aacdecoder_lib.cpp b/libAACdec/src/aacdecoder_lib.cpp
index f287003..7df17b9 100644
--- a/libAACdec/src/aacdecoder_lib.cpp
+++ b/libAACdec/src/aacdecoder_lib.cpp
@@ -1400,9 +1400,13 @@ aacDecoder_DecodeFrame(HANDLE_AACDECODER self, INT_PCM *pTimeData_extern,
mpegSurroundDecoder_ConfigureQmfDomain(
(CMpegSurroundDecoder *)self->pMpegSurroundDecoder, sac_interface,
(UINT)self->streamInfo.aacSampleRate, self->streamInfo.aot);
- self->qmfDomain.globalConf.nQmfTimeSlots_requested =
- self->streamInfo.aacSamplesPerFrame /
- self->qmfDomain.globalConf.nBandsAnalysis_requested;
+ if (self->qmfDomain.globalConf.nBandsAnalysis_requested > 0) {
+ self->qmfDomain.globalConf.nQmfTimeSlots_requested =
+ self->streamInfo.aacSamplesPerFrame /
+ self->qmfDomain.globalConf.nBandsAnalysis_requested;
+ } else {
+ self->qmfDomain.globalConf.nQmfTimeSlots_requested = 0;
+ }
}
self->qmfDomain.globalConf.TDinput = pTimeData;
diff --git a/libAACdec/src/conceal.cpp b/libAACdec/src/conceal.cpp
index cc6de75..5895cb8 100644
--- a/libAACdec/src/conceal.cpp
+++ b/libAACdec/src/conceal.cpp
@@ -2081,11 +2081,11 @@ static void CConcealment_TDNoise_Apply(CConcealmentInfo *const pConcealmentInfo,
noiseVal = FX_DBL2FX_PCM(fMult(noiseValLong, TDNoiseAtt));
/* add filtered noise - check for clipping, before */
- if (pcmdata[ii] > (FIXP_PCM)MAXVAL_FIXP_PCM - noiseVal &&
- noiseVal > (FIXP_PCM)0) {
+ if (noiseVal > (FIXP_PCM)0 &&
+ pcmdata[ii] > (FIXP_PCM)MAXVAL_FIXP_PCM - noiseVal) {
noiseVal = noiseVal * (FIXP_PCM)-1;
- } else if (pcmdata[ii] < (FIXP_PCM)MINVAL_FIXP_PCM - noiseVal &&
- noiseVal < (FIXP_PCM)0) {
+ } else if (noiseVal < (FIXP_PCM)0 &&
+ pcmdata[ii] < (FIXP_PCM)MINVAL_FIXP_PCM - noiseVal) {
noiseVal = noiseVal * (FIXP_PCM)-1;
}
diff --git a/libSACdec/src/sac_dec_lib.cpp b/libSACdec/src/sac_dec_lib.cpp
index 5792858..bf6dedf 100644
--- a/libSACdec/src/sac_dec_lib.cpp
+++ b/libSACdec/src/sac_dec_lib.cpp
@@ -1658,6 +1658,10 @@ int mpegSurroundDecoder_Apply(CMpegSurroundDecoder *pMpegSurroundDecoder,
initControlFlags = controlFlags;
/* Check that provided output buffer is large enough. */
+ if (pMpegSurroundDecoder->pQmfDomain->globalConf.nBandsAnalysis == 0) {
+ err = MPS_UNSUPPORTED_FORMAT;
+ goto bail;
+ }
timeDataRequiredSize =
(timeDataFrameSize *
pMpegSurroundDecoder->pSpatialDec->numOutputChannelsAT *