From 963b1891562e930a7d997215e700ef5ec5b4461e Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Fri, 18 Aug 2017 22:33:37 +0300 Subject: Enhance TNS tuning for 8 kHz audio sampling rate This tuning has been suggested by Fraunhofer, fixing overflows in encoding certain sequences. --- libAACenc/src/aacenc_tns.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libAACenc/src/aacenc_tns.cpp') diff --git a/libAACenc/src/aacenc_tns.cpp b/libAACenc/src/aacenc_tns.cpp index 9a07e8f..5fcd309 100644 --- a/libAACenc/src/aacenc_tns.cpp +++ b/libAACenc/src/aacenc_tns.cpp @@ -388,7 +388,7 @@ AAC_ENCODER_ERROR FDKaacEnc_InitTnsConfiguration(INT bitRate, switch (granuleLength) { case 1024: /* TNS start line: skip lower MDCT lines to prevent artifacts due to filter mismatch */ - tC->lpcStartBand[LOFILT] = (blockType == SHORT_WINDOW) ? 0 : ((sampleRate < 18783) ? 4 : 8); + tC->lpcStartBand[LOFILT] = (blockType == SHORT_WINDOW) ? 0 : ((sampleRate <= 8000) ? 2 : ((sampleRate < 18783) ? 4 : 8)); tC->lpcStartLine[LOFILT] = pC->sfbOffset[tC->lpcStartBand[LOFILT]]; i = tC->lpcStopBand; -- cgit v1.2.3 From 1e3515e03e2dbdbd48dacc31ef75d25c201a4c51 Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Mon, 30 Oct 2017 23:06:44 +0200 Subject: Fix an assertion failure (avoid division by zero) when encoding a particular input --- libAACenc/src/aacenc_tns.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'libAACenc/src/aacenc_tns.cpp') diff --git a/libAACenc/src/aacenc_tns.cpp b/libAACenc/src/aacenc_tns.cpp index 5fcd309..3026d69 100644 --- a/libAACenc/src/aacenc_tns.cpp +++ b/libAACenc/src/aacenc_tns.cpp @@ -1147,6 +1147,9 @@ static INT FDKaacEnc_AutoToParcor( workBuffer++; } + if (input[0] == 0) + input[0] = 1; + tmp = fMult((FIXP_DBL)((LONG)TNS_PREDGAIN_SCALE<<21), fDivNorm(fAbs(autoCorr_0), fAbs(input[0]), &scale)); if ( fMultDiv2(autoCorr_0, input[0])