Commit ba7278f1 authored by emerit's avatar emerit
Browse files

bug fix

parent b1ae59d2
Loading
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -134,9 +134,14 @@

/* #################### End DEBUGGING switches ############################ */

/* ################# Start DEVELOPMENT switches ######################## */

/* keep as part of options.h */
#define BASOP_NOGLOB                                    /* Disable global symbols in BASOPs, Overflow/Carry in BASOPs disabled, additional BASOPs in case of Overflow */


/* ################# Start BE DEVELOPMENT switches ######################## */
/* only BE switches wrt operation points tested in selection */

/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */


@@ -163,7 +168,16 @@

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

/* ################## End DEVELOPMENT switches ######################### */
/* ################## End BE DEVELOPMENT switches ######################### */


/* #################### Start NON-BE CR switches ########################## */
/* any switch which is non-be wrt operation points tested in selection */
/* all switches in this category should start with "CR_" */


/* ##################### End NON-BE CR switches ########################### */

/* clang-format on */

#endif
+16 −36

File changed.

Preview size limit exceeded, changes collapsed.

+15 −15
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ extern uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[15];
extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern float CRendBin_Combined_HRIR_coeff_re_48kHz[15][BINAURAL_CHANNELS][240];
extern float CRendBin_Combined_HRIR_coeff_im_48kHz[15][BINAURAL_CHANNELS][240];
@@ -73,7 +73,7 @@ extern uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[15];
extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern float CRendBin_Combined_HRIR_coeff_re_32kHz[15][BINAURAL_CHANNELS][160];
extern float CRendBin_Combined_HRIR_coeff_im_32kHz[15][BINAURAL_CHANNELS][160];
@@ -87,7 +87,7 @@ extern uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[15];
extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern float CRendBin_Combined_HRIR_coeff_re_16kHz[15][BINAURAL_CHANNELS][80];
extern float CRendBin_Combined_HRIR_coeff_im_16kHz[15][BINAURAL_CHANNELS][80];
@@ -105,7 +105,7 @@ extern uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[4][BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[4][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][4];
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[4];
extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern float CRendBin_FOA_HRIR_coeff_re_48kHz[4][BINAURAL_CHANNELS][240];
extern float CRendBin_FOA_HRIR_coeff_im_48kHz[4][BINAURAL_CHANNELS][240];
@@ -119,7 +119,7 @@ extern uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[4][BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[4][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][4];
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[4];
extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern float CRendBin_FOA_HRIR_coeff_re_32kHz[4][BINAURAL_CHANNELS][160];
extern float CRendBin_FOA_HRIR_coeff_im_32kHz[4][BINAURAL_CHANNELS][160];
@@ -133,7 +133,7 @@ extern uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[4][BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[4][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][4];
extern float CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[4];
extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern float CRendBin_FOA_HRIR_coeff_re_16kHz[4][BINAURAL_CHANNELS][80];
extern float CRendBin_FOA_HRIR_coeff_im_16kHz[4][BINAURAL_CHANNELS][80];
@@ -151,7 +151,7 @@ extern uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[9][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[9][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][9];
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[9];
extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA2_HRIR_coeff_re_48kHz[9][BINAURAL_CHANNELS][240];
extern float CRendBin_HOA2_HRIR_coeff_im_48kHz[9][BINAURAL_CHANNELS][240];
@@ -165,7 +165,7 @@ extern uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[9][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[9][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][9];
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[9];
extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA2_HRIR_coeff_re_32kHz[9][BINAURAL_CHANNELS][160];
extern float CRendBin_HOA2_HRIR_coeff_im_32kHz[9][BINAURAL_CHANNELS][160];
@@ -179,7 +179,7 @@ extern uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[9][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[9][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][9];
extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[9];
extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA2_HRIR_coeff_re_16kHz[9][BINAURAL_CHANNELS][80];
extern float CRendBin_HOA2_HRIR_coeff_im_16kHz[9][BINAURAL_CHANNELS][80];
@@ -197,7 +197,7 @@ extern uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[16][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[16][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][16];
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[16];
extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA3_HRIR_coeff_re_48kHz[16][BINAURAL_CHANNELS][240];
extern float CRendBin_HOA3_HRIR_coeff_im_48kHz[16][BINAURAL_CHANNELS][240];
@@ -211,7 +211,7 @@ extern uint16_t CRendBin_HOA3_HRIR_num_iterations_32kHz[16][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[16][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][16];
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[16];
extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA3_HRIR_coeff_re_32kHz[16][BINAURAL_CHANNELS][160];
extern float CRendBin_HOA3_HRIR_coeff_im_32kHz[16][BINAURAL_CHANNELS][160];
@@ -225,7 +225,7 @@ extern uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[16][BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[16][BINAURAL_CHANNELS][1];
extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][16];
extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[16];
extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS];
extern float CRendBin_HOA3_HRIR_coeff_re_16kHz[16][BINAURAL_CHANNELS][80];
extern float CRendBin_HOA3_HRIR_coeff_im_16kHz[16][BINAURAL_CHANNELS][80];
@@ -243,7 +243,7 @@ extern uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[15][BINAURAL_CHANNELS][22];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40];
extern float CRendBin_Combined_BRIR_coeff_re_48kHz[15][BINAURAL_CHANNELS][2955];
extern float CRendBin_Combined_BRIR_coeff_im_48kHz[15][BINAURAL_CHANNELS][2955];
@@ -257,7 +257,7 @@ extern uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[15][BINAURAL_CHANNELS][22];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40];
extern float CRendBin_Combined_BRIR_coeff_re_32kHz[15][BINAURAL_CHANNELS][2819];
extern float CRendBin_Combined_BRIR_coeff_im_32kHz[15][BINAURAL_CHANNELS][2819];
@@ -271,7 +271,7 @@ extern uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[15][BINAURAL_CHANNEL
extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[15][BINAURAL_CHANNELS][23];
extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz;
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][15];
extern float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[15];
extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40];
extern float CRendBin_Combined_BRIR_coeff_re_16kHz[15][BINAURAL_CHANNELS][1774];
extern float CRendBin_Combined_BRIR_coeff_im_16kHz[15][BINAURAL_CHANNELS][1774];
+14 −11
Original line number Diff line number Diff line
@@ -153,9 +153,7 @@ uint16_t get_next_indice(

bool read_compensation_gains( char *file, float *gains )
{
    char char_buff[50];
    FILE *fp = NULL;
    char *char_ptr;
    int16_t i = 0;
    if ( gains == NULL )
    {
@@ -825,8 +823,11 @@ int main( int argc, char *argv[] )
    return err;
}


#ifdef FIX_INV_DIFFUSE_WEIGHT
int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim, bool harmonize_late_reverb_binaural_gain, const float comp_gains[MAX_OUTPUT_CHANNELS] )
#else
int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim )
#endif
{
    char *sofa_file_path = NULL;
    int i, indSR;
@@ -857,6 +858,8 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim,
    double t[3] = { 0 };
    long nearest;
#else
    struct MYSOFA_ARRAY *latency_s = NULL;

    int err;
    struct MYSOFA_EASY *hrtf = (struct MYSOFA_EASY *) malloc( sizeof( struct MYSOFA_EASY ) );
    if ( !hrtf )
@@ -1023,7 +1026,7 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim,
    sofaDataBaseName = ( hrtf->hrtf->attributes, "DatabaseName" );
    sofaListenerName = ( hrtf->hrtf->attributes, "ListenerShortName" );

    struct MYSOFA_ARRAY *latency_s = mysofa_getVariable( hrtf->hrtf->variables, "latencys" );
    latency_s = mysofa_getVariable( hrtf->hrtf->variables, "latencys" );


#endif
@@ -1397,7 +1400,11 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim,
            latency_48k = (double) ind_max_ir / (double) sample_rates[indSR];
        }
        ivas_hrtf->latency_s[0] = (double *) malloc( sizeof( double ) );
#ifdef FIX_REMOVE_MYSOFA
        if ( sofa_latencys == NULL )
#else
        if ( latency_s == NULL )
#endif
        {
            ivas_hrtf->latency_s[0][0] = latency_48k;
        }
@@ -1429,7 +1436,7 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim,
            hrtf_data.latency_s = latency_48k_optim;
        }

        if ( ( hrtf_data.num_iterations[0][0] > 2 ) && ( no_optim == false ) )
        if ( ( hrtf_data.num_iterations[0][0] > 1 ) && ( no_optim == false ) )
        {
            ivas_crend_binaural_filter_design_compute_filters_params( ivas_hrtf, frame_len, &hrtf_data, &index_start, &index_end, &max_ir_len );
#ifdef FIX_INV_DIFFUSE_WEIGHT
@@ -1486,6 +1493,7 @@ int generate_crend_ivas_tables_from_sofa( const char *file_path, bool no_optim,
                ivas_hrtf->data_ir[i][1] = NULL;
            }
        }
        latency_s = NULL;
        free( ivas_hrtf );
        ivas_hrtf_close( &hrtf_data );
    }
@@ -1634,12 +1642,7 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int
    {
        /* float latency_s; */
        fprintf( fp, "\n\n/********************** %s_%s **********************/\n", DECLARATION_NAME, lscfg.name );
#ifdef FIX_DIFF_IN_ROM_FILE_GEN
        fprintf( fp, "\n#ifdef FIX_BINAURAL_DELAY_PRECISION\nconst float %s_%s_latency_s = %10.9ff;\n#else", DECLARATION_NAME, lscfg.name, hrtf->latency_s );
        fprintf( fp, "\nconst float %s_%s_latency_s = %16.15ff;\n#endif", DECLARATION_NAME, lscfg.name, hrtf->latency_s - 0.000000001f );
#else
        fprintf( fp, "\nconst float %s_%s_latency_s = %10.9ff;", DECLARATION_NAME, lscfg.name, hrtf->latency_s );
#endif
    }

    fprintf( fp, "\n\n/* Sample Rate = %ld */\n", (long) samplerate );
@@ -2215,7 +2218,7 @@ void write_binary_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const
    data_size_tmp = hrtf->max_num_ir * sizeof( float );
    for ( iIR = 0; iIR < hrtf->max_num_ir; iIR++ )
    {
        sprintf( tmpStr, FORMAT_FLOAT, hrtf->inv_diffuse_weight[0][iIR] );
        sprintf( tmpStr, FORMAT_FLOAT, hrtf->inv_diffuse_weight[iIR] );
        sscanf( tmpStr, "%f", &( (float *) hrtf_bin_wptr )[iIR] );
    }
    data_size_tmp = hrtf->max_num_ir * sizeof( float );