Commit e7e62fec authored by emerit's avatar emerit
Browse files

Merge branch '1963_basop_portFltMR-1568-1471-1690_ERI' into 1963_basop_portFltMR-1568-1471-1690

parents 63b7cdb2 37d0f2c2
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -1696,8 +1696,6 @@ typedef enum
#define ONE_BY_180_Q31                          ( 11930465 )    // Q31

#ifdef FIX_CREND_SIMPLIFY_CODE
#define RESAMPLE_FACTOR_16_48 ( 10922 )  // Q15
#define RESAMPLE_FACTOR_32_48 ( 21845 ) // Q15
#define RESAMPLE_FACTOR_16_48_FX ( 5461 )  // Q14
#define RESAMPLE_FACTOR_32_48_FX ( 10922 ) // Q14
#endif
+25 −23
Original line number Diff line number Diff line
@@ -38,9 +38,7 @@
#include "ivas_error.h"
#include "wmc_auto.h"
#include "ivas_rom_rend.h"
#ifdef FIX_989_TD_REND_ROM
#include <math.h>
#else
#ifndef FIX_989_TD_REND_ROM
#include "ivas_rom_binaural_crend_head.h"
#endif
#include "ivas_prot_fx.h"
@@ -51,7 +49,8 @@
#ifndef FIX_989_TD_REND_ROM
#define RESAMPLE_FACTOR_16_48 ( 16.0f / 48.0f )
#define RESAMPLE_FACTOR_32_48 ( 32.0f / 48.0f )

#endif
#ifndef FIX_CREND_SIMPLIFY_CODE
#define RESAMPLE_FACTOR_16_48_FX ( 5461 )  // Q14
#define RESAMPLE_FACTOR_32_48_FX ( 10922 ) // Q14
#endif
@@ -413,7 +412,7 @@ static ivas_error DefaultBSplineModel_fx(
    Word16 i, j;
    ivas_error error;
#ifdef FIX_989_TD_REND_ROM
    Word32 azimSegSamples;
    Word16 azimSegSamples;
#endif
    HrFiltSet_p->FilterMethod = TDREND_HRFILT_Method_BSplineModel;
    move16();
@@ -426,18 +425,18 @@ static ivas_error DefaultBSplineModel_fx(
    move16();

#ifdef FIX_989_TD_REND_ROM
    model->UseItdModel = defaultHRIR_rom_model_configuration[0];
    model->UseItdModel = defaultHRIR_rom_model_configuration[0]; // Q0
    move16();
    model->elevDim3 = defaultHRIR_rom_model_configuration[1];
    model->elevDim3 = defaultHRIR_rom_model_configuration[1]; // Q0
    move16();
    model->AlphaN = defaultHRIR_rom_model_configuration[2];
    model->AlphaN = defaultHRIR_rom_model_configuration[2]; // Q0
    move16();
    model->num_unique_azim_splines = defaultHRIR_rom_model_configuration[3];
    model->num_unique_azim_splines = defaultHRIR_rom_model_configuration[3]; // Q0
    move16();
    model->elevSegSamples = defaultHRIR_rom_model_configuration[4];
    model->elevSegSamples = defaultHRIR_rom_model_configuration[4]; // Q0
    move16();
    model->elevBsLen = defaultHRIR_rom_elevBsLen;
    model->elevBsStart = defaultHRIR_rom_elevBsStart;
    model->elevBsLen = defaultHRIR_rom_elevBsLen;     // Q0
    model->elevBsStart = defaultHRIR_rom_elevBsStart; // Q0
#else
    /* int16_t parameters */
    model->UseItdModel = 1; // Q0
@@ -488,7 +487,7 @@ static ivas_error DefaultBSplineModel_fx(
    }
    model->azimBsShape_fx[0] = defaultHRIR_rom_azimBsShape_fx; // Q30
#ifdef FIX_989_TD_REND_ROM
    if ( ( model->azimKSeq_fx = (Word32 **) malloc( model->elevDim3 * sizeof( float * ) ) ) == NULL )
    if ( ( model->azimKSeq_fx = (Word32 **) malloc( model->elevDim3 * sizeof( Word32 * ) ) ) == NULL )
#else
    IF( ( model->azimKSeq_fx = (Word32 **) malloc( 18 * sizeof( Word32 * ) ) ) == NULL )
#endif
@@ -498,20 +497,19 @@ static ivas_error DefaultBSplineModel_fx(
#ifdef FIX_989_TD_REND_ROM
    FOR( i = 0; i < model->elevDim3; i++ )
    {
        IF( ( model->azimKSeq_fx[i] = (Word32 *) malloc( ( model->azimDim3[i] + 1 ) * sizeof( Word32 * ) ) ) == NULL )
        if ( ( model->azimKSeq_fx[i] = (Word32 *) malloc( ( model->azimDim3[i] + 1 ) * sizeof( Word32 * ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) );
        }

        IF( LT_32( model->azimShapeIdx[i], 0 ) )
        azimSegSamples = defaultHRIR_rom_azimSegSamples[model->azimShapeIdx[i]]; // Q0
        move16();                                                                // indirect addressing cost
        move16();
        if ( LT_16( model->azimShapeIdx[i], 0 ) )
        {
            azimSegSamples = 360;
        }
        ELSE
        {
            azimSegSamples = defaultHRIR_rom_azimSegSamples[model->azimShapeIdx[i]];
        }
        move32();
        move16();

        assert( azimSegSamples == 360 / model->azimDim3[i] );
        FOR( j = 0; j < model->azimDim3[i] + 1; j++ )
@@ -567,7 +565,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->ER_e = 3;
            move16();
#ifdef FIX_989_TD_REND_ROM
            model->K = defaultHRIR_rom_model_configuration[5];
            model->K = defaultHRIR_rom_model_configuration[5]; // Q0
#else
            model->K = 128; // Q0
#endif
@@ -592,7 +590,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->ER_e = 3;
            move16();
#ifdef FIX_989_TD_REND_ROM
            model->K = extract_l( L_shr( L_add( L_mult0( RESAMPLE_FACTOR_32_48, defaultHRIR_rom_model_configuration[5] ), 32768 ), 15 ) );
            model->K = ( RESAMPLE_FACTOR_32_48_FX * defaultHRIR_rom_model_configuration[5] + ( 1 << 14 ) - 1 ) >> 14; // Q0
#else
            model->K = 86;  // Q0
#endif
@@ -617,7 +615,7 @@ static ivas_error DefaultBSplineModel_fx(
            model->ER_e = 3;
            move16();
#ifdef FIX_989_TD_REND_ROM
            model->K = extract_l( L_shr( L_add( L_mult0( RESAMPLE_FACTOR_16_48, defaultHRIR_rom_model_configuration[5] ), 32768 ), 15 ) );
            model->K = ( RESAMPLE_FACTOR_16_48_FX * defaultHRIR_rom_model_configuration[5] + ( 1 << 14 ) - 1 ) >> 14; // Q0
#else
            model->K = 43;  // Q0
#endif
@@ -634,9 +632,13 @@ static ivas_error DefaultBSplineModel_fx(

#ifdef FIX_989_TD_REND_ROM
    modelITD->elevDim3 = defaultHRIR_rom_ITD_model_configuration[0];
    move16();
    modelITD->azimDim3 = defaultHRIR_rom_ITD_model_configuration[1];
    move16();
    modelITD->elevSegSamples = defaultHRIR_rom_ITD_model_configuration[2];
    move16();
    modelITD->azimSegSamples = defaultHRIR_rom_ITD_model_configuration[3];
    move16();
    modelITD->elevBsLen = defaultHRIR_rom_ITD_elevBsLen;
    modelITD->elevBsStart = defaultHRIR_rom_ITD_elevBsStart;
#else
+8 −8
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    fread( v_tmp16, sizeof( Word16 ), modelITD->elevDim3 - 2, f_hrtf );
    for ( j = 0; j < modelITD->elevDim3 - 2; j++ )
    {
        modelITD->elevKSeq_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q22, factor_Q ) );
        modelITD->elevKSeq_dyn_fx[j] = L_shl_r( L_deposit_l(v_tmp16[j]), sub( Q22, factor_Q ) );
    }
    free( v_tmp16 );

@@ -354,7 +354,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    fread( v_tmp16, sizeof( Word16 ), ( modelITD->azimDim3 + 1 ) / 2 - 2, f_hrtf );
    for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ )
    {
        modelITD->azimKSeq_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q22, factor_Q ) );
        modelITD->azimKSeq_dyn_fx[j] = L_shl_r( L_deposit_l(v_tmp16[j]), sub( Q22, factor_Q ) );
    }
    free( v_tmp16 );

@@ -374,7 +374,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf );
    for ( j = 0; j < tmp; j++ )
    {
        modelITD->W_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q25, factor_Q ) );
        modelITD->W_dyn_fx[j] = L_shl_r( L_deposit_l(v_tmp16[j]), sub( Q25, factor_Q ) );
    }
    free( v_tmp16 );

@@ -439,7 +439,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    fread( v_tmp16, sizeof( Word16 ), tmp, f_hrtf );
    for ( j = 0; j < tmp; j++ )
    {
        modelITD->elevBsShape_dyn_fx[j] = L_shl_r( v_tmp16[j], sub( Q30, factor_Q ) );
        modelITD->elevBsShape_dyn_fx[j] = L_shl_r( L_deposit_l(v_tmp16[j]), sub( Q30, factor_Q ) );
    }
    free( v_tmp16 );
    fread( &modelITD->elevSegSamples, sizeof( Word16 ), 1, f_hrtf );
@@ -449,10 +449,10 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    modelITD->W_fx = (const Word32 *) modelITD->W_dyn_fx;
    modelITD->azimBsShape_fx = (const Word32 *) modelITD->azimBsShape_dyn_fx;
    modelITD->elevBsShape_fx = (const Word32 *) modelITD->elevBsShape_dyn_fx;
    modelITD->azimBsLen = modelITD->azimBsLen_dyn_fx;
    modelITD->azimBsStart = modelITD->azimBsStart_dyn_fx;
    modelITD->elevBsLen = modelITD->elevBsLen_dyn_fx;
    modelITD->elevBsStart = modelITD->elevBsStart_dyn_fx;
    modelITD->azimBsLen = (const Word16 *) modelITD->azimBsLen_dyn_fx;
    modelITD->azimBsStart = (const Word16 *) modelITD->azimBsStart_dyn_fx;
    modelITD->elevBsLen = (const Word16 *) modelITD->elevBsLen_dyn_fx;
    modelITD->elevBsStart = (const Word16 *) modelITD->elevBsStart_dyn_fx;

    return IVAS_ERR_OK;
}