Commit 9050e697 authored by multrus's avatar multrus
Browse files

[cleanup] accept UPDATE_SBA_FILTER

parent e34d084b
Loading
Loading
Loading
Loading
+0 −24
Original line number Diff line number Diff line
@@ -657,11 +657,7 @@ int main(

    if ( arg.hrtfReaderEnabled )
    {
#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
#else
        IVAS_DEC_HRTF_HANDLE hHrtfTD;
#endif

        IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD );

@@ -672,11 +668,7 @@ int main(
        }


#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
#else
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF;
#endif
        IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF );

        if ( ( error = create_SetOfHRTF_from_binary( hSetOfHRTF, hrtfReader, arg.output_Fs ) ) != IVAS_ERR_OK )
@@ -684,22 +676,14 @@ int main(
            fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfCRendFileName );
            goto cleanup;
        }
#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL;
#else
        IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv;
#endif
        IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv );

        if ( ( error = load_fastconv_HRTF_from_binary( hHrtfFastConv, hrtfReader ) ) != IVAS_ERR_OK )
        {
            fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfCRendFileName );
        }
#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL;
#else
        IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin;
#endif
        IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin );

        if ( ( error = load_parambin_HRTF_from_binary( hHrtfParambin, hrtfReader ) ) != IVAS_ERR_OK )
@@ -777,18 +761,10 @@ cleanup:

    if ( arg.hrtfReaderEnabled )
    {
#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL;
#else
        IVAS_DEC_HRTF_HANDLE hHrtfTD;
#endif
        IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD );
        dealloc_HRTF_binary( hHrtfTD );
#ifdef UPDATE_SBA_FILTER
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL;
#else
        IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF;
#endif
        IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF );
        destroy_SetOfHRTF( hSetOfHRTF );
    }
+0 −8
Original line number Diff line number Diff line
@@ -1507,11 +1507,7 @@ typedef enum

#define BINAURAL_MAXBANDS                       60                          /* Max number of bands */
#define BINAURAL_CONVBANDS                      50                          /* Bands upto which convolution is performed */
#ifdef UPDATE_SBA_FILTER
#define BINAURAL_NTAPS                           5
#else
#define BINAURAL_NTAPS                           7
#endif
#define BINAURAL_NTAPS_MAX                      96

#define HRTF_SH_ORDER                           3
@@ -1529,13 +1525,9 @@ typedef enum
{
    BINAURAL_INPUT_AUDIO_CONFIG_INVALID,
    BINAURAL_INPUT_AUDIO_CONFIG_COMBINED,       /* 5_1, 5_1_2, 5_1_4, 7_1, 7_1_4 */
#ifdef UPDATE_SBA_FILTER    
    BINAURAL_INPUT_AUDIO_CONFIG_HOA3,            /*  HOA3 */
    BINAURAL_INPUT_AUDIO_CONFIG_HOA2,            /* HOA2 */
    BINAURAL_INPUT_AUDIO_CONFIG_FOA,            /* FOA */
#else    
    BINAURAL_INPUT_AUDIO_CONFIG_HOA,            /* FOA, HOA2, HOA3 */
#endif    
    BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED       /* Not used */

} BINAURAL_INPUT_AUDIO_CONFIG;
+0 −1
Original line number Diff line number Diff line
@@ -146,7 +146,6 @@
#define DISABLE_ADAP_RES_COD_TMP                        /* temporary fix for IVAS-403, disables adaptive residual coding */
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */

#define UPDATE_SBA_FILTER                               /* Dolby (Orange, FhG) : Contribution 36 - SBA HRIR update */

/*#define FIX_XXX_JBM_FIFO_BUFFER  */                   /* FhG: prevent wraparound of a length identifier in cause of large frames and many channels*/

+0 −39
Original line number Diff line number Diff line
@@ -146,11 +146,7 @@ static ivas_error ivas_binRenderer_convModuleOpen(

    if ( !isLoudspeaker )
    {
#ifdef UPDATE_SBA_FILTER
        hBinRenderer->nInChannels = audioCfg2channels( input_config );
#else
        hBinRenderer->nInChannels = 16;
#endif
    }
    else
    {
@@ -191,11 +187,7 @@ static ivas_error ivas_binRenderer_convModuleOpen(
    }
    else
    {
#ifdef UPDATE_SBA_FILTER
        hBinRenConvModule->numTaps = BINAURAL_NTAPS;
#else
        hBinRenConvModule->numTaps = 7;
#endif

        /* Use fixed order filtering */
        bandIdx = 0;
@@ -362,7 +354,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
                }
                else
                {
#ifdef UPDATE_SBA_FILTER
                    if ( input_config == AUDIO_CONFIG_HOA3 )
                    {
                        /* HOA3 filter coefficients */
@@ -391,13 +382,6 @@ static ivas_error ivas_binRenderer_convModuleOpen(
                    {
                        return IVAS_ERR_INVALID_INPUT_FORMAT;
                    }
#else
                    /* HOA3 filter coefficients */
                    hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx] = hHrtf->leftHRIRReal_HOA3[bandIdx][chIdx];
                    hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx] = hHrtf->leftHRIRImag_HOA3[bandIdx][chIdx];
                    hBinRenConvModule->filterTapsRightReal[bandIdx][chIdx] = hHrtf->rightHRIRReal_HOA3[bandIdx][chIdx];
                    hBinRenConvModule->filterTapsRightImag[bandIdx][chIdx] = hHrtf->rightHRIRImag_HOA3[bandIdx][chIdx];
#endif
                }
            }
        }
@@ -436,27 +420,18 @@ static ivas_error ivas_binaural_hrtf_open(

        HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s;
        HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s;
#ifdef UPDATE_SBA_FILTER
        HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s;
        HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s;
#endif
        HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s;

        for ( i = 0; i < BINAURAL_CONVBANDS; i++ )
        {
            for ( j = 0; j < HRTF_LS_CHANNELS; j++ )
            {
#ifdef UPDATE_SBA_FILTER
                mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], BINAURAL_NTAPS );
                mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], BINAURAL_NTAPS );
                mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], BINAURAL_NTAPS );
                mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], BINAURAL_NTAPS );
#else
                mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], 7 );
                mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], 7 );
                mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], 7 );
                mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], 7 );
#endif


                mvr2r( leftBRIRReal[i][j], HrtfFastConv->leftBRIRReal[i][j], BINAURAL_NTAPS_MAX );
@@ -465,7 +440,6 @@ static ivas_error ivas_binaural_hrtf_open(
                mvr2r( rightBRIRImag[i][j], HrtfFastConv->rightBRIRImag[i][j], BINAURAL_NTAPS_MAX );
            }

#ifdef UPDATE_SBA_FILTER
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], BINAURAL_NTAPS );
@@ -487,15 +461,6 @@ static ivas_error ivas_binaural_hrtf_open(
                mvr2r( rightHRIRReal_FOA[i][j], HrtfFastConv->rightHRIRReal_FOA[i][j], BINAURAL_NTAPS );
                mvr2r( rightHRIRImag_FOA[i][j], HrtfFastConv->rightHRIRImag_FOA[i][j], BINAURAL_NTAPS );
            }
#else
            for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
            {
                mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], 7 );
                mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], 7 );
                mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], 7 );
                mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], 7 );
            }
#endif
        }

        mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX );
@@ -749,7 +714,6 @@ ivas_error ivas_binRenderer_open(
            }
            else
            {
#ifdef UPDATE_SBA_FILTER
                if ( hBinRenderer->nInChannels == 16 )
                {
                    st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f );
@@ -766,9 +730,6 @@ ivas_error ivas_binRenderer_open(
                {
                    return IVAS_ERR_INVALID_INPUT_FORMAT;
                }
#else
                st_ivas->binaural_latency_ns = (int32_t) ( st_ivas->hHrtfFastConv->FASTCONV_HOA3_latency_s * 1000000000.f );
#endif
            }
        }
        else
+0 −126
Original line number Diff line number Diff line
@@ -504,7 +504,6 @@ static ivas_error ivas_rend_initCrend(
        }
        else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS )
        {
#ifdef UPDATE_SBA_FILTER
            if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 )
            {
                if ( output_Fs == 48000 )
@@ -770,92 +769,6 @@ static ivas_error ivas_rend_initCrend(
            {
                return IVAS_ERROR( IVAS_ERR_INVALID_INPUT_FORMAT, "Encountered unsupported input config in Crend" );
            }
#else
            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];
                }
            }
            else
            {
                return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" );
            }
#endif
        }
        else
        {
@@ -973,7 +886,6 @@ static ivas_error ivas_rend_initCrend(
        }
        else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS )
        {
#ifdef UPDATE_SBA_FILTER
            if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 )
            {
                hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s;
@@ -1057,36 +969,6 @@ static ivas_error ivas_rend_initCrend(
                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;
@@ -1383,17 +1265,9 @@ static ivas_error ivas_rend_crendConvolver(
    int16_t lfe_idx_in;
    int16_t offset, offset_in, offset_diffuse;
    int16_t nchan_in, nchan_out;
#ifdef UPDATE_SBA_FILTER
    const float *pIn;
#else
    float *pIn;
#endif
    float *pFreq_buf_re, *pFreq_buf_im;
#ifdef UPDATE_SBA_FILTER
    const float *pFreq_filt_re, *pFreq_filt_im;
#else
    float *pFreq_filt_re, *pFreq_filt_im;
#endif
    float pOut[L_FRAME48k * 2];
    float tmp_out_re[L_FRAME48k], tmp_out_im[L_FRAME48k];
    ivas_error error;
Loading