Commit 81e5db5d authored by emerit's avatar emerit
Browse files

FIX_INV_DIFFUSE_WEIGHT Fix error in energy compensation in late binaural reverb

parent 304efc18
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@
#define ISM_FB_16k4                                     /* VA: Issue: 579: change BW from SWB to FB in NxISM conditions to match the EVS codec */
#define FIX_580_PARAMMC_ENER_BURSTS                     /* FhG: issue 580: energy bursts due to ILD holding when energy relations change too much */

#define FIX_INV_DIFFUSE_WEIGHT                          /* Orange : Fix error in energy compensation in late binaural reverb*/

/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */
+109 −11
Original line number Diff line number Diff line
@@ -72,9 +72,14 @@ static ivas_error ivas_hrtf_init(

    for ( i = 0; i < MAX_INTERN_CHANNELS; i++ )
    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
        hHrtf->inv_diffuse_weight[i] = 0;
#endif
        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
            hHrtf->inv_diffuse_weight[j][i] = 0;
#endif
            hHrtf->num_iterations[i][j] = 0;
            hHrtf->pIndex_frequency_max[i][j] = NULL;
            hHrtf->pOut_to_bin_re[i][j] = NULL;
@@ -345,6 +350,7 @@ static ivas_error ivas_rend_initCrend(

                if ( output_Fs == 48000 )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[tmp];
@@ -353,11 +359,14 @@ static ivas_error ivas_rend_initCrend(
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[tmp];
                    }

#endif
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[j][tmp];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_48kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_48kHz[tmp][j];
@@ -365,6 +374,9 @@ static ivas_error ivas_rend_initCrend(
                        }
                        else
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[j][tmp];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_48kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_48kHz[tmp][j];
@@ -374,6 +386,7 @@ static ivas_error ivas_rend_initCrend(
                }
                else if ( output_Fs == 32000 )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[tmp];
@@ -382,11 +395,14 @@ static ivas_error ivas_rend_initCrend(
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[tmp];
                    }

#endif
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[j][tmp];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_32kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_32kHz[tmp][j];
@@ -394,6 +410,9 @@ static ivas_error ivas_rend_initCrend(
                        }
                        else
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[j][tmp];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_32kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_32kHz[tmp][j];
@@ -403,6 +422,7 @@ static ivas_error ivas_rend_initCrend(
                }
                else if ( output_Fs == 16000 )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[tmp];
@@ -411,11 +431,15 @@ static ivas_error ivas_rend_initCrend(
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[tmp];
                    }

#endif
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[j][tmp];
#endif

                            hHrtf->num_iterations[i][j] = CRendBin_Combined_BRIR_num_iterations_16kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_16kHz[tmp][j];
@@ -423,6 +447,10 @@ static ivas_error ivas_rend_initCrend(
                        }
                        else
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[j][tmp];
#endif

                            hHrtf->num_iterations[i][j] = CRendBin_Combined_HRIR_num_iterations_16kHz[tmp][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[tmp][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_16kHz[tmp][j];
@@ -448,10 +476,15 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[i];

#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[i];
#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_48kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_48kHz[i][j];
@@ -474,10 +507,15 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[i];
#endif

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_32kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_32kHz[i][j];
@@ -501,10 +539,14 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[i];

#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA3_HRIR_num_iterations_16kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_16kHz[i][j];
@@ -535,10 +577,15 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[i];
#endif

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_48kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_48kHz[i][j];
@@ -561,10 +608,15 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[i];
#endif

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_32kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_32kHz[i][j];
@@ -588,10 +640,14 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[i];

#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_HOA2_HRIR_num_iterations_16kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_16kHz[i][j];
@@ -622,10 +678,14 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[i];

#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_48kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_48kHz[i][j];
@@ -648,10 +708,14 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[i];

#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_32kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_32kHz[i][j];
@@ -675,10 +739,14 @@ static ivas_error ivas_rend_initCrend(

                    for ( i = 0; i < hHrtf->max_num_ir; i++ )
                    {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[i];

#endif
                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                            hHrtf->inv_diffuse_weight[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[j][i];
#endif
                            hHrtf->num_iterations[i][j] = CRendBin_FOA_HRIR_num_iterations_16kHz[i][j];
                            hHrtf->pIndex_frequency_max[i][j] = CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[i][j];
                            hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_16kHz[i][j];
@@ -773,7 +841,7 @@ static ivas_error ivas_rend_initCrend(
                {
                    return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" );
                }

#ifndef FIX_INV_DIFFUSE_WEIGHT
                if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                {
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight[tmp];
@@ -782,11 +850,14 @@ static ivas_error ivas_rend_initCrend(
                {
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight[tmp];
                }

#endif
                for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                {
                    if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR )
                    {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[j][i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight[j][tmp];
#endif
                        hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_brir_combined->num_iterations[tmp][j];
                        hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_brir_combined->pIndex_frequency_max[tmp][j];
                        hHrtf->pOut_to_bin_re[i][j] = hSetOfHRTF->hHRTF_brir_combined->pOut_to_bin_re[tmp][j];
@@ -794,6 +865,9 @@ static ivas_error ivas_rend_initCrend(
                    }
                    else
                    {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[j][i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight[j][tmp];
#endif
                        hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_combined->num_iterations[tmp][j];
                        hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_combined->pIndex_frequency_max[tmp][j];
                        hHrtf->pOut_to_bin_re[i][j] = hSetOfHRTF->hHRTF_hrir_combined->pOut_to_bin_re[tmp][j];
@@ -812,10 +886,15 @@ static ivas_error ivas_rend_initCrend(

                for ( i = 0; i < hHrtf->max_num_ir; i++ )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight[i];
#endif

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[j][i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight[j][i];
#endif
                        hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->num_iterations[i][j];
                        hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->pIndex_frequency_max[i][j];
                        hHrtf->pOut_to_bin_re[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_re[i][j];
@@ -838,10 +917,15 @@ static ivas_error ivas_rend_initCrend(

                for ( i = 0; i < hHrtf->max_num_ir; i++ )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight[i];
#endif

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[j][i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight[j][i];
#endif
                        hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->num_iterations[i][j];
                        hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->pIndex_frequency_max[i][j];
                        hHrtf->pOut_to_bin_re[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->pOut_to_bin_re[i][j];
@@ -864,10 +948,15 @@ static ivas_error ivas_rend_initCrend(

                for ( i = 0; i < hHrtf->max_num_ir; i++ )
                {
#ifndef FIX_INV_DIFFUSE_WEIGHT
                    hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight[i];
#endif

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                        hHrtf->inv_diffuse_weight[j][i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight[j][i];
#endif
                        hHrtf->num_iterations[i][j] = hSetOfHRTF->hHRTF_hrir_foa->num_iterations[i][j];
                        hHrtf->pIndex_frequency_max[i][j] = hSetOfHRTF->hHRTF_hrir_foa->pIndex_frequency_max[i][j];
                        hHrtf->pOut_to_bin_re[i][j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_re[i][j];
@@ -1231,8 +1320,13 @@ static ivas_error ivas_rend_crendConvolver(

                for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ )
                {
#ifdef FIX_INV_DIFFUSE_WEIGHT
                    pFreq_buf_re[k] += pFreq_filt_re[k];
                    pFreq_buf_im[k] += pFreq_filt_im[k];
#else
                    pFreq_buf_re[k] += pFreq_filt_re[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
                    pFreq_buf_im[k] += pFreq_filt_im[k] * pCrend->hHrtfCrend->inv_diffuse_weight[i];
#endif
                }
            }

@@ -1291,6 +1385,10 @@ static ivas_error ivas_rend_crendConvolver(
            {
                tmp_out_re[k] += pFreq_buf_re[k] * pFreq_filt_re[k] - pFreq_buf_im[k] * pFreq_filt_im[k];
                tmp_out_im[k] += pFreq_buf_re[k] * pFreq_filt_im[k] + pFreq_buf_im[k] * pFreq_filt_re[k];
#ifdef FIX_INV_DIFFUSE_WEIGHT
                tmp_out_re[k] *= pCrend->hHrtfCrend->inv_diffuse_weight[j][i];
                tmp_out_im[k] *= pCrend->hHrtfCrend->inv_diffuse_weight[j][i];
#endif
            }
            offset = offset + k;
        }
+36 −16

File changed.

Preview size limit exceeded, changes collapsed.

+23 −23

File changed.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -695,7 +695,11 @@ typedef struct ivas_hrtfs_structure
    uint16_t index_frequency_max_diffuse;
    int16_t max_num_ir;
    int16_t max_num_iterations;
#ifdef FIX_INV_DIFFUSE_WEIGHT
    float inv_diffuse_weight[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */
#else
    float inv_diffuse_weight[MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */
#endif
    float gain_lfe;

} HRTFS_DATA, *HRTFS_HANDLE;
Loading