Commit 6ebd4f0f authored by janssontoftg's avatar janssontoftg
Browse files

Add missing switch for TD rendering tunings and rename variables for default...

Add missing switch for TD rendering tunings and rename variables for default HRIR set, under TD_REND_TUNING_RENAME.
parent f5156717
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -216,6 +216,7 @@
#define FIX_625_IDX_OOB                                 /* FhG: Fix index out-of-bounds UBSAN error (issue 625) */

#define MASA_AND_OBJECTS                                /* Nokia: Combination of MASA and objects */
#define TD_REND_TUNING_RENAME                           /* Eri: Tuning of TD renderer model as part of contribution 25 and renaming for default HRIR set */



+85 −0
Original line number Diff line number Diff line
@@ -393,6 +393,7 @@ static ivas_error DefaultBSplineModel(
    /* int16_t parameters */
    model->UseItdModel = 1;
    model->SplineDegree = 4;
#ifdef TD_REND_TUNING_RENAME
    model->elevDim2 = 17;
    model->elevDim3 = 15;
    model->AlphaN = 470;
@@ -417,13 +418,43 @@ static ivas_error DefaultBSplineModel(
    /* float parameters */
    model->elevKSeq = (const float *) defaultHRIR_rom_elevKSeq;
    model->elevBsShape = (const float *) defaultHRIR_rom_elevBsShape;
#else
    model->elevDim2 = 20;
    model->elevDim3 = 18;
    model->AlphaN = 578;
    model->num_unique_azim_splines = 1;
    model->elevSegSamples = 3;
    model->elevBsLen[0] = 4;
    model->elevBsLen[1] = 7;
    model->elevBsLen[2] = 10;
    model->elevBsLen[3] = 7;
    model->elevBsStart[0] = 0;
    model->elevBsStart[1] = 4;
    model->elevBsStart[2] = 11;
    model->elevBsStart[3] = 21;

    model->azimDim2 = orange53_rom_azimDim2;
    model->azimDim3 = orange53_rom_azimDim3;
    model->azim_start_idx = orange53_rom_azim_start_idx;
    model->azimSegSamples = orange53_rom_azimSegSamples;
    model->azimShapeIdx = orange53_rom_azimShapeIdx;
    model->azimShapeSampFactor = orange53_rom_azimShapeSampFactor;

    /* float parameters */
    model->elevKSeq = (const float *) orange53_rom_elevKSeq;
    model->elevBsShape = (const float *) orange53_rom_elevBsShape;
#endif

    if ( ( model->azimBsShape = (const float **) malloc( model->num_unique_azim_splines * sizeof( float * ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
    }

#ifdef TD_REND_TUNING_RENAME
    model->azimBsShape[0] = (const float *) defaultHRIR_rom_azimBsShape;
#else
    model->azimBsShape[0] = (const float *) orange53_rom_azimBsShape;
#endif
    if ( ( model->azimKSeq = (float **) malloc( 18 * sizeof( float * ) ) ) == NULL )
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
@@ -432,16 +463,30 @@ static ivas_error DefaultBSplineModel(
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
    }
#ifdef TD_REND_TUNING_RENAME
    if ( ( model->azimKSeq[model->elevDim3 - 1] = (float *) malloc( 2 * sizeof( float * ) ) ) == NULL )
#else
    if ( ( model->azimKSeq[17] = (float *) malloc( 2 * sizeof( float * ) ) ) == NULL )
#endif
    {
        return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
    }
    model->azimKSeq[0][0] = 0.0f;
#ifdef TD_REND_TUNING_RENAME
    model->azimKSeq[model->elevDim3 - 1][0] = 0.0f;
#else
    model->azimKSeq[17][0] = 0.0f;
#endif
    model->azimKSeq[0][1] = 360.0f;
#ifdef TD_REND_TUNING_RENAME
    model->azimKSeq[model->elevDim3 - 1][1] = 360.0f;

    for ( i = 1; i < model->elevDim3 - 1; i++ )
#else
    model->azimKSeq[17][1] = 360.0f;
    
    for ( i = 1; i < 17; i++ )
#endif
    {
        if ( ( model->azimKSeq[i] = (float *) malloc( model->azimDim2[i] * sizeof( float * ) ) ) == NULL ) /* azimDim2[i] = 91, i=2..15 */
        {
@@ -449,17 +494,28 @@ static ivas_error DefaultBSplineModel(
        }
        for ( j = 0; j < model->azimDim2[i]; j++ )
        {
#ifdef TD_REND_TUNING_RENAME
            model->azimKSeq[i][j] = (float) defaultHRIR_rom_azimSegSamples[0] * j;
#else
            model->azimKSeq[i][j] = (float) orange53_rom_azimSegSamples[0] * j;
#endif
        }
    }

    switch ( output_Fs )
    {
        case 48000:
#ifdef TD_REND_TUNING_RENAME
            model->AlphaL = (const float *) defaultHRIR_rom_AlphaL48;
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR48;
            model->EL = (const float *) defaultHRIR_rom_EL48;
            model->ER = (const float *) defaultHRIR_rom_ER48;
#else
            model->AlphaL = (const float *) orange53_rom_AlphaL48;
            model->AlphaR = (const float *) orange53_rom_AlphaR48;
            model->EL = (const float *) orange53_rom_EL48;
            model->ER = (const float *) orange53_rom_ER48;
#endif
            model->K = 128;
            if ( HrFiltSet_p->ModelParams.UseItdModel )
            {
@@ -467,10 +523,17 @@ static ivas_error DefaultBSplineModel(
            }
            break;
        case 32000:
#ifdef TD_REND_TUNING_RENAME
            model->AlphaL = (const float *) defaultHRIR_rom_AlphaL32;
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR32;
            model->EL = (const float *) defaultHRIR_rom_EL32;
            model->ER = (const float *) defaultHRIR_rom_ER32;
#else
            model->AlphaL = (const float *) orange53_rom_AlphaL32;
            model->AlphaR = (const float *) orange53_rom_AlphaR32;
            model->EL = (const float *) orange53_rom_EL32;
            model->ER = (const float *) orange53_rom_ER32;
#endif
            model->K = 86;
            if ( HrFiltSet_p->ModelParams.UseItdModel )
            {
@@ -478,10 +541,17 @@ static ivas_error DefaultBSplineModel(
            }
            break;
        case 16000:
#ifdef TD_REND_TUNING_RENAME
            model->AlphaL = (const float *) defaultHRIR_rom_AlphaL16;
            model->AlphaR = (const float *) defaultHRIR_rom_AlphaR16;
            model->EL = (const float *) defaultHRIR_rom_EL16;
            model->ER = (const float *) defaultHRIR_rom_ER16;
#else
            model->AlphaL = (const float *) orange53_rom_AlphaL16;
            model->AlphaR = (const float *) orange53_rom_AlphaR16;
            model->EL = (const float *) orange53_rom_EL16;
            model->ER = (const float *) orange53_rom_ER16;
#endif
            model->K = 43;
            if ( HrFiltSet_p->ModelParams.UseItdModel )
            {
@@ -507,7 +577,11 @@ static ivas_error DefaultBSplineModel(
    modelITD->elevBsStart[2] = 11;
    modelITD->elevBsStart[3] = 21;

#ifdef TD_REND_TUNING_RENAME
    modelITD->elevKSeq = defaultHRIR_rom_ITD_elevKSeq;
#else
    modelITD->elevKSeq = model->elevKSeq;
#endif

    modelITD->azimBsLen[0] = 11;
    modelITD->azimBsLen[1] = 21;
@@ -520,6 +594,7 @@ static ivas_error DefaultBSplineModel(

    modelITD->azimSegSamples = 10;

#ifdef TD_REND_TUNING_RENAME
    modelITD->azimKSeq = defaultHRIR_rom_ITD_azimKSeq;
    modelITD->W = (const float *) defaultHRIR_rom_ITD_W;
    modelITD->azimBsShape = (const float *) defaultHRIR_rom_ITD_azimBsShape;
@@ -528,6 +603,16 @@ static ivas_error DefaultBSplineModel(
    HRTF_model_precalc( model );

    HrFiltSet_p->latency_s = defaultHRIR_rom_latency_s;
#else
    modelITD->azimKSeq = orange53_rom_ITD_azimKSeq;
    modelITD->W = (const float *) orange53_rom_ITD_W;
    modelITD->azimBsShape = (const float *) orange53_rom_ITD_azimBsShape;
    modelITD->elevBsShape = (const float *) orange53_rom_ITD_elevBsShape;

    HRTF_model_precalc( model );

    HrFiltSet_p->latency_s = orange53_rom_latency_s;
#endif
    HrFiltSet_p->SampleRate = output_Fs;
    HrFiltSet_p->FiltLength = HrFiltSet_p->ModelParams.K;

+6 −0
Original line number Diff line number Diff line
@@ -998,9 +998,15 @@ static void set_reverb_acoustic_data(
    }
    else
    {
#ifdef TD_REND_TUNING_RENAME
        pParams->pHrtf_avg_pwr_response_l_const = defaultHRIR_left_avg_power;
        pParams->pHrtf_avg_pwr_response_r_const = defaultHRIR_right_avg_power;
        pParams->pHrtf_inter_aural_coherence_const = defaultHRIR_coherence;
#else
        pParams->pHrtf_avg_pwr_response_l_const = orange53_left_avg_power;
        pParams->pHrtf_avg_pwr_response_r_const = orange53_right_avg_power;
        pParams->pHrtf_inter_aural_coherence_const = orange53_coherence;
#endif
    }

    /* interpolate input table data for T60 and DSR to the FFT filter grid */
+12413 −0

File changed.

Preview size limit exceeded, changes collapsed.

+30 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
/*-------------------------------------------------------------------------
 * TD Binaural rendering related ROM tables
 *------------------------------------------------------------------------*/
#ifdef TD_REND_TUNING_RENAME
/* TD renderer default HRIR model */
extern const float defaultHRIR_rom_latency_s;
extern const int16_t defaultHRIR_rom_azimDim2[15];
@@ -69,3 +70,32 @@ extern const uint32_t defaultHRIR_rom_ITD_azimBsShape[84];
extern const float defaultHRIR_rom_ITD_azimKSeq[19];
extern const uint32_t defaultHRIR_rom_ITD_elevBsShape[28];
extern const float defaultHRIR_rom_ITD_elevKSeq[16];
#else
/* TD renderer HRTF default model Orange53 */
extern const float orange53_rom_latency_s;
extern const int16_t orange53_rom_azimDim2[18];
extern const int16_t orange53_rom_azimDim3[18];
extern const int16_t orange53_rom_azim_start_idx[18];
extern const int16_t orange53_rom_azimSegSamples[1];
extern const int16_t orange53_rom_azimShapeIdx[18];
extern const int16_t orange53_rom_azimShapeSampFactor[18];
extern const float orange53_rom_elevKSeq[16];
extern const uint32_t orange53_rom_AlphaL48[578 * 128];
extern const uint32_t orange53_rom_AlphaR48[578 * 128];
extern const uint32_t orange53_rom_AlphaL32[578 * 86];
extern const uint32_t orange53_rom_AlphaR32[578 * 86];
extern const uint32_t orange53_rom_AlphaL16[578 * 43];
extern const uint32_t orange53_rom_AlphaR16[578 * 43];
extern const uint32_t orange53_rom_EL48[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_ER48[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_EL32[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_ER32[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_EL16[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_ER16[HRTF_MODEL_N_SECTIONS * 578];
extern const uint32_t orange53_rom_elevBsShape[28];
extern const uint32_t orange53_rom_azimBsShape[21];
extern const uint32_t orange53_rom_ITD_W[658];
extern const uint32_t orange53_rom_ITD_azimBsShape[84];
extern const float orange53_rom_ITD_azimKSeq[19];
extern const uint32_t orange53_rom_ITD_elevBsShape[28];
#endif
Loading