diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-03-04 15:52:49 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-03-04 15:52:49 +0100 |
commit | c7f9c2d1d996ac8f67927e9c86b907196ca6a72d (patch) | |
tree | a2dcc8e8cd3df5628f43242243fd475562ea4082 /libFDK/src/FDK_decorrelate.cpp | |
parent | f665ac21b355ebc74c951c09b4774936a74fdca0 (diff) | |
parent | 95858d7bd36f19bde4a9595e2bd68f195215b164 (diff) | |
download | fdk-aac-c7f9c2d1d996ac8f67927e9c86b907196ca6a72d.tar.gz fdk-aac-c7f9c2d1d996ac8f67927e9c86b907196ca6a72d.tar.bz2 fdk-aac-c7f9c2d1d996ac8f67927e9c86b907196ca6a72d.zip |
Merge remote-tracking branch 'mstorjo/master' into dabplus2
Diffstat (limited to 'libFDK/src/FDK_decorrelate.cpp')
-rw-r--r-- | libFDK/src/FDK_decorrelate.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/libFDK/src/FDK_decorrelate.cpp b/libFDK/src/FDK_decorrelate.cpp index 8e665b7..c5de79a 100644 --- a/libFDK/src/FDK_decorrelate.cpp +++ b/libFDK/src/FDK_decorrelate.cpp @@ -1086,8 +1086,9 @@ static INT DuckerCalcEnergy(DUCKER_INSTANCE *const self, pb = SpatialDecGetProcessingBand(maxHybBand, self->mapHybBands2ProcBands); for (qs = startHybBand; qs <= maxHybBand; qs++) { pb = SpatialDecGetProcessingBand(qs, self->mapHybBands2ProcBands); - energy[pb] += - (fPow2Div2(inputReal[qs] << clz) + fPow2Div2(inputImag[qs] << clz)); + energy[pb] = + fAddSaturate(energy[pb], fPow2Div2(inputReal[qs] << clz) + + fPow2Div2(inputImag[qs] << clz)); } pb++; @@ -1100,7 +1101,7 @@ static INT DuckerCalcEnergy(DUCKER_INSTANCE *const self, FIXP_DBL nrg = 0; qs_next = (int)self->qs_next[pb]; for (; qs < qs_next; qs++) { - nrg += fPow2Div2(inputReal[qs] << clz); + nrg = fAddSaturate(nrg, fPow2Div2(inputReal[qs] << clz)); } energy[pb] = nrg; } @@ -1138,13 +1139,14 @@ static INT DuckerCalcEnergy(DUCKER_INSTANCE *const self, #else for (qs = startHybBand; qs <= maxHybBand; qs++) { int pb = SpatialDecGetProcessingBand(qs, self->mapHybBands2ProcBands); - energy[pb] += - (fPow2Div2(inputReal[qs] << clz) + fPow2Div2(inputImag[qs] << clz)); + energy[pb] = + fAddSaturate(energy[pb], fPow2Div2(inputReal[qs] << clz) + + fPow2Div2(inputImag[qs] << clz)); } for (; qs <= maxHybridBand; qs++) { int pb = SpatialDecGetProcessingBand(qs, self->mapHybBands2ProcBands); - energy[pb] += fPow2Div2(inputReal[qs] << clz); + energy[pb] = fAddSaturate(energy[pb], fPow2Div2(inputReal[qs] << clz)); } #endif /* FUNCTION_DuckerCalcEnergy_func4 */ } @@ -1237,9 +1239,9 @@ static INT DuckerApply(DUCKER_INSTANCE *const self, tmp1 = scaleValue(tmp1, scaleSmoothDirRevNrg_asExponent); tmp2 = scaleValue(tmp2, scaleSmoothDirRevNrg_asExponent); - tmp1 = fMultAddDiv2(tmp1, directNrg[pb] >> scaleDirectNrg, + tmp1 = fMultAddDiv2(tmp1, scaleValue(directNrg[pb], -scaleDirectNrg), DUCK_ONE_MINUS_ALPHA_X4_FDK); - tmp2 = fMultAddDiv2(tmp2, reverbNrg[pb] >> scaleReverbNrg, + tmp2 = fMultAddDiv2(tmp2, scaleValue(reverbNrg[pb], -scaleReverbNrg), DUCK_ONE_MINUS_ALPHA_X4_FDK); } else { tmp1 = fMultAddDiv2(tmp1, directNrg[pb], DUCK_ONE_MINUS_ALPHA_X4_FDK); |