Loading lib_com/ivas_pca_tools.c +4 −12 Original line number Diff line number Diff line Loading @@ -136,11 +136,11 @@ static void house_refl( } else { float _rcp = 1.f / ( *normu ); float rcp = 1.f / ( *normu ); for ( i = 0; i < sizex; i++ ) { pu[i] *= _rcp; pu[i] *= rcp; } if ( pu[0] >= 0.f ) { Loading @@ -152,15 +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 rcp = inv_sqrt( fabsf( pu[0] ) ); for ( i = 0; i < sizex; i++ ) { pu[i] *= _rcp; pu[i] *= rcp; } } Loading Loading @@ -649,11 +645,7 @@ 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++ ) { Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,6 @@ /*#define FIX_I1_113*/ /* under review : MCT bit distribution optimization for SBA high bitrates*/ #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 ######################### */ Loading lib_dec/ivas_dirac_dec.c +0 −8 Original line number Diff line number Diff line Loading @@ -2536,11 +2536,7 @@ 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 ) ) { Loading Loading @@ -2622,11 +2618,7 @@ 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 } } } Loading lib_dec/ivas_dirac_dec_binaural_functions.c +3 −14 Original line number Diff line number Diff line Loading @@ -414,6 +414,7 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_ImagBuffer_in[0][slot][b] = INV_SQRT2 * ( Cldfb_ImagBuffer_in[0][slot][b] + Cldfb_ImagBuffer_in[2][slot][b] ); Cldfb_ImagBuffer_in[1][slot][b] = Cldfb_ImagBuffer_in[0][slot][b]; } /* HB: Copy first channel to second channel and add HB-CNGs with different scalings*/ for ( ; b < nBins; b++ ) { Loading @@ -430,13 +431,9 @@ 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 ); } Loading @@ -451,15 +448,11 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_RealBuffer_in[ch][slot], Cldfb_ImagBuffer_in[ch][slot], 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 } } } Loading Loading @@ -771,11 +764,7 @@ 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; } Loading lib_dec/ivas_dirac_output_synthesis_dec.c +1 −4 Original line number Diff line number Diff line Loading @@ -2078,11 +2078,8 @@ 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; } Loading Loading
lib_com/ivas_pca_tools.c +4 −12 Original line number Diff line number Diff line Loading @@ -136,11 +136,11 @@ static void house_refl( } else { float _rcp = 1.f / ( *normu ); float rcp = 1.f / ( *normu ); for ( i = 0; i < sizex; i++ ) { pu[i] *= _rcp; pu[i] *= rcp; } if ( pu[0] >= 0.f ) { Loading @@ -152,15 +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 rcp = inv_sqrt( fabsf( pu[0] ) ); for ( i = 0; i < sizex; i++ ) { pu[i] *= _rcp; pu[i] *= rcp; } } Loading Loading @@ -649,11 +645,7 @@ 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++ ) { Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,6 @@ /*#define FIX_I1_113*/ /* under review : MCT bit distribution optimization for SBA high bitrates*/ #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 ######################### */ Loading
lib_dec/ivas_dirac_dec.c +0 −8 Original line number Diff line number Diff line Loading @@ -2536,11 +2536,7 @@ 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 ) ) { Loading Loading @@ -2622,11 +2618,7 @@ 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 } } } Loading
lib_dec/ivas_dirac_dec_binaural_functions.c +3 −14 Original line number Diff line number Diff line Loading @@ -414,6 +414,7 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_ImagBuffer_in[0][slot][b] = INV_SQRT2 * ( Cldfb_ImagBuffer_in[0][slot][b] + Cldfb_ImagBuffer_in[2][slot][b] ); Cldfb_ImagBuffer_in[1][slot][b] = Cldfb_ImagBuffer_in[0][slot][b]; } /* HB: Copy first channel to second channel and add HB-CNGs with different scalings*/ for ( ; b < nBins; b++ ) { Loading @@ -430,13 +431,9 @@ 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 ); } Loading @@ -451,15 +448,11 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_RealBuffer_in[ch][slot], Cldfb_ImagBuffer_in[ch][slot], 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 } } } Loading Loading @@ -771,11 +764,7 @@ 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; } Loading
lib_dec/ivas_dirac_output_synthesis_dec.c +1 −4 Original line number Diff line number Diff line Loading @@ -2078,11 +2078,8 @@ 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; } Loading