Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ #define FIX_2404_HARM_SIGNAL_CLAS /* VA: basop-2404, harmonize signal_clas and signa_ivas_clas */ #define HARMONIZE_ACELP_ENC /* VA: basop issue 2400: Remove duplicated main ACELP encoder function */ #define FIX_2392_MSAN_DESTROY_DEC /* VA: basop issue 2392: fix MSAN in ivas_destroy_dec_fx() */ #define FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT /* FhG: basop issue 2411: harmonize TNSAnalysis*_fx(), DetectTnsFilt*_fx()*/ /* #################### End BE switches ################################## */ Loading lib_enc/cod_tcx_fx.c +19 −4 Original line number Diff line number Diff line Loading @@ -135,6 +135,8 @@ void HBAutocorrelation_fx( } } #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_fx( TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* input: frame length */ Loading Loading @@ -217,8 +219,12 @@ void TNSAnalysis_fx( } } } #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_ivas_fx( #else void TNSAnalysis_fx( #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Word16 L_spec, /* i : length of the spectrum */ Loading Loading @@ -274,8 +280,14 @@ void TNSAnalysis_ivas_fx( } move16(); #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT * pfUseTns = (Word8)DetectTnsFilt_fx(hTcxCfg->pCurrentTnsConfig, spectrum, pTnsData, hTranDet, (Word8)NE_16(transform_type, TCX_20), ltp_gain, predictionGain); #else * pfUseTns = (Word8)DetectTnsFilt_ivas_fx(hTcxCfg->pCurrentTnsConfig, spectrum, pTnsData, hTranDet, (Word8)NE_16(transform_type, TCX_20), ltp_gain, predictionGain); #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT /* If TNS should be used then get the residual after applying it inplace in spectrum */ IF( *pfUseTns != 0 ) { Loading Loading @@ -3847,8 +3859,11 @@ void coder_tcx_fx( { SetTnsConfig( hTcxCfg, sub( L_frame_glob, st->L_frame ) == 0, st->last_core == 0 ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_fx( hTcxCfg, L_frame, L_spec, TCX_20, st->last_core == 0, spectrum, hTcxEnc->tnsData, hTcxEnc->fUseTns, &st->hIGFEnc->tns_predictionGain ); #else TNSAnalysis_fx(hTcxCfg, L_frame, L_spec, TCX_20, st->last_core == 0, spectrum, st->hTranDet , -32768 ,hTcxEnc->tnsData, hTcxEnc->fUseTns, &st->hIGFEnc->tns_predictionGain); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } ELSE { Loading lib_enc/ext_sig_ana_fx.c +20 −3 Original line number Diff line number Diff line Loading @@ -406,10 +406,19 @@ void core_signal_analysis_high_bitrate_fx( { test(); test(); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_fx( st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], ( frameno == 0 ) && ( st->last_core == ACELP_CORE ), spectrum[frameno], &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL ); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], (frameno == 0) && (st->last_core == ACELP_CORE), spectrum[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT { EncodeTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, &hTcxEnc->tnsData[frameno], param_core + frameno * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, pTnsSize + frameno, pTnsBits + frameno ); Loading Loading @@ -1198,11 +1207,19 @@ void core_signal_analysis_high_bitrate_ivas_fx( test(); IF( ( frameno == 0 ) && ( st->last_core == ACELP_CORE ) ) { #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_ivas_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 1, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 1, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } ELSE { #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_ivas_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 0, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 0, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } IF( st->hTcxCfg->fIsTNSAllowed ) Loading lib_enc/prot_fx_enc.h +17 −3 Original line number Diff line number Diff line Loading @@ -1541,14 +1541,20 @@ void CalculateTnsFilt_fx( const Word16 pSpectrum_e, STnsData *pTnsData /* o : TNS data struct */ ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( STnsConfig const *pTnsConfig, Word32 const pSpectrum[], STnsData *pTnsData, Word16 *predictionGain ); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( #else Word16 DetectTnsFilt_ivas_fx( #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ Word32 const pSpectrum[], /* i : MDCT spectrum Q=Qx */ STnsData *pTnsData, /* o : TNS data struct */ Loading @@ -1558,6 +1564,7 @@ Word16 DetectTnsFilt_ivas_fx( Word16 *predictionGain /* o : TNS prediction gain Q=7 */ ); Word16 EncodeTnsData_fx( STnsConfig const *pTnsConfig, STnsData const *pTnsData, Loading Loading @@ -2726,6 +2733,7 @@ void IGFEncResetTCX10BitCounter_fx( const IGF_ENC_INSTANCE_HANDLE hInstance /**< in: | instance handle of IGF Encoder */ ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_fx( TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Loading @@ -2737,7 +2745,13 @@ void TNSAnalysis_fx( Word8* pfUseTns, /* o : Flag indicating if TNS is used */ Word16* predictionGain); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_ivas_fx( #else void TNSAnalysis_fx( #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Word16 L_spec, /* i : length of the spectrum */ Loading lib_enc/tns_base_enc_fx.c +127 −116 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ typedef Word32 ( *TLinearPredictionFilter )( Word16 order, Word16 const parCoeff /********************************/ #define MAX_SUBDIVISIONS 3 #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx(STnsConfig const* pTnsConfig, Word32 const pSpectrum[], Loading Loading @@ -301,7 +302,7 @@ Word16 DetectTnsFilt_fx( STnsConfig const *pTnsConfig, return (pTnsData->nFilters > 0); } #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void CalculateTnsFilt_fx( STnsConfig const* pTnsConfig, /* i : TNS Configuration struct */ const Word32 pSpectrum[], /* i : MDCT spectrum */ Loading Loading @@ -409,7 +410,13 @@ void CalculateTnsFilt_fx( return; } Word16 DetectTnsFilt_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( #else Word16 DetectTnsFilt_ivas_fx( #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT STnsConfig const* pTnsConfig, /* i : TNS Configuration struct */ Word32 const pSpectrum[], /* i : MDCT spectrum Q=Qx */ STnsData* pTnsData, /* o : TNS data struct */ TRAN_DET_HANDLE hTranDet, /* i : transient detection handle */ Loading Loading @@ -630,7 +637,11 @@ Word16 DetectTnsFilt_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configur } /* We check the filter's decisions in the opposite direction */ #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT FOR(iFilter = (pTnsConfig->nMaxFilters - 1); iFilter >= 0; iFilter--) #else FOR(iFilter = sub(pTnsConfig->nMaxFilters, 1); iFilter >= 0; iFilter--) #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT { STnsFilter *pFilter; struct TnsParameters const *pTnsParameters; Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -94,6 +94,7 @@ #define FIX_2404_HARM_SIGNAL_CLAS /* VA: basop-2404, harmonize signal_clas and signa_ivas_clas */ #define HARMONIZE_ACELP_ENC /* VA: basop issue 2400: Remove duplicated main ACELP encoder function */ #define FIX_2392_MSAN_DESTROY_DEC /* VA: basop issue 2392: fix MSAN in ivas_destroy_dec_fx() */ #define FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT /* FhG: basop issue 2411: harmonize TNSAnalysis*_fx(), DetectTnsFilt*_fx()*/ /* #################### End BE switches ################################## */ Loading
lib_enc/cod_tcx_fx.c +19 −4 Original line number Diff line number Diff line Loading @@ -135,6 +135,8 @@ void HBAutocorrelation_fx( } } #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_fx( TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* input: frame length */ Loading Loading @@ -217,8 +219,12 @@ void TNSAnalysis_fx( } } } #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_ivas_fx( #else void TNSAnalysis_fx( #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Word16 L_spec, /* i : length of the spectrum */ Loading Loading @@ -274,8 +280,14 @@ void TNSAnalysis_ivas_fx( } move16(); #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT * pfUseTns = (Word8)DetectTnsFilt_fx(hTcxCfg->pCurrentTnsConfig, spectrum, pTnsData, hTranDet, (Word8)NE_16(transform_type, TCX_20), ltp_gain, predictionGain); #else * pfUseTns = (Word8)DetectTnsFilt_ivas_fx(hTcxCfg->pCurrentTnsConfig, spectrum, pTnsData, hTranDet, (Word8)NE_16(transform_type, TCX_20), ltp_gain, predictionGain); #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT /* If TNS should be used then get the residual after applying it inplace in spectrum */ IF( *pfUseTns != 0 ) { Loading Loading @@ -3847,8 +3859,11 @@ void coder_tcx_fx( { SetTnsConfig( hTcxCfg, sub( L_frame_glob, st->L_frame ) == 0, st->last_core == 0 ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_fx( hTcxCfg, L_frame, L_spec, TCX_20, st->last_core == 0, spectrum, hTcxEnc->tnsData, hTcxEnc->fUseTns, &st->hIGFEnc->tns_predictionGain ); #else TNSAnalysis_fx(hTcxCfg, L_frame, L_spec, TCX_20, st->last_core == 0, spectrum, st->hTranDet , -32768 ,hTcxEnc->tnsData, hTcxEnc->fUseTns, &st->hIGFEnc->tns_predictionGain); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } ELSE { Loading
lib_enc/ext_sig_ana_fx.c +20 −3 Original line number Diff line number Diff line Loading @@ -406,10 +406,19 @@ void core_signal_analysis_high_bitrate_fx( { test(); test(); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_fx( st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], ( frameno == 0 ) && ( st->last_core == ACELP_CORE ), spectrum[frameno], &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL ); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], (frameno == 0) && (st->last_core == ACELP_CORE), spectrum[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT { EncodeTnsData_fx( st->hTcxCfg->pCurrentTnsConfig, &hTcxEnc->tnsData[frameno], param_core + frameno * NPRM_DIV + 1 + NOISE_FILL_RANGES + LTPSIZE, pTnsSize + frameno, pTnsBits + frameno ); Loading Loading @@ -1198,11 +1207,19 @@ void core_signal_analysis_high_bitrate_ivas_fx( test(); IF( ( frameno == 0 ) && ( st->last_core == ACELP_CORE ) ) { #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_ivas_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 1, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 1, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } ELSE { #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TNSAnalysis_ivas_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 0, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #else TNSAnalysis_fx(st->hTcxCfg, L_frameTCX, st->hTcxCfg->tcx_coded_lines, transform_type[frameno], 0, hTcxEnc->spectrum_fx[frameno], st->hTranDet, -32768, &hTcxEnc->tnsData[frameno], &hTcxEnc->fUseTns[frameno], NULL); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT } IF( st->hTcxCfg->fIsTNSAllowed ) Loading
lib_enc/prot_fx_enc.h +17 −3 Original line number Diff line number Diff line Loading @@ -1541,14 +1541,20 @@ void CalculateTnsFilt_fx( const Word16 pSpectrum_e, STnsData *pTnsData /* o : TNS data struct */ ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( STnsConfig const *pTnsConfig, Word32 const pSpectrum[], STnsData *pTnsData, Word16 *predictionGain ); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( #else Word16 DetectTnsFilt_ivas_fx( #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ Word32 const pSpectrum[], /* i : MDCT spectrum Q=Qx */ STnsData *pTnsData, /* o : TNS data struct */ Loading @@ -1558,6 +1564,7 @@ Word16 DetectTnsFilt_ivas_fx( Word16 *predictionGain /* o : TNS prediction gain Q=7 */ ); Word16 EncodeTnsData_fx( STnsConfig const *pTnsConfig, STnsData const *pTnsData, Loading Loading @@ -2726,6 +2733,7 @@ void IGFEncResetTCX10BitCounter_fx( const IGF_ENC_INSTANCE_HANDLE hInstance /**< in: | instance handle of IGF Encoder */ ); #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_fx( TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Loading @@ -2737,7 +2745,13 @@ void TNSAnalysis_fx( Word8* pfUseTns, /* o : Flag indicating if TNS is used */ Word16* predictionGain); #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void TNSAnalysis_ivas_fx( #else void TNSAnalysis_fx( #endif // !FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT TCX_CONFIG_HANDLE hTcxCfg, /* i : configuration of TCX */ Word16 L_frame, /* i : frame length */ Word16 L_spec, /* i : length of the spectrum */ Loading
lib_enc/tns_base_enc_fx.c +127 −116 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ typedef Word32 ( *TLinearPredictionFilter )( Word16 order, Word16 const parCoeff /********************************/ #define MAX_SUBDIVISIONS 3 #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx(STnsConfig const* pTnsConfig, Word32 const pSpectrum[], Loading Loading @@ -301,7 +302,7 @@ Word16 DetectTnsFilt_fx( STnsConfig const *pTnsConfig, return (pTnsData->nFilters > 0); } #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT void CalculateTnsFilt_fx( STnsConfig const* pTnsConfig, /* i : TNS Configuration struct */ const Word32 pSpectrum[], /* i : MDCT spectrum */ Loading Loading @@ -409,7 +410,13 @@ void CalculateTnsFilt_fx( return; } Word16 DetectTnsFilt_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configuration struct */ #ifdef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT Word16 DetectTnsFilt_fx( #else Word16 DetectTnsFilt_ivas_fx( #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT STnsConfig const* pTnsConfig, /* i : TNS Configuration struct */ Word32 const pSpectrum[], /* i : MDCT spectrum Q=Qx */ STnsData* pTnsData, /* o : TNS data struct */ TRAN_DET_HANDLE hTranDet, /* i : transient detection handle */ Loading Loading @@ -630,7 +637,11 @@ Word16 DetectTnsFilt_ivas_fx( STnsConfig const *pTnsConfig, /* i : TNS Configur } /* We check the filter's decisions in the opposite direction */ #ifndef FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT FOR(iFilter = (pTnsConfig->nMaxFilters - 1); iFilter >= 0; iFilter--) #else FOR(iFilter = sub(pTnsConfig->nMaxFilters, 1); iFilter >= 0; iFilter--) #endif // FIX_2411_Harmonize_TNSANALYSIS_DETECTTNSFILT { STnsFilter *pFilter; struct TnsParameters const *pTnsParameters; Loading