From fc4d7b0e73a87042f87ab847cfbe60e4d2dddf71 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Thu, 8 Aug 2013 17:47:33 -0700 Subject: SBR encoder improvement SBR encoder: Introduce coupling energy ratio limitation to prevent undesirable SBR band amplification while decoding. Bug 9428126 Change-Id: I18a77cd1a178fff7531b490779a29a0df7d993af --- libSBRenc/src/env_est.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'libSBRenc/src/env_est.cpp') diff --git a/libSBRenc/src/env_est.cpp b/libSBRenc/src/env_est.cpp index e441cbd..9924348 100644 --- a/libSBRenc/src/env_est.cpp +++ b/libSBRenc/src/env_est.cpp @@ -817,22 +817,22 @@ calculateSbrEnvelope (FIXP_DBL **RESTRICT YBufferLeft, /*! energy buffer left * } /* ld64 to integer conversion */ - nrgLeft = fixMin(fixMax(nrgLeft,FL2FXCONST_DBL(0.0f)),FL2FXCONST_DBL(0.5f)); + nrgLeft = fixMin(fixMax(nrgLeft,FL2FXCONST_DBL(0.0f)),(FL2FXCONST_DBL(0.5f)>>oneBitLess)); nrgLeft = (FIXP_DBL)(LONG)nrgLeft >> (DFRACT_BITS-1-LD_DATA_SHIFT-1-oneBitLess-1); sfb_nrgLeft[m] = ((INT)nrgLeft+1)>>1; /* rounding */ if (stereoMode == SBR_COUPLING) { FIXP_DBL scaleFract; + int sc0, sc1; - if (nrgRight != FL2FXCONST_DBL(0.0f)) { - int sc0 = CountLeadingBits(nrgLeft2); - int sc1 = CountLeadingBits(nrgRight); + nrgLeft2 = fixMax((FIXP_DBL)0x1, nrgLeft2); + nrgRight = fixMax((FIXP_DBL)0x1, nrgRight); - scaleFract = ((FIXP_DBL)(sc0-sc1)) << (DFRACT_BITS-1-LD_DATA_SHIFT); /* scale value in ld64 representation */ - nrgRight = CalcLdData(nrgLeft2<> (DFRACT_BITS-1-LD_DATA_SHIFT-1-oneBitLess); -- cgit v1.2.3