diff options
author | Fraunhofer IIS FDK <audio-fdk@iis.fraunhofer.de> | 2019-05-15 09:34:46 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-05-15 09:34:46 -0700 |
commit | a74915ffc4fe15f04c229b63f7ae6ad7b9b8f2a0 (patch) | |
tree | 8528dcb05a51c14173957c4c193642652f591218 | |
parent | 94cac56aeb602c444b07f6dcbd6842203a45ff7d (diff) | |
parent | 17e60ff0c4cf9913ca3d7102a8292a435d66dd58 (diff) | |
download | fdk-aac-a74915ffc4fe15f04c229b63f7ae6ad7b9b8f2a0.tar.gz fdk-aac-a74915ffc4fe15f04c229b63f7ae6ad7b9b8f2a0.tar.bz2 fdk-aac-a74915ffc4fe15f04c229b63f7ae6ad7b9b8f2a0.zip |
Improve accuracy of division in calcSubbandGain(). am: 69a5c189ad
am: 17e60ff0c4
Change-Id: Ie4fa41d7fcd3ac706bf0c66449e102b3057609d4
-rw-r--r-- | libSBRdec/src/env_calc.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libSBRdec/src/env_calc.cpp b/libSBRdec/src/env_calc.cpp index cb1474f..11b7eca 100644 --- a/libSBRdec/src/env_calc.cpp +++ b/libSBRdec/src/env_calc.cpp @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------------- Software License for The Fraunhofer FDK AAC Codec Library for Android -© Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten +© Copyright 1995 - 2019 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. All rights reserved. 1. INTRODUCTION @@ -2325,7 +2325,15 @@ static void calcSubbandGain( } /* gain = nrgRef / B */ - FDK_divide_MantExp(nrgRef, nrgRef_e, b, b_e, ptrNrgGain, ptrNrgGain_e); + INT result_exp = 0; + *ptrNrgGain = fDivNorm(nrgRef, b, &result_exp); + *ptrNrgGain_e = (SCHAR)result_exp + (nrgRef_e - b_e); + + /* There could be a one bit diffs. This is important to compensate, + because later in the code values are compared by exponent only. */ + int headroom = CountLeadingBits(*ptrNrgGain); + *ptrNrgGain <<= headroom; + *ptrNrgGain_e -= headroom; } } |