Commit 338cf216 authored by emerit's avatar emerit
Browse files

CRend Enable loading of different tables based on ambisonics order

parent 52dee461
Loading
Loading
Loading
Loading
+354 −0
Original line number Diff line number Diff line
@@ -447,6 +447,266 @@ static ivas_error ivas_rend_initCrend(
        }
        else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS )
        {
#ifdef UPDATE_SBA_FILTER
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
            if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 )
            {
#endif
                if ( output_Fs == 48000 )
                {
                    hHrtf->latency_s = CRendBin_HOA3_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_48kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA3_HRIR_coeff_im_48kHz[i][j];
                        }
                    }
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz[j];
                    }
                }
                else if ( output_Fs == 32000 )
                {
                    hHrtf->latency_s = CRendBin_HOA3_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_32kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA3_HRIR_coeff_im_32kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz[j];
                    }
                }
                else if ( output_Fs == 16000 )
                {
                    hHrtf->latency_s = CRendBin_HOA3_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA3_HRIR_max_num_iterations_16kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA3_HRIR_coeff_im_16kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz[j];
                    }
                }
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
            }
            else if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA2 )
            {
                if ( output_Fs == 48000 )
                {
                    hHrtf->latency_s = CRendBin_HOA2_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_48kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA2_HRIR_coeff_im_48kHz[i][j];
                        }
                    }
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz[j];
                    }
                }
                else if ( output_Fs == 32000 )
                {
                    hHrtf->latency_s = CRendBin_HOA2_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_32kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA2_HRIR_coeff_im_32kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz[j];
                    }
                }
                else if ( output_Fs == 16000 )
                {
                    hHrtf->latency_s = CRendBin_HOA2_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_HOA2_HRIR_max_num_iterations_16kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_HOA2_HRIR_coeff_im_16kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz[j];
                    }
                }
            }
            else if ( inConfig == IVAS_REND_AUDIO_CONFIG_FOA )
            {
                if ( output_Fs == 48000 )
                {
                    hHrtf->latency_s = CRendBin_FOA_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_48kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_FOA_HRIR_coeff_im_48kHz[i][j];
                        }
                    }
                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz[j];
                    }
                }
                else if ( output_Fs == 32000 )
                {
                    hHrtf->latency_s = CRendBin_FOA_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_32kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_FOA_HRIR_coeff_im_32kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz[j];
                    }
                }
                else if ( output_Fs == 16000 )
                {
                    hHrtf->latency_s = CRendBin_FOA_HRIR_latency_s;
                    hHrtf->max_num_iterations = CRendBin_FOA_HRIR_max_num_iterations_16kHz;
                    hHrtf->index_frequency_max_diffuse = CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz;

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

                        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                        {
                            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];
                            hHrtf->pOut_to_bin_im[i][j] = CRendBin_FOA_HRIR_coeff_im_16kHz[i][j];
                        }
                    }

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        hHrtf->num_iterations_diffuse[j] = CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[j];
                        hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz[j];
                        hHrtf->pOut_to_bin_diffuse_im[j] = CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz[j];
                    }
                }
            }
#endif
            else
            {
                return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" );
            }

#else
            if ( output_Fs == 48000 )
            {
                hHrtf->latency_s = CRendBin_HOA3_HRIR_latency_s;
@@ -531,6 +791,7 @@ static ivas_error ivas_rend_initCrend(
            {
                return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" );
            }
#endif
        }
        else
        {
@@ -632,6 +893,12 @@ static ivas_error ivas_rend_initCrend(
        }
        else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS )
        {

#ifdef UPDATE_SBA_FILTER
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
            if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 )
            {
#endif
                hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s;
                hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations;
                hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa3->index_frequency_max_diffuse;
@@ -655,13 +922,100 @@ static ivas_error ivas_rend_initCrend(
                    hHrtf->pOut_to_bin_diffuse_re[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_diffuse_re[j];
                    hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_diffuse_im[j];
                }
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
            }
            else if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA2 )
            {
                hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa2->latency_s;
                hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa2->max_num_iterations;
                hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa2->index_frequency_max_diffuse;

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

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        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];
                        hHrtf->pOut_to_bin_im[i][j] = hSetOfHRTF->hHRTF_hrir_hoa2->pOut_to_bin_im[i][j];
                    }
                }
                for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                {
                    hHrtf->num_iterations_diffuse[j] = hSetOfHRTF->hHRTF_hrir_hoa2->num_iterations_diffuse[j];
                    hHrtf->pIndex_frequency_max_diffuse[j] = hSetOfHRTF->hHRTF_hrir_hoa2->pIndex_frequency_max_diffuse[j];
                    hHrtf->pOut_to_bin_diffuse_re[j] = hSetOfHRTF->hHRTF_hrir_hoa2->pOut_to_bin_diffuse_re[j];
                    hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_hoa2->pOut_to_bin_diffuse_im[j];
                }
            }
            else if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA2 )
            {
                hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_foa->latency_s;
                hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_foa->max_num_iterations;
                hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_foa->index_frequency_max_diffuse;

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

                    for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                    {
                        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];
                        hHrtf->pOut_to_bin_im[i][j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_im[i][j];
                    }
                }
                for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                {
                    hHrtf->num_iterations_diffuse[j] = hSetOfHRTF->hHRTF_hrir_foa->num_iterations_diffuse[j];
                    hHrtf->pIndex_frequency_max_diffuse[j] = hSetOfHRTF->hHRTF_hrir_foa->pIndex_frequency_max_diffuse[j];
                    hHrtf->pOut_to_bin_diffuse_re[j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_diffuse_re[j];
                    hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_foa->pOut_to_bin_diffuse_im[j];
                }
            }
#endif
            else
            {
                return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported renderer type in Crend" );
            }
        }

#else

            hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s;
            hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations;
            hHrtf->index_frequency_max_diffuse = hSetOfHRTF->hHRTF_hrir_hoa3->index_frequency_max_diffuse;

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

                for ( j = 0; j < BINAURAL_CHANNELS; j++ )
                {
                    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];
                    hHrtf->pOut_to_bin_im[i][j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_im[i][j];
                }
            }
            for ( j = 0; j < BINAURAL_CHANNELS; j++ )
            {
                hHrtf->num_iterations_diffuse[j] = hSetOfHRTF->hHRTF_hrir_hoa3->num_iterations_diffuse[j];
                hHrtf->pIndex_frequency_max_diffuse[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pIndex_frequency_max_diffuse[j];
                hHrtf->pOut_to_bin_diffuse_re[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_diffuse_re[j];
                hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_diffuse_im[j];
            }
        }
        else
        {
            return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported renderer type in Crend" );
        }
#endif
    }

    pCrend->hHrtfCrend = hHrtf;

    return IVAS_ERR_OK;
+4 −0
Original line number Diff line number Diff line
@@ -96,6 +96,10 @@ ivas_error ivas_HRTF_CRend_binary_open(

    ( *hSetOfHRTF )->hHRTF_hrir_combined = NULL;
    ( *hSetOfHRTF )->hHRTF_hrir_hoa3 = NULL;
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
    ( *hSetOfHRTF )->hHRTF_hrir_hoa2 = NULL;
    ( *hSetOfHRTF )->hHRTF_hrir_foa = NULL;
#endif
    ( *hSetOfHRTF )->hHRTF_brir_combined = NULL;

    return IVAS_ERR_OK;
+4 −0
Original line number Diff line number Diff line
@@ -705,6 +705,10 @@ typedef struct ivas_hrtfs_crend_structure
{
    HRTFS_DATA *hHRTF_hrir_combined;
    HRTFS_DATA *hHRTF_hrir_hoa3;
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
    HRTFS_DATA *hHRTF_hrir_hoa2;
    HRTFS_DATA *hHRTF_hrir_foa;
#endif
    HRTFS_DATA *hHRTF_brir_combined;

} HRTFS_CREND, *HRTFS_CREND_HANDLE;
+4 −0
Original line number Diff line number Diff line
@@ -1598,6 +1598,10 @@ ivas_error destroy_SetOfHRTF(
    {
        destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_combined ) );
        destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa3 ) );
#ifdef UPDATE_SBA_FILTER_WITH_SUPPORT_FOA_HOA2_FILTERS
        destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa2 ) );
        destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_foa ) );
#endif
        destroy_HRTF( &( hSetOfHRTF->hHRTF_brir_combined ) );
    }