diff --git a/lib_enc/ivas_mc_paramupmix_enc.c b/lib_enc/ivas_mc_paramupmix_enc.c index 4c454a67b6126aef2836dc08a17363155a2da981..e51703ea359608ca3a18edf3a73ed76816b56a47 100644 --- a/lib_enc/ivas_mc_paramupmix_enc.c +++ b/lib_enc/ivas_mc_paramupmix_enc.c @@ -809,13 +809,18 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( move16(); move16(); move16(); + move16(); + move16(); + move16(); + move16(); + move16(); + move16(); + move16(); FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { pcm_in_fx[2 * i] = data_f_fx[chan1s[i]]; pcm_in_fx[2 * i + 1] = data_f_fx[chan2s[i]]; - move16(); - move16(); Scale_sig32( pcm_in_fx[2 * i], input_frame, sub( Q14, Q_data_f ) ); Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, sub( Q14, Q_data_f ) ); @@ -842,8 +847,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( { p_fr_realbuffer_fx[i] = fr_realbuffer_fx[i]; p_fr_imagbuffer_fx[i] = fr_imagbuffer_fx[i]; - move32(); - move32(); } /* prepare Parameter MDFT analysis */ @@ -851,8 +854,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( { pp_in_fr_real_fx[i] = p_fr_realbuffer_fx[i]; pp_in_fr_imag_fx[i] = p_fr_imagbuffer_fx[i]; - move32(); - move32(); } // l_ts = input_frame / MAX_PARAM_SPATIAL_SUBFRAMES; @@ -887,8 +888,8 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { - Scale_sig32( pcm_in_fx[2 * i], input_frame, Q_data_f - Q14 ); - Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, Q_data_f - Q14 ); + Scale_sig32( pcm_in_fx[2 * i], input_frame, sub( Q_data_f, Q14 ) ); + Scale_sig32( pcm_in_fx[2 * i + 1], input_frame, sub( Q_data_f, Q14 ) ); } /*-----------------------------------------------------------------------------------------* @@ -953,15 +954,14 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( FOR( bnd = 0; bnd < maxbands; bnd++ ) { rxy_fx = hMCParamUpmix->cov_real_fx[b][1][0][bnd]; + move32(); ryy_fx = hMCParamUpmix->cov_real_fx[b][1][1][bnd]; + move32(); - Word16 exp_tmp = 0; - move16(); - Word32 tmp = BASOP_Util_Add_Mant32Exp( ryy_fx, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ), EPSILON_FX_M, EPSILON_FX_E, &exp_tmp ); exp_cmat = 0; move16(); - cmat_fx = BASOP_Util_Divide3232_Scale( rxy_fx, tmp, &exp_cmat ); - exp_cmat = sub( add( exp_cmat, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][0][bnd] ) ) ), exp_tmp ); + cmat_fx = BASOP_Util_Divide3232_Scale( rxy_fx, L_add( ryy_fx, EPSILON_FX ), &exp_cmat ); + exp_cmat = sub( add( exp_cmat, sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][0][bnd] ) ) ), sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ) ); Word16 alpha_fx = 0, exp_alpha_var = 0; move16(); @@ -969,6 +969,7 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( exp_alpha_var = BASOP_Util_Add_MantExp( cmat_fx, add( exp_cmat, 1 ), negate( ONE_IN_Q14 ), 1, &alpha_fx ); rxx_fx = hMCParamUpmix->cov_real_fx[b][0][0][bnd]; + move32(); Word32 tmp_2 = L_mult( cmat_fx, cmat_fx ); // exp_cmat * 2 rxxest_fx = Mpy_32_32( tmp_2, ryy_fx ); @@ -980,8 +981,8 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( exp_wetaux = 0; move16(); - wetaux_fx = BASOP_Util_Divide3232_Scale( drxx_fx, tmp, &exp_wetaux ); - exp_wetaux = sub( add( exp_wetaux, exp_drxx ), exp_tmp ); + wetaux_fx = BASOP_Util_Divide3232_Scale( drxx_fx, L_add( ryy_fx, EPSILON_FX ), &exp_wetaux ); + exp_wetaux = sub( add( exp_wetaux, exp_drxx ), sub( 31, ( hMCParamUpmix->hCovEnc[b]->pCov_state->q_cov_real_per_band[1][1][bnd] ) ) ); Word16 sqrt_wetaux_fx = 0, exp_sqrt_wetaux = 0; move16(); @@ -993,10 +994,6 @@ static ivas_error ivas_mc_paramupmix_param_est_enc_fx( move16(); move16(); BASOP_Util_Sqrt_InvSqrt_MantExp( wetaux_fx, exp_wetaux, &sqrt_wetaux_fx, &exp_sqrt_wetaux, &tmp_4, &exp_tmp4 ); - tmp_4 = tmp_4; - exp_tmp4 = exp_tmp4; - move16(); - move16(); } ELSE {