mirror of https://github.com/mstorsjo/fdk-aac.git
SBR encoder improvement
SBR encoder: Introduce coupling energy ratio limitation to prevent undesirable SBR band amplification while decoding. Bug 9428126 Change-Id: I18a77cd1a178fff7531b490779a29a0df7d993af
This commit is contained in:
parent
60a27b7fe5
commit
fc4d7b0e73
|
@ -98,7 +98,7 @@ amm-info@iis.fraunhofer.de
|
|||
/* Encoder library info */
|
||||
#define AACENCODER_LIB_VL0 3
|
||||
#define AACENCODER_LIB_VL1 4
|
||||
#define AACENCODER_LIB_VL2 3
|
||||
#define AACENCODER_LIB_VL2 4
|
||||
#define AACENCODER_LIB_TITLE "AAC Encoder"
|
||||
#define AACENCODER_LIB_BUILD_DATE __DATE__
|
||||
#define AACENCODER_LIB_BUILD_TIME __TIME__
|
||||
|
|
|
@ -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<<sc0) - CalcLdData(nrgRight<<sc1) - scaleFract;
|
||||
}
|
||||
else
|
||||
nrgRight = FL2FXCONST_DBL(0.5f); /* ld64(4294967296.0f) */
|
||||
sc0 = CountLeadingBits(nrgLeft2);
|
||||
sc1 = CountLeadingBits(nrgRight);
|
||||
|
||||
scaleFract = ((FIXP_DBL)(sc0-sc1)) << (DFRACT_BITS-1-LD_DATA_SHIFT); /* scale value in ld64 representation */
|
||||
nrgRight = CalcLdData(nrgLeft2<<sc0) - CalcLdData(nrgRight<<sc1) - scaleFract;
|
||||
|
||||
/* ld64 to integer conversion */
|
||||
nrgRight = (FIXP_DBL)(LONG)(nrgRight) >> (DFRACT_BITS-1-LD_DATA_SHIFT-1-oneBitLess);
|
||||
|
|
|
@ -103,7 +103,7 @@ amm-info@iis.fraunhofer.de
|
|||
|
||||
#define SBRENCODER_LIB_VL0 3
|
||||
#define SBRENCODER_LIB_VL1 3
|
||||
#define SBRENCODER_LIB_VL2 0
|
||||
#define SBRENCODER_LIB_VL2 1
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue