Loading lib_rend/ivas_reverb_filter_design_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -919,6 +919,9 @@ void ivas_reverb_interpolate_acoustic_data_fx( return; } #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-------------------------------------------------------------------* * ivas_reverb_get_hrtf_set_properties() * Loading Loading @@ -1174,3 +1177,4 @@ void ivas_reverb_get_hrtf_set_properties_fx( return; } #endif lib_rend/ivas_reverb_fx.c +80 −8 Original line number Diff line number Diff line Loading @@ -1264,21 +1264,32 @@ static void set_fft_and_datablock_sizes_fx( static void set_reverb_acoustic_data_fx( ivas_reverb_params_t *pParams, #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #else const AUDIO_CONFIG input_audio_config, const HRTFS_HANDLE hHrtf, #endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoomAcoustics, #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const Word16 subframe_len, #endif const Word16 nr_fc_input, const Word16 nr_fc_fft_filter ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES int16_t bin_idx; #else Word16 nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx; #endif Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #else Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_im_fx[MAX_INTERN_CHANNELS]; Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; Word32 *pFc_input_fx = pRoomAcoustics->pFc_input_fx; Word32 *pAcoustic_rt60_fx = pRoomAcoustics->pAcoustic_rt60_fx; Loading Loading @@ -1330,7 +1341,7 @@ static void set_reverb_acoustic_data_fx( pParams->pHrtf_avg_pwr_response_r_const_fx = (const Word32 *) pParams->pHrtf_avg_pwr_response_r_fx; pParams->pHrtf_inter_aural_coherence_const_fx = (const Word32 *) pParams->pHrtf_inter_aural_coherence_fx; } #endif /* interpolate input table data for T60 and DSR to the FFT filter grid */ ivas_reverb_interpolate_acoustic_data_fx( nr_fc_input, pFc_input_fx, pAcoustic_rt60_fx, pAcoustic_dsr_fx, nr_fc_fft_filter, pFc_fx, pRt60_fx, pDsr_fx, pRt60_e, pDsr_e ); Loading Loading @@ -1462,12 +1473,15 @@ static ivas_error setup_FDN_branches_fx( ivas_error ivas_reverb_open_fx( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ #else const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */ #endif RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ const Word32 output_Fs /* i : output sampling rate */ ) const int32_t output_Fs ) { ivas_error error; REVERB_HANDLE pState = NULL; Loading Loading @@ -1541,6 +1555,13 @@ ivas_error ivas_reverb_open_fx( } test(); #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES set_reverb_acoustic_data( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); params.pHrtf_avg_pwr_response_l_const = hHrtfStatistics->average_energy_l; params.pHrtf_avg_pwr_response_r_const = hHrtfStatistics->average_energy_r; params.pHrtf_inter_aural_coherence_const = hHrtfStatistics->inter_aural_coherence; #else IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL ) { params.pHrtf_avg_pwr_response_l_const_fx = lr_energy_and_iac_fx[0]; Loading @@ -1564,6 +1585,7 @@ ivas_error ivas_reverb_open_fx( params.pDsr_fx[i] = L_abs( params.pDsr_fx[i] ); move32(); } #endif /* set reverb acoustic configuration based on renderer config */ pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override; Loading Loading @@ -2416,6 +2438,55 @@ static ivas_error ivas_binaural_reverb_open_fx( return IVAS_ERR_OK; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*------------------------------------------------------------------------- * ivas_binaural_reverb_init() * * Allocate and initialize binaural room reverberator handle * for CLDFB renderers *------------------------------------------------------------------------*/ ivas_error ivas_binaural_reverb_init( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ const int16_t numBins, /* i : number of CLDFB bins */ const int16_t numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ const int32_t sampling_rate, /* i : sampling rate */ const float *defaultTimes, /* i : default reverberation times */ const float *defaultEne /* i : default reverberation energies */ ) { ivas_error error; const float *revTimes; const float *revEne; float t60[CLDFB_NO_CHANNELS_MAX]; float ene[CLDFB_NO_CHANNELS_MAX]; int16_t preDelay; error = IVAS_ERR_OK; if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) { revTimes = t60; revEne = ene; if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) { return error; } preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); } else { revTimes = defaultTimes; revEne = defaultEne; preDelay = 10; } error = ivas_binaural_reverb_open( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); return error; } /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_fastconv() * Loading Loading @@ -2515,6 +2586,7 @@ ivas_error ivas_binaural_reverb_open_parambin( return error; } #endif /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() Loading lib_rend/ivas_reverb_utils_fx.c +46 −5 Original line number Diff line number Diff line Loading @@ -64,8 +64,11 @@ typedef struct cldfb_convolver_state float filter_states_im[BINAURAL_CONVBANDS][CLDFB_CONVOLVER_NTAPS_MAX]; } cldfb_convolver_state; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); #else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); #endif /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_prepare_cldfb_params() Loading @@ -74,10 +77,15 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO *-----------------------------------------------------------------------------------------*/ ivas_error ivas_reverb_prepare_cldfb_params( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_STATISTICS_HANDLE hHrtfStatistics, #else IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, #endif const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ) Loading @@ -89,7 +97,9 @@ ivas_error ivas_reverb_prepare_cldfb_params( float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { Loading Loading @@ -133,11 +143,14 @@ ivas_error ivas_reverb_prepare_cldfb_params( exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { return error; } #endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { Loading @@ -147,13 +160,13 @@ ivas_error ivas_reverb_prepare_cldfb_params( return IVAS_ERR_OK; } #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_cldfb_convolver() * * Function for convolving CLDFB-domain data with filter taps *-----------------------------------------------------------------------------------------*/ #endif /*-----------------------------------------------------------------------------------------* * Function get_IR_from_filter_taps() Loading Loading @@ -260,7 +273,18 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( return IVAS_ERR_OK; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_set_energies() * * Function gets the precalculated left/right energies and computes average * left/right energies to CLDFB bin center frequencies. *-----------------------------------------------------------------------------------------*/ static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, #else /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_get_fastconv_hrtf_set_energies() * Loading @@ -273,21 +297,34 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, #endif const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; #endif float input_fc[FFT_SPECTRUM_SIZE]; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC; for ( freq_idx = 0; freq_idx < avg_pwr_len; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) ); } #else for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) ); } #endif if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) { Loading Loading @@ -315,6 +352,9 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); #else ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_left_fft_fx, avg_pwr_right_fft_fx, CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); for ( int i = 0; i < 257; i++ ) Loading @@ -331,4 +371,5 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( avg_pwr_right_fx ); free( avg_pwr_right_e ); return IVAS_ERR_OK; #endif } Loading
lib_rend/ivas_reverb_filter_design_fx.c +4 −0 Original line number Diff line number Diff line Loading @@ -919,6 +919,9 @@ void ivas_reverb_interpolate_acoustic_data_fx( return; } #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-------------------------------------------------------------------* * ivas_reverb_get_hrtf_set_properties() * Loading Loading @@ -1174,3 +1177,4 @@ void ivas_reverb_get_hrtf_set_properties_fx( return; } #endif
lib_rend/ivas_reverb_fx.c +80 −8 Original line number Diff line number Diff line Loading @@ -1264,21 +1264,32 @@ static void set_fft_and_datablock_sizes_fx( static void set_reverb_acoustic_data_fx( ivas_reverb_params_t *pParams, #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #else const AUDIO_CONFIG input_audio_config, const HRTFS_HANDLE hHrtf, #endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoomAcoustics, #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const Word16 subframe_len, #endif const Word16 nr_fc_input, const Word16 nr_fc_fft_filter ) { #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES int16_t bin_idx; #else Word16 nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx; #endif Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES #else Word32 *pHrtf_set_l_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_l_im_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_re_fx[MAX_INTERN_CHANNELS]; Word32 *pHrtf_set_r_im_fx[MAX_INTERN_CHANNELS]; Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; Word32 *pFc_input_fx = pRoomAcoustics->pFc_input_fx; Word32 *pAcoustic_rt60_fx = pRoomAcoustics->pAcoustic_rt60_fx; Loading Loading @@ -1330,7 +1341,7 @@ static void set_reverb_acoustic_data_fx( pParams->pHrtf_avg_pwr_response_r_const_fx = (const Word32 *) pParams->pHrtf_avg_pwr_response_r_fx; pParams->pHrtf_inter_aural_coherence_const_fx = (const Word32 *) pParams->pHrtf_inter_aural_coherence_fx; } #endif /* interpolate input table data for T60 and DSR to the FFT filter grid */ ivas_reverb_interpolate_acoustic_data_fx( nr_fc_input, pFc_input_fx, pAcoustic_rt60_fx, pAcoustic_dsr_fx, nr_fc_fft_filter, pFc_fx, pRt60_fx, pDsr_fx, pRt60_e, pDsr_e ); Loading Loading @@ -1462,12 +1473,15 @@ static ivas_error setup_FDN_branches_fx( ivas_error ivas_reverb_open_fx( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ #else const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ const Word32 *lr_energy_and_iac_fx[], /* i : precomuputed lr energies and iac */ #endif RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ const Word32 output_Fs /* i : output sampling rate */ ) const int32_t output_Fs ) { ivas_error error; REVERB_HANDLE pState = NULL; Loading Loading @@ -1541,6 +1555,13 @@ ivas_error ivas_reverb_open_fx( } test(); #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES set_reverb_acoustic_data( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); params.pHrtf_avg_pwr_response_l_const = hHrtfStatistics->average_energy_l; params.pHrtf_avg_pwr_response_r_const = hHrtfStatistics->average_energy_r; params.pHrtf_inter_aural_coherence_const = hHrtfStatistics->inter_aural_coherence; #else IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL ) { params.pHrtf_avg_pwr_response_l_const_fx = lr_energy_and_iac_fx[0]; Loading @@ -1564,6 +1585,7 @@ ivas_error ivas_reverb_open_fx( params.pDsr_fx[i] = L_abs( params.pDsr_fx[i] ); move32(); } #endif /* set reverb acoustic configuration based on renderer config */ pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override; Loading Loading @@ -2416,6 +2438,55 @@ static ivas_error ivas_binaural_reverb_open_fx( return IVAS_ERR_OK; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*------------------------------------------------------------------------- * ivas_binaural_reverb_init() * * Allocate and initialize binaural room reverberator handle * for CLDFB renderers *------------------------------------------------------------------------*/ ivas_error ivas_binaural_reverb_init( REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ const int16_t numBins, /* i : number of CLDFB bins */ const int16_t numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ const int32_t sampling_rate, /* i : sampling rate */ const float *defaultTimes, /* i : default reverberation times */ const float *defaultEne /* i : default reverberation energies */ ) { ivas_error error; const float *revTimes; const float *revEne; float t60[CLDFB_NO_CHANNELS_MAX]; float ene[CLDFB_NO_CHANNELS_MAX]; int16_t preDelay; error = IVAS_ERR_OK; if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) { revTimes = t60; revEne = ene; if ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60, ene ) ) != IVAS_ERR_OK ) { return error; } preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); } else { revTimes = defaultTimes; revEne = defaultEne; preDelay = 10; } error = ivas_binaural_reverb_open( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); return error; } /*------------------------------------------------------------------------- * ivas_binaural_reverb_open_fastconv() * Loading Loading @@ -2515,6 +2586,7 @@ ivas_error ivas_binaural_reverb_open_parambin( return error; } #endif /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() Loading
lib_rend/ivas_reverb_utils_fx.c +46 −5 Original line number Diff line number Diff line Loading @@ -64,8 +64,11 @@ typedef struct cldfb_convolver_state float filter_states_im[BINAURAL_CONVBANDS][CLDFB_CONVOLVER_NTAPS_MAX]; } cldfb_convolver_state; #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_l_out, float *avg_pwr_r_out ); #else static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ); #endif /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_prepare_cldfb_params() Loading @@ -74,10 +77,15 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO *-----------------------------------------------------------------------------------------*/ ivas_error ivas_reverb_prepare_cldfb_params( #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_STATISTICS_HANDLE hHrtfStatistics, #else IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, #endif const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ) Loading @@ -89,7 +97,9 @@ ivas_error ivas_reverb_prepare_cldfb_params( float delay_diff, ln_1e6_inverted, exp_argument; const float dist = DEFAULT_SRC_DIST; const float dmx_gain_2 = 4.0f * EVS_PI * dist * dist / 0.001f; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { Loading Loading @@ -133,11 +143,14 @@ ivas_error ivas_reverb_prepare_cldfb_params( exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); #else if ( ( error = ivas_reverb_get_fastconv_hrtf_set_energies( hHrtfFastConv, input_audio_config, use_brir, output_Fs, avg_pwr_left, avg_pwr_right ) ) != IVAS_ERR_OK ) { return error; } #endif for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { Loading @@ -147,13 +160,13 @@ ivas_error ivas_reverb_prepare_cldfb_params( return IVAS_ERR_OK; } #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_cldfb_convolver() * * Function for convolving CLDFB-domain data with filter taps *-----------------------------------------------------------------------------------------*/ #endif /*-----------------------------------------------------------------------------------------* * Function get_IR_from_filter_taps() Loading Loading @@ -260,7 +273,18 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( return IVAS_ERR_OK; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_set_energies() * * Function gets the precalculated left/right energies and computes average * left/right energies to CLDFB bin center frequencies. *-----------------------------------------------------------------------------------------*/ static void ivas_reverb_set_energies( const float *avg_pwr_l, const float *avg_pwr_r, #else /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_get_fastconv_hrtf_set_energies() * Loading @@ -273,21 +297,34 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCONV_HANDLE hHrtfFastConv, const AUDIO_CONFIG input_audio_config, const int16_t use_brir, #endif const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ) { int16_t freq_idx; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; #endif float input_fc[FFT_SPECTRUM_SIZE]; #ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_error error; #endif #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC; for ( freq_idx = 0; freq_idx < avg_pwr_len; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) ); } #else for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ ) { input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) ); } #endif if ( ( error = ivas_reverb_get_cldfb_hrtf_set_properties( input_audio_config, hHrtfFastConv, use_brir, sampling_rate, avg_pwr_left_fft, avg_pwr_right_fft ) ) != IVAS_ERR_OK ) { Loading Loading @@ -315,6 +352,9 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; } #ifdef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES ivas_reverb_interpolate_acoustic_data( avg_pwr_len, input_fc, avg_pwr_l, avg_pwr_r, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right ); #else ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_left_fft_fx, avg_pwr_right_fft_fx, CLDFB_NO_CHANNELS_MAX, output_fc_fx, avg_pwr_left_fx, avg_pwr_right_fx, avg_pwr_left_e, avg_pwr_right_e ); for ( int i = 0; i < 257; i++ ) Loading @@ -331,4 +371,5 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( free( avg_pwr_right_fx ); free( avg_pwr_right_e ); return IVAS_ERR_OK; #endif }