diff --git a/lib_com/ivas_pca_tools.c b/lib_com/ivas_pca_tools.c index 3f96e8129471665f60d84e4481775bbcb383db3b..123bcb26b86444da820b7d62da31329b3ad365eb 100644 --- a/lib_com/ivas_pca_tools.c +++ b/lib_com/ivas_pca_tools.c @@ -152,7 +152,11 @@ static void house_refl( pu[0] -= 1; } +#ifdef FIX_I120_INV_SQRT + _rcp = inv_sqrt( fabsf( pu[0] ) ); +#else _rcp = 1.f / sqrtf( fabsf( pu[0] ) ); +#endif for ( i = 0; i < sizex; i++ ) { @@ -645,7 +649,11 @@ static void norm_quat( norm_q = dotp( q, q, IVAS_PCA_INTERP ); +#ifdef FIX_I120_INV_SQRT + norm_q = inv_sqrt( norm_q ); // VE: TBV: possible division by 0 +#else norm_q = 1 / sqrtf( norm_q ); // VE: TBV: possible division by 0 +#endif for ( i = 0; i < IVAS_PCA_INTERP; i++ ) { diff --git a/lib_com/options.h b/lib_com/options.h old mode 100755 new mode 100644 index e3acdcb3c141440d6a48f0cb41d71565b3690bd5..a35227e091783968f01e1dc13ea4acb27796197d --- a/lib_com/options.h +++ b/lib_com/options.h @@ -152,6 +152,7 @@ #define FIX_DIRAC_CHANNELS /* Issue 71: lower number of DirAC analysis channels */ #define HARMONIZE_SBA_NCHAN_TRANSPORT /* harmonize setting of number of transport channels in SBA */ #define FIX_I13_TCX_TNS_ISSUE /* Issue 13: Fix reported artifacts. Bug in TNS with TCX5 */ +#define FIX_I120_INV_SQRT /* Issue 120: inv_sqrt() shall be used instead of 1 / sqrt() to measure the correct complexity */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_com/prot.h b/lib_com/prot.h index 1f2e5a304265a4d659759437d8c9bcbf78579336..ce686bd77370ff0419bb5b99f5043b9d1dc6b17b 100755 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -7137,7 +7137,8 @@ void lsf_weight_2st( const float *lsfq, float *w, const int16_t mode, - const int32_t sr_core ); + const int32_t sr_core +); void mdct_window_sine( float *window, diff --git a/lib_com/vlpc_2st_com.c b/lib_com/vlpc_2st_com.c index 86fdf68c5ff96114e7cc32be3f1f420811c94d25..f027ecd8ea0448889afd92be1aa2f1dbfbd251a6 100644 --- a/lib_com/vlpc_2st_com.c +++ b/lib_com/vlpc_2st_com.c @@ -52,7 +52,8 @@ void lsf_weight_2st( const float *lsfq, float *w, const int16_t mode, - const int32_t sr_core ) + const int32_t sr_core +) { int16_t i; float d[M + 1]; diff --git a/lib_dec/dlpc_avq.c b/lib_dec/dlpc_avq.c index 83a0029fb3e08dc91b39ab0a6a319128d8cc0c1d..2a89cdb35c2d791b11320db1ee2c73fddbc818f2 100644 --- a/lib_dec/dlpc_avq.c +++ b/lib_dec/dlpc_avq.c @@ -57,7 +57,6 @@ int16_t dlpc_avq( int16_t *p_index, q_type; /* Last LPC index */ - if ( numlpc == 1 ) { last = 0; diff --git a/lib_dec/dlpc_stoch.c b/lib_dec/dlpc_stoch.c index 59ec142c0a54214e844a734a06030945e59bacc6..21b1ab2d8d60077da5da767c434f7e50c1c6a76e 100644 --- a/lib_dec/dlpc_stoch.c +++ b/lib_dec/dlpc_stoch.c @@ -71,6 +71,7 @@ void lpc_unquantize( if ( st->lpcQuantization == 0 ) { nb_indices = dlpc_avq( param_lpc, &lsf[M], st->numlpc, st->sr_core ); + for ( k = 0; k < st->numlpc; k++ ) { lsf2lsp( &lsf[( k + 1 ) * M], &lsp[( k + 1 ) * M], M, st->sr_core ); diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index ae7ab88b94449dca8473cf0478e4b5fa1eb41eb5..b4da8ef0205677a01f8b4c6cdfdc1455ce6c6196 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -2544,7 +2544,11 @@ static void initDiffuseResponses( if ( output_config == AUDIO_CONFIG_MONO ) { diffuse_response_function[0] = 1.0f; +#ifdef FIX_I120_INV_SQRT + diffuse_response_function[1] = inv_sqrt( 3.0f ); +#else diffuse_response_function[1] = 1.0f / sqrtf( 3.0f ); +#endif } else if ( !( output_config == AUDIO_CONFIG_FOA || output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_HOA3 ) ) { @@ -2626,7 +2630,11 @@ static void initDiffuseResponses( { for ( k = 0; k < ( 2 * l + 1 ); k++ ) { +#ifdef FIX_I120_INV_SQRT + diffuse_response_function[idx++] = inv_sqrt( 2.0f * l + 1.0f ); +#else diffuse_response_function[idx++] = 1.0f / sqrtf( 2.0f * l + 1.0f ); +#endif } } } diff --git a/lib_dec/ivas_dirac_dec_binaural_functions.c b/lib_dec/ivas_dirac_dec_binaural_functions.c index 5e698ab289d0df1f94e3b5adb693fe8c098caf9f..6d7bdf2491c765a535c725915c7cca243ad9fbbb 100644 --- a/lib_dec/ivas_dirac_dec_binaural_functions.c +++ b/lib_dec/ivas_dirac_dec_binaural_functions.c @@ -431,8 +431,13 @@ static void ivas_dirac_dec_binaural_internal( { /* At mono input duplicate the channel to dual-mono, and apply gain correction to ensure same overall level as in stereo mode */ +#ifdef FIX_I120_INV_SQRT + v_multc( Cldfb_RealBuffer_in[0][slot], INV_SQRT_2, Cldfb_RealBuffer_in[0][slot], nBins ); + v_multc( Cldfb_ImagBuffer_in[0][slot], INV_SQRT_2, Cldfb_ImagBuffer_in[0][slot], nBins ); +#else v_multc( Cldfb_RealBuffer_in[0][slot], 1.0f / SQRT2, Cldfb_RealBuffer_in[0][slot], nBins ); v_multc( Cldfb_ImagBuffer_in[0][slot], 1.0f / SQRT2, Cldfb_ImagBuffer_in[0][slot], nBins ); +#endif mvr2r( Cldfb_RealBuffer_in[0][slot], Cldfb_RealBuffer_in[1][slot], nBins ); mvr2r( Cldfb_ImagBuffer_in[0][slot], Cldfb_ImagBuffer_in[1][slot], nBins ); } @@ -449,8 +454,13 @@ static void ivas_dirac_dec_binaural_internal( nBins, st_ivas->cldfbAnaDec[ch] ); if ( st_ivas->nchan_transport == 1 && st_ivas->ivas_format == SBA_FORMAT ) { +#ifdef FIX_I120_INV_SQRT + v_multc( Cldfb_RealBuffer_in[ch][slot], INV_SQRT_2, Cldfb_RealBuffer_in[ch][slot], nBins ); + v_multc( Cldfb_ImagBuffer_in[ch][slot], INV_SQRT_2, Cldfb_ImagBuffer_in[ch][slot], nBins ); +#else v_multc( Cldfb_RealBuffer_in[ch][slot], 1.0f / SQRT2, Cldfb_RealBuffer_in[ch][slot], nBins ); v_multc( Cldfb_ImagBuffer_in[ch][slot], 1.0f / SQRT2, Cldfb_ImagBuffer_in[ch][slot], nBins ); +#endif } } } @@ -762,7 +772,11 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric { /* 0.5f <= spreadCoh < 1.0f */ centerMul = 2.0f - ( 2.0f * spreadCoh ); +#ifdef FIX_I120_INV_SQRT + sidesMul = inv_sqrt( centerMul + 2.0f ); +#else sidesMul = 1.0f / sqrtf( centerMul + 2.0f ); +#endif centerMul *= sidesMul; } diff --git a/lib_dec/ivas_dirac_output_synthesis_dec.c b/lib_dec/ivas_dirac_output_synthesis_dec.c index e5c396d07be25769387930702a754ced3598f324..dfda59fde9ccea54a7acfff887652f7f4a375c16 100644 --- a/lib_dec/ivas_dirac_output_synthesis_dec.c +++ b/lib_dec/ivas_dirac_output_synthesis_dec.c @@ -2078,7 +2078,11 @@ static void spreadCoherencePanningVbap( if ( hVBAPdata == NULL ) { /* Distribute signal to all channels if VBAP is not properly initialized. */ +#ifdef FIX_I120_INV_SQRT + set_f( direct_response, inv_sqrt( num_channels_dir ), num_channels_dir ); +#else set_f( direct_response, 1.0f / sqrtf( num_channels_dir ), num_channels_dir ); +#endif return; } diff --git a/lib_dec/ivas_efap.c b/lib_dec/ivas_efap.c index efd7795dfe735c0a23e5a777343947a0216b88ae..7999264eb3decbe24d989596725312b12662d821 100644 --- a/lib_dec/ivas_efap.c +++ b/lib_dec/ivas_efap.c @@ -266,7 +266,11 @@ void efap_determine_gains( } normBuffer = normBuffer + hEFAPdata->bufferShort[j] * hEFAPdata->bufferShort[j]; } +#ifdef FIX_I120_INV_SQRT + normBuffer = inv_sqrt( normBuffer ); +#else normBuffer = 1.f / sqrtf( normBuffer ); +#endif for ( j = 0; j < hEFAPdata->numSpk; ++j ) { @@ -1628,7 +1632,11 @@ static float point_plane_distance( /* Dot Product */ tmpNorm = dotp( resultCross, resultCross, 3 ); +#ifdef FIX_I120_INV_SQRT + tmpNorm = inv_sqrt( tmpNorm ); +#else tmpNorm = 1.f / sqrtf( tmpNorm ); +#endif v_sub( X, P1, tmpDot1, 3 ); v_multc( resultCross, tmpNorm, tmpDot2, 3 ); dist = dotp( tmpDot1, tmpDot2, 3 ); diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index d8e556550a6f6c5f4b1900686e0bcde41ed34458..2ccf1efdce468f6fe9ced0e92f0df1d189cfa504 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -1034,7 +1034,11 @@ ivas_error ivas_init_decoder( if ( st_ivas->hVBAPdata == NULL ) { /* Distribute signal to all channels if VBAP is not properly initialized. */ +#ifdef FIX_I120_INV_SQRT + set_f( st_ivas->hLsSetupCustom->separate_ch_gains, inv_sqrt( st_ivas->hLsSetupCustom->num_spk ), st_ivas->hLsSetupCustom->num_spk ); +#else set_f( st_ivas->hLsSetupCustom->separate_ch_gains, 1 / sqrtf( st_ivas->hLsSetupCustom->num_spk ), st_ivas->hLsSetupCustom->num_spk ); +#endif } else { diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index 1d0a90596e2ae8381553ea0af289ce680e364c61..9003098fb6118cea8eea6f15ee7412896ca699ce 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -987,7 +987,11 @@ void ivas_mdct_core_reconstruct( xcorr += signal_outFB[0][i] * signal_outFB[1][i]; } +#ifdef FIX_I120_INV_SQRT + hCPE->hStereoMdct->lastCoh = fabsf( xcorr ) * inv_sqrt( nrgL * nrgR ); +#else hCPE->hStereoMdct->lastCoh = fabsf( xcorr ) / sqrtf( nrgL * nrgR ); +#endif hCPE->hStereoMdct->lastCoh = min( hCPE->hStereoMdct->lastCoh, 1.f ); } diff --git a/lib_dec/ivas_objectRenderer_vec.c b/lib_dec/ivas_objectRenderer_vec.c index a3bd94683b4b2b0afc881a7481e8f59792bf8a3d..54f7c51727cb1276a35c8c7b24656f1aa8a2a7ff 100644 --- a/lib_dec/ivas_objectRenderer_vec.c +++ b/lib_dec/ivas_objectRenderer_vec.c @@ -89,7 +89,11 @@ void TDREND_SPATIAL_VecNormalize( { float scaler; +#ifdef FIX_I120_INV_SQRT + scaler = inv_sqrt( Vec_p[0] * Vec_p[0] + Vec_p[1] * Vec_p[1] + Vec_p[2] * Vec_p[2] ); +#else scaler = 1.0f / sqrtf( Vec_p[0] * Vec_p[0] + Vec_p[1] * Vec_p[1] + Vec_p[2] * Vec_p[2] ); +#endif VecNorm_p[0] = scaler * Vec_p[0]; VecNorm_p[1] = scaler * Vec_p[1]; VecNorm_p[2] = scaler * Vec_p[2]; diff --git a/lib_dec/ivas_reverb.c b/lib_dec/ivas_reverb.c index 10d3a792a59fc963a73c836b690174de606eb6b0..56ea9fc7e8a8a4393067310a8558a563c5bcf43d 100644 --- a/lib_dec/ivas_reverb.c +++ b/lib_dec/ivas_reverb.c @@ -156,7 +156,11 @@ static ivas_error compute_feedback_matrix( { return IVAS_ERR_INTERNAL; /* n must be 4, 6, 8 or 16, else ERROR */ } +#ifdef FIX_I120_INV_SQRT + u = inv_sqrt( n ); +#else u = 1.0f / sqrtf( n ); +#endif if ( n == 4 ) { u = -u; diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c index 58b0eae86d1b85684822c60102488f919dfba2ac..7ee63cd33c673127244543e209ce868a46290aac 100644 --- a/lib_dec/ivas_stereo_cng_dec.c +++ b/lib_dec/ivas_stereo_cng_dec.c @@ -345,7 +345,11 @@ static void stereo_dft_generate_comfort_noise( ptr2 = ptr1 + 1; for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { +#ifdef FIX_I120_INV_SQRT + *ptr0++ = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ) * inv_sqrt( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); +#else *ptr0++ = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ) / sqrtf( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); +#endif ptr1 += 2; ptr2 += 2; } @@ -771,7 +775,11 @@ void stereo_cng_compute_PScorr( enrS += *outputSptr * *outputSptr; dotPS += *outputPptr++ * *outputSptr++; } +#ifdef FIX_I120_INV_SQRT + c_PS = ( dotPS + EPSILON ) * inv_sqrt( enrP * enrS + EPSILON ); +#else c_PS = ( dotPS + EPSILON ) / sqrtf( enrP * enrS + EPSILON ); +#endif *c_PS_LT = STEREO_TD_PS_CORR_FILT * *c_PS_LT + ( 1 - STEREO_TD_PS_CORR_FILT ) * c_PS; return; @@ -808,7 +816,11 @@ static void stereo_cng_compute_LRcorr( dotLR += output[0][i] * output[1][i]; } +#ifdef FIX_I120_INV_SQRT + c_LR = fabsf( dotLR + EPSILON ) * inv_sqrt( enrL * enrR + EPSILON ); +#else c_LR = fabsf( dotLR + EPSILON ) / sqrtf( enrL * enrR + EPSILON ); +#endif c = ( enrL + DELTA ) / ( enrR + DELTA ); hCPE->hStereoTD->c_LR_LT = STEREO_TD_PS_CORR_FILT * hCPE->hStereoTD->c_LR_LT + ( 1 - STEREO_TD_PS_CORR_FILT ) * c_LR; hCPE->hStereoCng->c_LR_LT = hCPE->hStereoTD->c_LR_LT; @@ -932,7 +944,11 @@ void stereo_cna_update_params( } /* estimate L/R correlation factor and ILD in time domain */ +#ifdef FIX_I120_INV_SQRT + c_LR = fabsf( dotLR + EPSILON ) * inv_sqrt( enrL * enrR + EPSILON ); +#else c_LR = fabsf( dotLR + EPSILON ) / sqrtf( enrL * enrR + EPSILON ); +#endif c = ( enrL + DELTA ) / ( enrR + DELTA ); c_ILD = ( c - 1 ) / ( c + 1 ); } diff --git a/lib_dec/ivas_vbap.c b/lib_dec/ivas_vbap.c index a173e627ee5deb23e2716e78d7d13421f731726a..0417fd742f41d16abb6b0bff8da97a5c585a9dbf 100644 --- a/lib_dec/ivas_vbap.c +++ b/lib_dec/ivas_vbap.c @@ -436,7 +436,11 @@ void vbap_determine_gains( gain_ene += gain_triplet[ch] * gain_triplet[ch]; } +#ifdef FIX_I120_INV_SQRT + norm_value = inv_sqrt( gain_ene ); +#else norm_value = 1.0f / sqrtf( gain_ene ); +#endif for ( ch = 0; ch < 3; ch++ ) { diff --git a/lib_dec/swb_tbe_dec.c b/lib_dec/swb_tbe_dec.c index 2664aaa08d3fc276ae14f8134fa27ee501ca30ec..5b602bbfd68b2058d275a03c8df248d25449e972 100644 --- a/lib_dec/swb_tbe_dec.c +++ b/lib_dec/swb_tbe_dec.c @@ -834,6 +834,7 @@ void swb_tbe_dec( { scale = (float) ( hBWE_TD->prev1_shb_ener_sf / sqrt( ( hBWE_TD->prev2_shb_ener_sf * hBWE_TD->prev3_shb_ener_sf ) + 0.0001 ) ); scale = hBWE_TD->prev_res_shb_gshape * min( scale, 1.0f ); + if ( hBWE_TD->prev2_shb_ener_sf > 2.0f * hBWE_TD->prev1_shb_ener_sf || hBWE_TD->prev3_shb_ener_sf > 2.0f * hBWE_TD->prev2_shb_ener_sf ) { shb_ener_sf = 0.5f * scale * hBWE_TD->prev1_shb_ener_sf; diff --git a/lib_enc/frame_spec_dif_cor_rate.c b/lib_enc/frame_spec_dif_cor_rate.c index 1922964416dd473cf9a73f1d68a1ec71fb82beb4..9b3329c5c1d25ff0b5b074525d68697e4bd077d0 100644 --- a/lib_enc/frame_spec_dif_cor_rate.c +++ b/lib_enc/frame_spec_dif_cor_rate.c @@ -82,7 +82,6 @@ void frame_spec_dif_cor_rate( /* 1073741.824 = 0.001 * 32768 * 32768 */ spec_low_dif_cor_rate = (float) ( m / sqrt( ( dx * dy + 1073741.824f ) ) ); - spec_dif_cor_rate = spec_low_dif_cor_rate; f_tonality_rate[0] = spec_dif_cor_rate; f_tonality_rate[1] = f_tonality_rate[1] * 0.96f + spec_dif_cor_rate * 0.04f; diff --git a/lib_enc/igf_enc.c b/lib_enc/igf_enc.c index e355cd2083872b56e454db3a66d7591c118c281c..6050354a8f8ad25637b1b9583f17fe430c0226a1 100755 --- a/lib_enc/igf_enc.c +++ b/lib_enc/igf_enc.c @@ -462,7 +462,7 @@ static void IGF_CalculateEnvelope( float diffSFM; float shiftedSFM = 0.f; - tmp_tb = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb], swb_offset[sfb + 1] ) / IGF_getCrest_new( hPrivateData->logSpec, swb_offset[sfb], swb_offset[sfb + 1] ); + tmp_tb = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb], swb_offset[sfb + 1] ) / IGF_getCrest_new( hPrivateData->logSpec, swb_offset[sfb], swb_offset[sfb + 1] ); tmp_sb = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, tmp, strt_cpy ) / IGF_getCrest_new( hPrivateData->logSpec, tmp, strt_cpy ); if ( last_core_acelp || hPrivateData->wasTransient ) @@ -494,12 +494,12 @@ static void IGF_CalculateEnvelope( if ( slope < -threshold ) { int16_t shift = width >> 1; - shiftedSFM = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ) / IGF_getCrest_new( hPrivateData->logSpec, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ); + shiftedSFM = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ) / IGF_getCrest_new ( hPrivateData->logSpec, swb_offset[sfb] - shift, swb_offset[sfb + 1] - shift ); } else if ( ( slope > 1.f * threshold ) && ( sfb != hGrid->sfbWrap[hGrid->nTiles] - 1 ) ) { int16_t shift = width >> 1; - shiftedSFM = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ) / IGF_getCrest_new( hPrivateData->logSpec, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ); + shiftedSFM = IGF_getSFM_new( pPowerSpectrum, hPrivateData->logSpec, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ) / IGF_getCrest_new ( hPrivateData->logSpec, swb_offset[sfb] + shift, swb_offset[sfb + 1] + shift ); } if ( shiftedSFM > 0.04f ) diff --git a/lib_enc/ivas_stereo_dft_enc.c b/lib_enc/ivas_stereo_dft_enc.c index 29e5d32c71cc51db56a78f6d15ca3e7476c1fd97..80e05cc5cc472f53d02947a7c750732c0bb31146 100644 --- a/lib_enc/ivas_stereo_dft_enc.c +++ b/lib_enc/ivas_stereo_dft_enc.c @@ -1644,7 +1644,11 @@ void stereo_dft_enc_process( dot_prod_real2 += pDFT_L[2 * j] * pDFT_R[2 * j] + pDFT_L[2 * j + 1] * pDFT_R[2 * j + 1]; } sum_nrg_Mid = max( 0.f, sum_nrg_L2 + sum_nrg_R2 + 2.f * dot_prod_real2 ); +#ifdef FIX_I120_INV_SQRT + wL = 0.5f * max( sqrtf( sum_nrg_L2 ) + sqrtf( sum_nrg_R2 ) - sqrtf( sum_nrg_Mid ), 0 ) * inv_sqrt( sum_nrg_L2 + EPSILON ); +#else wL = 0.5f * max( sqrtf( sum_nrg_L2 ) + sqrtf( sum_nrg_R2 ) - sqrtf( sum_nrg_Mid ), 0 ) / sqrtf( sum_nrg_L2 + EPSILON ); +#endif wS = 1; if ( hStereoDft->res_cod_sw_flag ) { diff --git a/lib_enc/ivas_stereo_ica_enc.c b/lib_enc/ivas_stereo_ica_enc.c index d63c8b217c56753e3a6b2c54e3da012eedcf6715..0e1b1a9af10fadd39c021f23ee7a4264724398ab 100644 --- a/lib_enc/ivas_stereo_ica_enc.c +++ b/lib_enc/ivas_stereo_ica_enc.c @@ -345,7 +345,11 @@ static void utilCrossCorr( temp = sum2_f( tempBuf1, len ); temp *= sum2_f( tempBuf2, len ); +#ifdef FIX_I120_INV_SQRT + scale = ( temp == 0 ) ? 1.0f : inv_sqrt( temp ); +#else scale = ( temp == 0 ) ? 1.0f : 1.0f / sqrtf( temp ); +#endif /* starting point of lag search range should be less than the ending point */ assert( lagSearchRange[0] <= lagSearchRange[1] ); diff --git a/lib_enc/ivas_tcx_core_enc.c b/lib_enc/ivas_tcx_core_enc.c index ce2d74ec9a689f1ef59657fc0180741b6ab6ce13..ed918a5ca7f2ab7de1e23fd8aae1e5a518b3ef58 100644 --- a/lib_enc/ivas_tcx_core_enc.c +++ b/lib_enc/ivas_tcx_core_enc.c @@ -680,7 +680,11 @@ int16_t ivas_acelp_tcx20_switching( for ( i = 0; i < L_frame; i++ ) { +#ifdef FIX_I120_INV_SQRT + x[i] *= (float) L_frame * inv_sqrt( 2 * NORM_MDCT_FACTOR ); +#else x[i] *= (float) L_frame / sqrtf( 2 * NORM_MDCT_FACTOR ); +#endif y[i] = x[i]; } diff --git a/lib_enc/pit_enc.c b/lib_enc/pit_enc.c index f2c518bd3d007ad19892e7f6aa83146b61af6b2b..454da71966fa8c11cfd8eea3443de688d75d872c 100644 --- a/lib_enc/pit_enc.c +++ b/lib_enc/pit_enc.c @@ -622,7 +622,6 @@ void norm_corr( for ( t = t_min; t <= t_max; t++ ) { /* Compute correlation between xn[] and excf[] */ - ps = 0.0f; for ( j = 0; j < L_subfr; ++j ) { @@ -630,7 +629,6 @@ void norm_corr( } /* Compute 1/sqrt(energie of excf[]) */ - alp = 0.01f; for ( j = 0; j < L_subfr; ++j ) { diff --git a/lib_enc/qlpc_stoch.c b/lib_enc/qlpc_stoch.c index 7723f507ec18ac446eaaa128f7b7ea95ea83d54f..403132b6e820b573dc0905a649452b7a4ce1e509 100644 --- a/lib_enc/qlpc_stoch.c +++ b/lib_enc/qlpc_stoch.c @@ -101,7 +101,6 @@ void lpc_quantization( } /****** Low-rate LPC quantizer *******/ - else if ( st->lpcQuantization == 1 ) { diff --git a/lib_enc/swb_bwe_enc.c b/lib_enc/swb_bwe_enc.c index b54fbede575842fc8f7055eb93c303136fdb30ad..54e786d7616073b63b86b98b092e6586df8b6b8b 100644 --- a/lib_enc/swb_bwe_enc.c +++ b/lib_enc/swb_bwe_enc.c @@ -1361,7 +1361,9 @@ static int16_t SWB_BWE_encoding( st->hBWE_FD->EnergyLF = energy; } + calc_tilt_bwe( insig, &tilt, L_FRAME32k ); + if ( IsTransient == 1 && ( tilt > 8.0 || st->clas > 1 ) ) { IsTransient = 0;