Loading lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ #define FIX_1904_HARM_GSC_ENC /* VA: #1904 Harmonization of EVS and IVAS GSC code */ #define FIX_2397_COPY_AQ_MDCT_CORE_BFI /* FhG: prevent copying of uninit memory in MDCT stereo core if bfi is set */ #define HARMONIZE_TBE /* VA: harmonize core-coder TBE function duplications */ #define FIX_2405_HARM_SMC_INIT /* VA, basop 2405, harmonisation of SMC init */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading lib_enc/init_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -545,6 +545,7 @@ ivas_error init_encoder_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Speech/music classifier\n" ) ); } #ifndef FIX_2405_HARM_SMC_INIT IF( st->element_mode == EVS_MONO ) { speech_music_clas_init_fx( st->hSpMusClas ); Loading @@ -553,6 +554,9 @@ ivas_error init_encoder_fx( { speech_music_clas_init_ivas_fx( st->hSpMusClas ); } #else speech_music_clas_init_fx( st->element_mode, st->hSpMusClas ); #endif st->sp_aud_decision0 = 0; move16(); st->sp_aud_decision1 = 0; Loading lib_enc/ivas_stereo_switching_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -93,7 +93,11 @@ static ivas_error allocate_CoreCoder_enc_fx( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Speech/music classifier\n" ) ); } #ifndef FIX_2405_HARM_SMC_INIT speech_music_clas_init_ivas_fx( st->hSpMusClas ); #else speech_music_clas_init_fx( st->element_mode, st->hSpMusClas ); #endif } return IVAS_ERR_OK; Loading lib_enc/prot_fx_enc.h +5 −0 Original line number Diff line number Diff line Loading @@ -1125,12 +1125,17 @@ void coder_type_modif_fx( ); void speech_music_clas_init_fx( #ifdef FIX_2405_HARM_SMC_INIT const Word16 element_mode, /* element mode to differentiate IVAS only init */ #endif SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ); #ifndef FIX_2405_HARM_SMC_INIT void speech_music_clas_init_ivas_fx( SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ); #endif void pitchDoubling_det_fx( Word16 *wspeech, Loading lib_enc/speech_music_classif_fx.c +88 −84 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ Word32 log_weights_noise_compute[N_SMC_MIXTURES] = { * * Initialization of speech/music classifier *---------------------------------------------------------------------*/ #ifndef FIX_2405_HARM_SMC_INIT void speech_music_clas_init_fx( SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ) Loading Loading @@ -223,67 +223,40 @@ void speech_music_clas_init_fx( } void speech_music_clas_init_ivas_fx( #else void speech_music_clas_init_fx( const Word16 element_mode, /* element mode to differentiate IVAS only init */ #endif SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ) { Word16 i; set32_fx( hSpMusClas->FV_st_fx, 0, N_SMC_FEATURES ); hSpMusClas->inact_cnt = 0; move16(); set16_fx( hSpMusClas->past_dec, 0, HANG_LEN - 1 ); set16_fx( hSpMusClas->past_dlp_fx, 0, HANG_LEN - 1 ); set32_fx( hSpMusClas->past_dlp_mean_ST_fx, 0, HANG_LEN - 1 ); hSpMusClas->dlp_mean_ST_fx = 0; move32(); hSpMusClas->dlp_mean_LT_fx = 0; move32(); hSpMusClas->dlp_var_LT_fx = 0; move32(); FOR( i = 0; i < N_SMC_FEATURES; i++ ) { hSpMusClas->prev_FV_fx[i] = L_add( L_shr( hout_intervals_fx[2 * i], 1 ), L_shr( hout_intervals_fx[2 * i + 1], 1 ) ); move32(); } FOR( i = 0; i < NB_BANDS_SPMUS; i++ ) { hSpMusClas->past_log_enr_fx[i] = -1448; /* log(E_MIN) in Q8 */ move16(); } set16_fx( hSpMusClas->past_log_enr_fx, -1448, NB_BANDS_SPMUS ); /* log(E_MIN) in Q8 */ hSpMusClas->sp_mus_state = -8; move16(); hSpMusClas->wdrop_32fx = 0; move32(); hSpMusClas->wrise_fx = 0; hSpMusClas->wdrop_fx = 0; move16(); hSpMusClas->wdlp_0_95_sp_fx = 0; move16(); hSpMusClas->wdlp_0_95_sp_32fx = 0; move32(); hSpMusClas->wdlp_xtalk_fx = 0; move16(); set16_fx( hSpMusClas->last_lsp_fx, 0, M_LSP_SPMUS ); hSpMusClas->last_cor_map_sum_fx = 0; move16(); hSpMusClas->last_non_sta_fx = 0; move16(); set32_fx( hSpMusClas->past_PS_fx, 0, HIGHEST_FBIN - LOWEST_FBIN ); hSpMusClas->past_PS_Q = Q31; move16(); hSpMusClas->past_ps_diff_fx = 0; move16(); hSpMusClas->past_epsP2_fx = 1024; /* 1.0f in Q10 */ move16(); hSpMusClas->past_epsP_fx = 0; move16(); hSpMusClas->flag_spitch_cnt = 0; move16(); hSpMusClas->gsc_thres_fx[0] = TH_0_MIN_FX; move16(); Loading @@ -309,19 +282,6 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->last_sw_dyn_fx = 2560; /* 10.0f in Q7 */ move16(); hSpMusClas->relE_attack_cnt = 0; move16(); hSpMusClas->prev_relE_fx = 0; move16(); hSpMusClas->prev_Etot_fx = 0; move16(); hSpMusClas->prev_vad = 0; move16(); hSpMusClas->vad_0_1_cnt = 0; move16(); hSpMusClas->relE_attack_sum_fx = 0; move16(); /* speech/music classifier improvement */ FOR( i = 0; i < BUF_LEN; i++ ) { Loading Loading @@ -351,8 +311,6 @@ void speech_music_clas_init_ivas_fx( move16(); hSpMusClas->gsc_cnt = 0; move16(); hSpMusClas->last_vad_spa = 0; move16(); set16_fx( hSpMusClas->old_Bin_E_fx, 0, 3 * N_OLD_BIN_E ); set16_fx( hSpMusClas->buf_etot_fx, 0, 4 ); Loading @@ -377,30 +335,18 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->old_lt_diff_fx[1] = 0; move16(); set32_fx( hSpMusClas->finc_prev_fx, 0, ATT_NSEG ); hSpMusClas->q_finc_prev = Q31; move16(); hSpMusClas->lt_finc_fx = 0; move32(); hSpMusClas->Q_lt_finc = Q31; move16(); hSpMusClas->last_strong_attack = 0; /* GSC - pitch excitation parameters */ hSpMusClas->high_stable_cor = 0; move16(); hSpMusClas->tdm_lt_Etot_fx = 3; /* 0.01f in Q8 */ set16_fx( hSpMusClas->var_cor_t_fx, 0, VAR_COR_LEN ); hSpMusClas->lps_fx = 0; move16(); set32_fx( hSpMusClas->tod_lt_Bin_E_fx, 0, TOD_NSPEC ); hSpMusClas->Q_tod_lt_Bin_E = Q31; hSpMusClas->lpm_fx = 0; move16(); set32_fx( hSpMusClas->tod_S_map_lt_fx, 0, TOD_NSPEC ); hSpMusClas->tod_thr_lt_fx = TOD_THR_MASS_FX_Q22; move32(); hSpMusClas->tod_weight_fx = 0; hSpMusClas->lt_dec_thres_fx = 5120; move16(); /*10 in Q9 */ hSpMusClas->ener_RAT_fx = 0; move16(); hSpMusClas->tod_S_mass_prev_fx = 0; move32(); hSpMusClas->tod_S_mass_lt_fx = 0; move32(); /* speech/music classification */ set16_fx( hSpMusClas->lt_old_mode, 1, 3 ); Loading Loading @@ -428,21 +374,79 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->lt_speech_hangover = 0; move16(); hSpMusClas->lt_dec_thres_fx = 5120; /* 10.0f in Q9 */ #ifdef FIX_2405_HARM_SMC_INIT IF( element_mode > EVS_MONO ) { set32_fx( hSpMusClas->FV_st_fx, 0, N_SMC_FEATURES ); set32_fx( hSpMusClas->past_dlp_mean_ST_fx, 0, HANG_LEN - 1 ); hSpMusClas->dlp_mean_ST_fx = 0; move32(); hSpMusClas->dlp_mean_LT_fx = 0; move32(); hSpMusClas->dlp_var_LT_fx = 0; move32(); FOR( i = 0; i < N_SMC_FEATURES; i++ ) { hSpMusClas->prev_FV_fx[i] = L_add( L_shr( hout_intervals_fx[2 * i], 1 ), L_shr( hout_intervals_fx[2 * i + 1], 1 ) ); move32(); } hSpMusClas->wdrop_32fx = 0; move32(); hSpMusClas->wrise_fx = 0; move16(); hSpMusClas->ener_RAT_fx = 0; hSpMusClas->wdlp_0_95_sp_32fx = 0; move32(); hSpMusClas->wdlp_xtalk_fx = 0; move16(); hSpMusClas->high_stable_cor = 0; hSpMusClas->past_PS_Q = Q31; move16(); hSpMusClas->past_epsP_fx = 0; move16(); hSpMusClas->flag_spitch_cnt = 0; move16(); hSpMusClas->relE_attack_cnt = 0; move16(); hSpMusClas->prev_relE_fx = 0; move16(); hSpMusClas->prev_Etot_fx = 0; move16(); hSpMusClas->prev_vad = 0; move16(); hSpMusClas->vad_0_1_cnt = 0; move16(); hSpMusClas->relE_attack_sum_fx = 0; move16(); hSpMusClas->last_vad_spa = 0; move16(); set32_fx( hSpMusClas->finc_prev_fx, 0, ATT_NSEG ); hSpMusClas->q_finc_prev = Q31; move16(); hSpMusClas->lt_finc_fx = 0; move32(); hSpMusClas->Q_lt_finc = Q31; move16(); set16_fx( hSpMusClas->var_cor_t_fx, 0, VAR_COR_LEN ); hSpMusClas->lps_fx = 0; hSpMusClas->last_strong_attack = 0; move16(); hSpMusClas->lpm_fx = 0; hSpMusClas->tdm_lt_Etot_fx = 3; /* 0.01f in Q8 */ move16(); set32_fx( hSpMusClas->tod_lt_Bin_E_fx, 0, TOD_NSPEC ); hSpMusClas->Q_tod_lt_Bin_E = Q31; move16(); set32_fx( hSpMusClas->tod_S_map_lt_fx, 0, TOD_NSPEC ); hSpMusClas->tod_thr_lt_fx = TOD_THR_MASS_FX_Q22; move32(); hSpMusClas->tod_weight_fx = 0; move16(); hSpMusClas->tod_S_mass_prev_fx = 0; move32(); hSpMusClas->tod_S_mass_lt_fx = 0; move32(); hSpMusClas->lpn_fx = 0; move16(); } #endif return; } Loading Loading
lib_com/options.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ #define FIX_1904_HARM_GSC_ENC /* VA: #1904 Harmonization of EVS and IVAS GSC code */ #define FIX_2397_COPY_AQ_MDCT_CORE_BFI /* FhG: prevent copying of uninit memory in MDCT stereo core if bfi is set */ #define HARMONIZE_TBE /* VA: harmonize core-coder TBE function duplications */ #define FIX_2405_HARM_SMC_INIT /* VA, basop 2405, harmonisation of SMC init */ /* #################### End BE switches ################################## */ /* #################### Start NON-BE switches ############################ */ Loading
lib_enc/init_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -545,6 +545,7 @@ ivas_error init_encoder_fx( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Speech/music classifier\n" ) ); } #ifndef FIX_2405_HARM_SMC_INIT IF( st->element_mode == EVS_MONO ) { speech_music_clas_init_fx( st->hSpMusClas ); Loading @@ -553,6 +554,9 @@ ivas_error init_encoder_fx( { speech_music_clas_init_ivas_fx( st->hSpMusClas ); } #else speech_music_clas_init_fx( st->element_mode, st->hSpMusClas ); #endif st->sp_aud_decision0 = 0; move16(); st->sp_aud_decision1 = 0; Loading
lib_enc/ivas_stereo_switching_enc_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -93,7 +93,11 @@ static ivas_error allocate_CoreCoder_enc_fx( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Speech/music classifier\n" ) ); } #ifndef FIX_2405_HARM_SMC_INIT speech_music_clas_init_ivas_fx( st->hSpMusClas ); #else speech_music_clas_init_fx( st->element_mode, st->hSpMusClas ); #endif } return IVAS_ERR_OK; Loading
lib_enc/prot_fx_enc.h +5 −0 Original line number Diff line number Diff line Loading @@ -1125,12 +1125,17 @@ void coder_type_modif_fx( ); void speech_music_clas_init_fx( #ifdef FIX_2405_HARM_SMC_INIT const Word16 element_mode, /* element mode to differentiate IVAS only init */ #endif SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ); #ifndef FIX_2405_HARM_SMC_INIT void speech_music_clas_init_ivas_fx( SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ); #endif void pitchDoubling_det_fx( Word16 *wspeech, Loading
lib_enc/speech_music_classif_fx.c +88 −84 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ Word32 log_weights_noise_compute[N_SMC_MIXTURES] = { * * Initialization of speech/music classifier *---------------------------------------------------------------------*/ #ifndef FIX_2405_HARM_SMC_INIT void speech_music_clas_init_fx( SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ) Loading Loading @@ -223,67 +223,40 @@ void speech_music_clas_init_fx( } void speech_music_clas_init_ivas_fx( #else void speech_music_clas_init_fx( const Word16 element_mode, /* element mode to differentiate IVAS only init */ #endif SP_MUS_CLAS_HANDLE hSpMusClas /* i/o: speech/music classifier handle */ ) { Word16 i; set32_fx( hSpMusClas->FV_st_fx, 0, N_SMC_FEATURES ); hSpMusClas->inact_cnt = 0; move16(); set16_fx( hSpMusClas->past_dec, 0, HANG_LEN - 1 ); set16_fx( hSpMusClas->past_dlp_fx, 0, HANG_LEN - 1 ); set32_fx( hSpMusClas->past_dlp_mean_ST_fx, 0, HANG_LEN - 1 ); hSpMusClas->dlp_mean_ST_fx = 0; move32(); hSpMusClas->dlp_mean_LT_fx = 0; move32(); hSpMusClas->dlp_var_LT_fx = 0; move32(); FOR( i = 0; i < N_SMC_FEATURES; i++ ) { hSpMusClas->prev_FV_fx[i] = L_add( L_shr( hout_intervals_fx[2 * i], 1 ), L_shr( hout_intervals_fx[2 * i + 1], 1 ) ); move32(); } FOR( i = 0; i < NB_BANDS_SPMUS; i++ ) { hSpMusClas->past_log_enr_fx[i] = -1448; /* log(E_MIN) in Q8 */ move16(); } set16_fx( hSpMusClas->past_log_enr_fx, -1448, NB_BANDS_SPMUS ); /* log(E_MIN) in Q8 */ hSpMusClas->sp_mus_state = -8; move16(); hSpMusClas->wdrop_32fx = 0; move32(); hSpMusClas->wrise_fx = 0; hSpMusClas->wdrop_fx = 0; move16(); hSpMusClas->wdlp_0_95_sp_fx = 0; move16(); hSpMusClas->wdlp_0_95_sp_32fx = 0; move32(); hSpMusClas->wdlp_xtalk_fx = 0; move16(); set16_fx( hSpMusClas->last_lsp_fx, 0, M_LSP_SPMUS ); hSpMusClas->last_cor_map_sum_fx = 0; move16(); hSpMusClas->last_non_sta_fx = 0; move16(); set32_fx( hSpMusClas->past_PS_fx, 0, HIGHEST_FBIN - LOWEST_FBIN ); hSpMusClas->past_PS_Q = Q31; move16(); hSpMusClas->past_ps_diff_fx = 0; move16(); hSpMusClas->past_epsP2_fx = 1024; /* 1.0f in Q10 */ move16(); hSpMusClas->past_epsP_fx = 0; move16(); hSpMusClas->flag_spitch_cnt = 0; move16(); hSpMusClas->gsc_thres_fx[0] = TH_0_MIN_FX; move16(); Loading @@ -309,19 +282,6 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->last_sw_dyn_fx = 2560; /* 10.0f in Q7 */ move16(); hSpMusClas->relE_attack_cnt = 0; move16(); hSpMusClas->prev_relE_fx = 0; move16(); hSpMusClas->prev_Etot_fx = 0; move16(); hSpMusClas->prev_vad = 0; move16(); hSpMusClas->vad_0_1_cnt = 0; move16(); hSpMusClas->relE_attack_sum_fx = 0; move16(); /* speech/music classifier improvement */ FOR( i = 0; i < BUF_LEN; i++ ) { Loading Loading @@ -351,8 +311,6 @@ void speech_music_clas_init_ivas_fx( move16(); hSpMusClas->gsc_cnt = 0; move16(); hSpMusClas->last_vad_spa = 0; move16(); set16_fx( hSpMusClas->old_Bin_E_fx, 0, 3 * N_OLD_BIN_E ); set16_fx( hSpMusClas->buf_etot_fx, 0, 4 ); Loading @@ -377,30 +335,18 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->old_lt_diff_fx[1] = 0; move16(); set32_fx( hSpMusClas->finc_prev_fx, 0, ATT_NSEG ); hSpMusClas->q_finc_prev = Q31; move16(); hSpMusClas->lt_finc_fx = 0; move32(); hSpMusClas->Q_lt_finc = Q31; move16(); hSpMusClas->last_strong_attack = 0; /* GSC - pitch excitation parameters */ hSpMusClas->high_stable_cor = 0; move16(); hSpMusClas->tdm_lt_Etot_fx = 3; /* 0.01f in Q8 */ set16_fx( hSpMusClas->var_cor_t_fx, 0, VAR_COR_LEN ); hSpMusClas->lps_fx = 0; move16(); set32_fx( hSpMusClas->tod_lt_Bin_E_fx, 0, TOD_NSPEC ); hSpMusClas->Q_tod_lt_Bin_E = Q31; hSpMusClas->lpm_fx = 0; move16(); set32_fx( hSpMusClas->tod_S_map_lt_fx, 0, TOD_NSPEC ); hSpMusClas->tod_thr_lt_fx = TOD_THR_MASS_FX_Q22; move32(); hSpMusClas->tod_weight_fx = 0; hSpMusClas->lt_dec_thres_fx = 5120; move16(); /*10 in Q9 */ hSpMusClas->ener_RAT_fx = 0; move16(); hSpMusClas->tod_S_mass_prev_fx = 0; move32(); hSpMusClas->tod_S_mass_lt_fx = 0; move32(); /* speech/music classification */ set16_fx( hSpMusClas->lt_old_mode, 1, 3 ); Loading Loading @@ -428,21 +374,79 @@ void speech_music_clas_init_ivas_fx( hSpMusClas->lt_speech_hangover = 0; move16(); hSpMusClas->lt_dec_thres_fx = 5120; /* 10.0f in Q9 */ #ifdef FIX_2405_HARM_SMC_INIT IF( element_mode > EVS_MONO ) { set32_fx( hSpMusClas->FV_st_fx, 0, N_SMC_FEATURES ); set32_fx( hSpMusClas->past_dlp_mean_ST_fx, 0, HANG_LEN - 1 ); hSpMusClas->dlp_mean_ST_fx = 0; move32(); hSpMusClas->dlp_mean_LT_fx = 0; move32(); hSpMusClas->dlp_var_LT_fx = 0; move32(); FOR( i = 0; i < N_SMC_FEATURES; i++ ) { hSpMusClas->prev_FV_fx[i] = L_add( L_shr( hout_intervals_fx[2 * i], 1 ), L_shr( hout_intervals_fx[2 * i + 1], 1 ) ); move32(); } hSpMusClas->wdrop_32fx = 0; move32(); hSpMusClas->wrise_fx = 0; move16(); hSpMusClas->ener_RAT_fx = 0; hSpMusClas->wdlp_0_95_sp_32fx = 0; move32(); hSpMusClas->wdlp_xtalk_fx = 0; move16(); hSpMusClas->high_stable_cor = 0; hSpMusClas->past_PS_Q = Q31; move16(); hSpMusClas->past_epsP_fx = 0; move16(); hSpMusClas->flag_spitch_cnt = 0; move16(); hSpMusClas->relE_attack_cnt = 0; move16(); hSpMusClas->prev_relE_fx = 0; move16(); hSpMusClas->prev_Etot_fx = 0; move16(); hSpMusClas->prev_vad = 0; move16(); hSpMusClas->vad_0_1_cnt = 0; move16(); hSpMusClas->relE_attack_sum_fx = 0; move16(); hSpMusClas->last_vad_spa = 0; move16(); set32_fx( hSpMusClas->finc_prev_fx, 0, ATT_NSEG ); hSpMusClas->q_finc_prev = Q31; move16(); hSpMusClas->lt_finc_fx = 0; move32(); hSpMusClas->Q_lt_finc = Q31; move16(); set16_fx( hSpMusClas->var_cor_t_fx, 0, VAR_COR_LEN ); hSpMusClas->lps_fx = 0; hSpMusClas->last_strong_attack = 0; move16(); hSpMusClas->lpm_fx = 0; hSpMusClas->tdm_lt_Etot_fx = 3; /* 0.01f in Q8 */ move16(); set32_fx( hSpMusClas->tod_lt_Bin_E_fx, 0, TOD_NSPEC ); hSpMusClas->Q_tod_lt_Bin_E = Q31; move16(); set32_fx( hSpMusClas->tod_S_map_lt_fx, 0, TOD_NSPEC ); hSpMusClas->tod_thr_lt_fx = TOD_THR_MASS_FX_Q22; move32(); hSpMusClas->tod_weight_fx = 0; move16(); hSpMusClas->tod_S_mass_prev_fx = 0; move32(); hSpMusClas->tod_S_mass_lt_fx = 0; move32(); hSpMusClas->lpn_fx = 0; move16(); } #endif return; } Loading