From 381d69840ad3af2259f0b7ef49236f9ee9c76b76 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Sun, 9 Sep 2012 11:48:51 -0700 Subject: Bug fixes in AAC decoder, AAC encoder, FDK library Latest code drop from Fraunhofer: * AAC-Decoder - Expanded AAC-LD/ELD decoder TNS max band tables to avoid wrong data access for sampling rates <22kHz and >48kHz. Modified file(s): libAACdec\src\aacdec_tns.cpp libAACdec\src\aac_rom.h libAACdec\src\aac_rom.cpp - Fixed ELD synthesis QMF filterbank scaling for downsampled SBR. Modified file(s): libFDK\src\qmf.cpp * AAC-Encoder - Fixed bit rate limiting for lower limit as introduced in the Delivery 2012-05-11. Modified file(s): libAACenc\include\aacenc_lib.h libAACenc\src\aacenc.h libAACenc\src\aacenc.cpp libSBRenc\src\sbr_rom.h libSBRenc\src\sbr_rom.cpp - Allow negative prediction gain as meaning that there is no coding gain. Make use of scaleValueSaturate in gauss window calculation. Modified file(s): libAACenc\src\aacenc_tns.cpp - Added energy saturation to prevent overflow in short blocks. Modified file(s): libAACenc\src\grp_data.cpp - Perform scalefactor adaption in case quantized lines are out of valid range. Modified file(s): libAACenc\src\quantize.cpp - Interrupt quantization loop when no spectral data is available. Adjustments in bitreservoir adaption. Modified file(s): libAACenc\src\qc_main.cpp - Indroduced dynamic scaling in none missing harmonic energy lowering compensation. Modified file(s): libSBRenc\src\env_est.cpp * FDK-Library - Fixed saturation for negative values in scaleValueSaturate. Modified file(s): libFDK\include\scale.h Change-Id: If830ea65caef6b5554281e4b7a77a8b2e08825ce --- libAACenc/src/aacenc.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'libAACenc/src/aacenc.cpp') diff --git a/libAACenc/src/aacenc.cpp b/libAACenc/src/aacenc.cpp index 85083cd..d3f36aa 100644 --- a/libAACenc/src/aacenc.cpp +++ b/libAACenc/src/aacenc.cpp @@ -149,7 +149,7 @@ INT FDKaacEnc_LimitBitrate( transportBits = 208; } - bitRate = FDKmax(bitRate, ((((40 * nChannels) + transportBits + frameLength) * (coreSamplingRate)) / frameLength) ); + bitRate = FDKmax(bitRate, ((((40 * nChannels) + transportBits) * (coreSamplingRate)) / frameLength) ); FDK_ASSERT(bitRate >= 0); bitRate = FDKmin(bitRate, ((nChannelsEff * MIN_BUFSIZE_PER_EFF_CHAN)*(coreSamplingRate>>shift)) / (frameLength>>shift)) ; @@ -280,7 +280,7 @@ void FDKaacEnc_AacInitDefaultConfig(AACENC_CONFIG *config) config->useTns = TNS_ENABLE_MASK; /* tns enabled completly */ config->usePns = 1; /* depending on channelBitrate this might be set to 0 later */ config->useIS = 1; /* Intensity Stereo Configuration */ - config->framelength = DEFAULT_FRAMELENGTH; /* used frame size */ + config->framelength = -1; /* Framesize not configured */ config->syntaxFlags = 0; /* default syntax with no specialities */ config->epConfig = -1; /* no ER syntax -> no additional error protection */ config->nSubFrames = 1; /* default, no sub frames */ @@ -451,11 +451,8 @@ AAC_ENCODER_ERROR FDKaacEnc_Initialize(HANDLE_AAC_ENC hAacEnc, switch (config->framelength) { case 1024: - if ( config->audioObjectType != AOT_AAC_LC - && config->audioObjectType != AOT_SBR - && config->audioObjectType != AOT_PS - && config->audioObjectType != AOT_ER_AAC_LC - && config->audioObjectType != AOT_AAC_SCAL ) + if ( config->audioObjectType == AOT_ER_AAC_LD + || config->audioObjectType == AOT_ER_AAC_ELD ) { return AAC_ENC_INVALID_FRAME_LENGTH; } -- cgit v1.2.3