Commit 2e734e42 authored by vaclav's avatar vaclav
Browse files

Merge branch 'basop-2405-harmonisation-of-speech_music_clas_init_ivas_fx' into 'main'

harmonisation of smc init

See merge request !2786
parents 59e30045 a566bf32
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 ############################ */
+4 −0
Original line number Diff line number Diff line
@@ -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 );
@@ -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;
+4 −0
Original line number Diff line number Diff line
@@ -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;
+5 −0
Original line number Diff line number Diff line
@@ -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,
+88 −84
Original line number Diff line number Diff line
@@ -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   */
)
@@ -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();
@@ -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++ )
    {
@@ -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 );
@@ -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 );
@@ -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;
}