Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ #define FIX_2455_HARMONIZE_generate_comfort_noise_enc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2455_HARMONIZE_configureFdCngEnc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2463_EVS_BWE_LSF /* VA: basop issue 2463: harmonize calling of Quant_BWE_LSF_fx() */ #define FIX_2480_HARM_TONALMDCT /* FhG: basop issue 2480 Harmonize TonalMDCTConceal_Detect_fx() and TonalMDCTConceal_Detect_ivas_fx()*/ /* #################### End BE switches ################################## */ Loading lib_dec/er_util_fx.c +5 −1 Original line number Diff line number Diff line Loading @@ -455,7 +455,11 @@ Word16 GetPLCModeDecision_fx( } ELSE { #ifndef FIX_2480_HARM_TONALMDCT TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); #else TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode); #endif // !FIX_2480_HARM_TONALMDCT } test(); Loading lib_dec/tonalMDCTconcealment_fx.c +128 −29 Original line number Diff line number Diff line Loading @@ -1061,22 +1061,47 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 element_mode ) { Word32 secondLastMDST[L_FRAME_MAX]; #ifndef FIX_2480_HARM_TONALMDCT set32_fx(secondLastMDST, 0, L_FRAME_MAX); #else IF(NE_16(element_mode, EVS_MONO)) { set32_fx(secondLastMDST, 0, L_FRAME_MAX); } #endif // !FIX_2480_HARM_TONALMDCT Word32 secondLastMDCT[L_FRAME_MAX]; Word16 secondLastMDCT_exp; Word32 *powerSpectrum = secondLastMDST; Word16 i, powerSpectrum_exp, secondLastMDST_exp, s; Word16 nSamples; // Word16 nBands; Word32 sns_int_scf_fx[FDNS_NPTS]; set32_fx(sns_int_scf_fx, 0, FDNS_NPTS); nSamples = hTonalMDCTConc->nSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); #else IF(EQ_16(element_mode, EVS_MONO)) { secondLastMDST_exp = 16; /*time signal Q-1*/ move16(); secondLastMDCT_exp = 16; /*time signal Q-1*/ move16(); } ELSE{ secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); } #endif // !FIX_2480_HARM_TONALMDCT test(); test(); test(); Loading Loading @@ -1108,8 +1133,14 @@ void TonalMDCTConceal_Detect_ivas_fx( move16(); nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT s = sub(getScaleFactor32(secondLastMDST, nSamples), 1); #else s = getScaleFactor32(secondLastMDST, nSamples); IF(NE_16(element_mode, EVS_MONO)) { s = sub(s, 1); } #endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { Loading @@ -1118,7 +1149,14 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDST_exp = sub( secondLastMDST_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT s = sub(getScaleFactor32(secondLastMDCT, nSamples), 1); #else s = getScaleFactor32(secondLastMDCT, nSamples); IF(NE_16(element_mode, EVS_MONO)) { s = sub(s, 1); } #endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { Loading @@ -1127,7 +1165,16 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDCT_exp = sub( secondLastMDCT_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); #else IF(EQ_16(element_mode, EVS_MONO)) { CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode); } ELSE{ CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); } #endif // !FIX_2480_HARM_TONALMDCT } ELSE { Loading @@ -1136,8 +1183,15 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 temp_power_spectrum_q = 0; nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); #else IF(NE_16(element_mode, EVS_MONO)) { Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); } #endif // !FIX_2480_HARM_TONALMDCT IF( psychParamsCurrent == NULL ) { mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples, Loading Loading @@ -1175,7 +1229,47 @@ void TonalMDCTConceal_Detect_ivas_fx( } powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) ); } #ifndef FIX_2480_HARM_TONALMDCT RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, hTonalMDCTConc->pTCI->phaseDiff, hTonalMDCTConc->pTCI->phase_currentFramePredicted, (Word16*)&hTonalMDCTConc->pTCI->numIndexes, hTonalMDCTConc->lastPitchLag, pitchLag, hTonalMDCTConc->lastBlockData.spectralData, add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), hTonalMDCTConc->lastBlockData.scaleFactors, hTonalMDCTConc->lastBlockData.scaleFactors_exp, hTonalMDCTConc->lastBlockData.scaleFactors_max_e, powerSpectrum, powerSpectrum_exp, nSamples, hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ #else IF(EQ_16(element_mode, EVS_MONO)) { RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, hTonalMDCTConc->pTCI->phaseDiff, hTonalMDCTConc->pTCI->phase_currentFramePredicted, (Word16*)&hTonalMDCTConc->pTCI->numIndexes, hTonalMDCTConc->lastPitchLag, pitchLag, hTonalMDCTConc->lastBlockData.spectralData, add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), hTonalMDCTConc->lastBlockData.scaleFactors, hTonalMDCTConc->lastBlockData.scaleFactors_exp, hTonalMDCTConc->lastBlockData.scaleFactors_max_e, powerSpectrum, -1, nSamples, hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, NULL); } ELSE{ RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, Loading @@ -1195,6 +1289,11 @@ void TonalMDCTConceal_Detect_ivas_fx( hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ } #endif // !FIX_2480_HARM_TONALMDCT } } } ELSE Loading Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ #define FIX_2455_HARMONIZE_generate_comfort_noise_enc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2455_HARMONIZE_configureFdCngEnc /* FhG: harmonize generate_comfort_noise_enc and generate_comfort_noise_enc_ivas */ #define FIX_2463_EVS_BWE_LSF /* VA: basop issue 2463: harmonize calling of Quant_BWE_LSF_fx() */ #define FIX_2480_HARM_TONALMDCT /* FhG: basop issue 2480 Harmonize TonalMDCTConceal_Detect_fx() and TonalMDCTConceal_Detect_ivas_fx()*/ /* #################### End BE switches ################################## */ Loading
lib_dec/er_util_fx.c +5 −1 Original line number Diff line number Diff line Loading @@ -455,7 +455,11 @@ Word16 GetPLCModeDecision_fx( } ELSE { #ifndef FIX_2480_HARM_TONALMDCT TonalMDCTConceal_Detect_fx(st->hTonalMDCTConc, pitch, &numIndices, st->element_mode); #else TonalMDCTConceal_Detect_ivas_fx(st->hTonalMDCTConc, pitch, &numIndices, NULL, st->element_mode); #endif // !FIX_2480_HARM_TONALMDCT } test(); Loading
lib_dec/tonalMDCTconcealment_fx.c +128 −29 Original line number Diff line number Diff line Loading @@ -1061,22 +1061,47 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 element_mode ) { Word32 secondLastMDST[L_FRAME_MAX]; #ifndef FIX_2480_HARM_TONALMDCT set32_fx(secondLastMDST, 0, L_FRAME_MAX); #else IF(NE_16(element_mode, EVS_MONO)) { set32_fx(secondLastMDST, 0, L_FRAME_MAX); } #endif // !FIX_2480_HARM_TONALMDCT Word32 secondLastMDCT[L_FRAME_MAX]; Word16 secondLastMDCT_exp; Word32 *powerSpectrum = secondLastMDST; Word16 i, powerSpectrum_exp, secondLastMDST_exp, s; Word16 nSamples; // Word16 nBands; Word32 sns_int_scf_fx[FDNS_NPTS]; set32_fx(sns_int_scf_fx, 0, FDNS_NPTS); nSamples = hTonalMDCTConc->nSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); #else IF(EQ_16(element_mode, EVS_MONO)) { secondLastMDST_exp = 16; /*time signal Q-1*/ move16(); secondLastMDCT_exp = 16; /*time signal Q-1*/ move16(); } ELSE{ secondLastMDST_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); secondLastMDCT_exp = sub(16, hTonalMDCTConc->q_lastPcmOut); /*time signal Q-1 - hTonalMDCTConc->q_lastPcmOut*/ move16(); } #endif // !FIX_2480_HARM_TONALMDCT test(); test(); test(); Loading Loading @@ -1108,8 +1133,14 @@ void TonalMDCTConceal_Detect_ivas_fx( move16(); nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT s = sub(getScaleFactor32(secondLastMDST, nSamples), 1); #else s = getScaleFactor32(secondLastMDST, nSamples); IF(NE_16(element_mode, EVS_MONO)) { s = sub(s, 1); } #endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { Loading @@ -1118,7 +1149,14 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDST_exp = sub( secondLastMDST_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT s = sub(getScaleFactor32(secondLastMDCT, nSamples), 1); #else s = getScaleFactor32(secondLastMDCT, nSamples); IF(NE_16(element_mode, EVS_MONO)) { s = sub(s, 1); } #endif // !FIX_2480_HARM_TONALMDCT FOR( i = 0; i < nSamples; i++ ) { Loading @@ -1127,7 +1165,16 @@ void TonalMDCTConceal_Detect_ivas_fx( } secondLastMDCT_exp = sub( secondLastMDCT_exp, s ); move16(); #ifndef FIX_2480_HARM_TONALMDCT CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); #else IF(EQ_16(element_mode, EVS_MONO)) { CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, NULL, element_mode); } ELSE{ CalcPowerSpecAndDetectTonalComponents_fx(hTonalMDCTConc, secondLastMDST, secondLastMDST_exp, secondLastMDCT, secondLastMDCT_exp, pitchLag, psychParamsCurrent, element_mode); } #endif // !FIX_2480_HARM_TONALMDCT } ELSE { Loading @@ -1136,8 +1183,15 @@ void TonalMDCTConceal_Detect_ivas_fx( Word16 temp_power_spectrum_q = 0; nSamples = hTonalMDCTConc->nNonZeroSamples; move16(); #ifndef FIX_2480_HARM_TONALMDCT Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); #else IF(NE_16(element_mode, EVS_MONO)) { Copy_Scale_sig_16_32_DEPREC(hTonalMDCTConc->secondLastPowerSpectrum, powerSpectrum, nSamples, Q15); temp_power_spectrum_q = add(Q15, sub(15, hTonalMDCTConc->secondLastPowerSpectrum_exp)); } #endif // !FIX_2480_HARM_TONALMDCT IF( psychParamsCurrent == NULL ) { mdct_shaping_16( hTonalMDCTConc->secondLastPowerSpectrum, hTonalMDCTConc->nSamplesCore, nSamples, Loading Loading @@ -1175,7 +1229,47 @@ void TonalMDCTConceal_Detect_ivas_fx( } powerSpectrum_exp = sub( 31, sub( shl( sub( Q31 - 3, powerSpectrum_exp ), 1 ), 31 ) ); } #ifndef FIX_2480_HARM_TONALMDCT RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, hTonalMDCTConc->pTCI->phaseDiff, hTonalMDCTConc->pTCI->phase_currentFramePredicted, (Word16*)&hTonalMDCTConc->pTCI->numIndexes, hTonalMDCTConc->lastPitchLag, pitchLag, hTonalMDCTConc->lastBlockData.spectralData, add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), hTonalMDCTConc->lastBlockData.scaleFactors, hTonalMDCTConc->lastBlockData.scaleFactors_exp, hTonalMDCTConc->lastBlockData.scaleFactors_max_e, powerSpectrum, powerSpectrum_exp, nSamples, hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ #else IF(EQ_16(element_mode, EVS_MONO)) { RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, hTonalMDCTConc->pTCI->phaseDiff, hTonalMDCTConc->pTCI->phase_currentFramePredicted, (Word16*)&hTonalMDCTConc->pTCI->numIndexes, hTonalMDCTConc->lastPitchLag, pitchLag, hTonalMDCTConc->lastBlockData.spectralData, add(hTonalMDCTConc->lastBlockData.spectralData_exp, hTonalMDCTConc->lastBlockData.gain_tcx_exp), hTonalMDCTConc->lastBlockData.scaleFactors, hTonalMDCTConc->lastBlockData.scaleFactors_exp, hTonalMDCTConc->lastBlockData.scaleFactors_max_e, powerSpectrum, -1, nSamples, hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, NULL); } ELSE{ RefineTonalComponents_fx((Word16*)hTonalMDCTConc->pTCI->indexOfTonalPeak, (Word16*)hTonalMDCTConc->pTCI->lowerIndex, (Word16*)hTonalMDCTConc->pTCI->upperIndex, Loading @@ -1195,6 +1289,11 @@ void TonalMDCTConceal_Detect_ivas_fx( hTonalMDCTConc->nSamplesCore, extract_l(Mpy_32_16_1(L_mult0(hTonalMDCTConc->nSamples, hTonalMDCTConc->nSamples), 82)), element_mode, psychParamsCurrent); /* floorPowerSpectrum */ } #endif // !FIX_2480_HARM_TONALMDCT } } } ELSE Loading