Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,8 @@ #define FIX_047_ERROR_ENABLING_AGC /* IVAS-047, Fix the error reporting when AGC is enabled*/ #define REFACTOR_REVERB_INIT_ADD_CFG_CHECKS /* Simplify and improve reverb initialization + add range checks on config parameter values */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif lib_dec/ivas_reverb.c +1377 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes lib_dec/ivas_reverb_filter_design.c +6 −0 Original line number Diff line number Diff line Loading @@ -540,9 +540,15 @@ void ivas_reverb_calc_color_levels( const float alpha = -log__0_001 / t60[freq_idx]; const float revPredNormEnergy = ( A0_square_est / ( 2.0f * alpha ) ) * output_Fs / ( 0.8776f * minDelayDiff + 26.7741f ); #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS pTarget_color_L[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_L[freq_idx] ) / sqrtf( revPredNormEnergy ); pTarget_color_R[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_R[freq_idx] ) / sqrtf( revPredNormEnergy ); #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ pTarget_color_L[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_L[freq_idx] ) / max( sqrtf( revPredNormEnergy ), EPS ); pTarget_color_R[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_R[freq_idx] ) / max( sqrtf( revPredNormEnergy ), EPS ); #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ } /* Limiting the frequency response gradients Loading lib_dec/ivas_reverb_utils.c +12 −0 Original line number Diff line number Diff line Loading @@ -94,8 +94,12 @@ void ivas_reverb_prepare_cldfb_params( float avg_pwr_left[CLDFB_NO_CHANNELS_MAX]; float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS float delay_diff; float ln_1e6_inverted; #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ float delay_diff, ln_1e6_inverted, exp_argument; #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ const float dist = DEFAULT_SRC_DIST; const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; Loading @@ -111,8 +115,16 @@ void ivas_reverb_prepare_cldfb_params( ln_1e6_inverted = 1.0f / logf( 1e06f ); for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS const float tau = pOutput_t60[idx] * ln_1e6_inverted; pOutput_ene[idx] *= expf( delay_diff / tau ); #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ exp_argument = delay_diff / ( pOutput_t60[idx] * ln_1e6_inverted ); /* Limit exponent to approx +/-100 dB in case of incoherent value of delay_diff, to prevent overflow */ exp_argument = min( exp_argument, 23.0f ); exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ } ivas_reverb_get_fastconv_hrtf_set_energies( renderer_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ); Loading lib_dec/lib_dec.c +7 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,13 @@ void IVAS_DEC_Close( ( *phIvasDec )->st_ivas->hHeadTrackData = NULL; } #ifdef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS if ( ( *phIvasDec )->st_ivas->hRenderConfig != NULL ) { ivas_render_config_close( &( ( *phIvasDec )->st_ivas->hRenderConfig ) ); } #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ ivas_HRTF_binary_close( &( *phIvasDec )->st_ivas->hHrtfTD ); count_free( ( *phIvasDec )->st_ivas ); Loading Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,8 @@ #define FIX_047_ERROR_ENABLING_AGC /* IVAS-047, Fix the error reporting when AGC is enabled*/ #define REFACTOR_REVERB_INIT_ADD_CFG_CHECKS /* Simplify and improve reverb initialization + add range checks on config parameter values */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ #endif
lib_dec/ivas_reverb.c +1377 −0 File changed.Preview size limit exceeded, changes collapsed. Show changes
lib_dec/ivas_reverb_filter_design.c +6 −0 Original line number Diff line number Diff line Loading @@ -540,9 +540,15 @@ void ivas_reverb_calc_color_levels( const float alpha = -log__0_001 / t60[freq_idx]; const float revPredNormEnergy = ( A0_square_est / ( 2.0f * alpha ) ) * output_Fs / ( 0.8776f * minDelayDiff + 26.7741f ); #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS pTarget_color_L[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_L[freq_idx] ) / sqrtf( revPredNormEnergy ); pTarget_color_R[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_R[freq_idx] ) / sqrtf( revPredNormEnergy ); #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ pTarget_color_L[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_L[freq_idx] ) / max( sqrtf( revPredNormEnergy ), EPS ); pTarget_color_R[freq_idx] = sqrtf( pAcoustic_dsr[freq_idx] * revEnergyFactor * pHrtf_avg_pwr_R[freq_idx] ) / max( sqrtf( revPredNormEnergy ), EPS ); #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ } /* Limiting the frequency response gradients Loading
lib_dec/ivas_reverb_utils.c +12 −0 Original line number Diff line number Diff line Loading @@ -94,8 +94,12 @@ void ivas_reverb_prepare_cldfb_params( float avg_pwr_left[CLDFB_NO_CHANNELS_MAX]; float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS float delay_diff; float ln_1e6_inverted; #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ float delay_diff, ln_1e6_inverted, exp_argument; #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ const float dist = DEFAULT_SRC_DIST; const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; Loading @@ -111,8 +115,16 @@ void ivas_reverb_prepare_cldfb_params( ln_1e6_inverted = 1.0f / logf( 1e06f ); for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { #ifndef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS const float tau = pOutput_t60[idx] * ln_1e6_inverted; pOutput_ene[idx] *= expf( delay_diff / tau ); #else /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ exp_argument = delay_diff / ( pOutput_t60[idx] * ln_1e6_inverted ); /* Limit exponent to approx +/-100 dB in case of incoherent value of delay_diff, to prevent overflow */ exp_argument = min( exp_argument, 23.0f ); exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ } ivas_reverb_get_fastconv_hrtf_set_energies( renderer_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ); Loading
lib_dec/lib_dec.c +7 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,13 @@ void IVAS_DEC_Close( ( *phIvasDec )->st_ivas->hHeadTrackData = NULL; } #ifdef REFACTOR_REVERB_INIT_ADD_CFG_CHECKS if ( ( *phIvasDec )->st_ivas->hRenderConfig != NULL ) { ivas_render_config_close( &( ( *phIvasDec )->st_ivas->hRenderConfig ) ); } #endif /* REFACTOR_REVERB_INIT_ADD_CFG_CHECKS */ ivas_HRTF_binary_close( &( *phIvasDec )->st_ivas->hHrtfTD ); count_free( ( *phIvasDec )->st_ivas ); Loading