Commit 1c71bcc5 authored by Devansh Kandpal's avatar Devansh Kandpal
Browse files

all changes reverb_utils.c in lib_rend

parent 937e5c42
Loading
Loading
Loading
Loading
+49 −2
Original line number Diff line number Diff line
@@ -67,8 +67,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()
@@ -77,10 +80,16 @@ 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 )
@@ -92,7 +101,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++ )
    {
@@ -113,10 +124,14 @@ ivas_error ivas_reverb_prepare_cldfb_params(
        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++ )
    {
@@ -127,6 +142,7 @@ ivas_error ivas_reverb_prepare_cldfb_params(
}


#ifndef NONBE_FIX_922_PRECOMPUTED_HRTF_PROPERTIES
/*-----------------------------------------------------------------------------------------*
 * Function ivas_cldfb_convolver()
 *
@@ -470,8 +486,22 @@ static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties(

    return IVAS_ERR_OK;
}
#endif


#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()
 *
@@ -484,28 +514,44 @@ 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;
    const int16_t cldfb_freq_halfstep = MAX_SAMPLING_RATE / ( 4 * CLDFB_NO_CHANNELS_MAX );
#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];
    float output_fc[CLDFB_NO_CHANNELS_MAX];

#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

    for ( freq_idx = 0; freq_idx < CLDFB_NO_CHANNELS_MAX; freq_idx++ )
    {
        output_fc[freq_idx] = (float) ( ( 2 * freq_idx + 1 ) * cldfb_freq_halfstep );
    }

#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
    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 )
    {
        return error;
@@ -514,4 +560,5 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies(
    ivas_reverb_interpolate_acoustic_data( FFT_SPECTRUM_SIZE, input_fc, avg_pwr_left_fft, avg_pwr_right_fft, CLDFB_NO_CHANNELS_MAX, output_fc, avg_pwr_left, avg_pwr_right );

    return IVAS_ERR_OK;
#endif
}