Commit 84155257 authored by emerit's avatar emerit
Browse files

on going merge with td renderer fix

parent a21ab15f
Loading
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -161,7 +161,9 @@
#define FIX_1081_BINAURAL_SPLIT_PCM_SANITY_CHECK        /* VA: issue 1081: correct error print-out when BINAURAL_SPLIT_PCM is requested */
#endif

#define FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT            /* Orange issue 1031 : fix point hrtf binary file format */
#define FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT          /* Orange issue 1031 : new fix point hrtf binary file format */
#define FIX_CREND_SIMPLIFY_CODE                         /* Ora : simplify line code in crend */
#define FLOAT_FIX_POINT_HRTF_FILE_FORMAT                /* allows reading floation or fix point hrtf binary file format */
#define FIX_TDREND_HRTF_FILE_FORMAT                     /* Eri: fix point hrtf binary file format for TDREND */
#define FIX_1053_REVERB_RECONFIGURATION                 /* Philips: issue 1053: fix for dynamic switching of acoustic environment */
#define CONF_DISTATT                                    /* Eri: Make distance attenuation configurable */
+5 −5
Original line number Diff line number Diff line
@@ -1642,7 +1642,7 @@ static ivas_error ivas_rend_crendConvolver(
    const float *pIn;
    float *pFreq_buf_re, *pFreq_buf_im;
    float *pFreq_buf2_re, *pFreq_buf2_im;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FIX_CREND_SIMPLIFY_CODE
    float *pFreq_filt_re, *pFreq_filt_im;
#else
    const float *pFreq_filt_re, *pFreq_filt_im;
@@ -1698,7 +1698,7 @@ static ivas_error ivas_rend_crendConvolver(
    }

    i = 0;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FIX_CREND_SIMPLIFY_CODE
    if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 )
    {
        if ( pCrend->hHrtfCrend->same_inv_diffuse_weight )
@@ -1724,7 +1724,7 @@ static ivas_error ivas_rend_crendConvolver(
            {
                if ( pCrend->hHrtfCrend->same_inv_diffuse_weight )
                {
#ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifndef FIX_CREND_SIMPLIFY_CODE
                    pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse];
                    pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse];
#endif
@@ -1739,7 +1739,7 @@ static ivas_error ivas_rend_crendConvolver(
                }
                else
                {
#ifndef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifndef FIX_CREND_SIMPLIFY_CODE
                    pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[0][offset_diffuse];
                    pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[0][offset_diffuse];
                    pFreq_buf2_re = &hCrend->freq_buffer_re_diffuse[1][offset_diffuse];
@@ -1757,7 +1757,7 @@ static ivas_error ivas_rend_crendConvolver(
                    }
                }
            }
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FIX_CREND_SIMPLIFY_CODE
            pFreq_filt_re = &hCrend->freq_buffer_re[i][offset];
            pFreq_filt_im = &hCrend->freq_buffer_im[i][offset];

+77 −23
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@

#include "hrtf_file_reader.h"
#include <string.h>
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
#include <math.h>
#endif
#include "prot.h"
@@ -65,7 +65,7 @@ typedef struct ivas_hrtfs_file_header_t

#define RESAMPLE_FACTOR_16_48 ( 16.0f / 48.0f )
#define RESAMPLE_FACTOR_32_48 ( 32.0f / 48.0f )
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
#define DEFAULT_BIN_FILE_FX_FLAG 0x1000
#endif
/*---------------------------------------------------------------------*
@@ -228,7 +228,7 @@ static ivas_error check_hrtf_binary_header(

static ivas_error read_hrtf_binary_header(
    ivas_hrtfs_header_t *hrtf_header,
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t *is_fix_point,
#endif
    FILE *f_hrtf )
@@ -238,12 +238,12 @@ static ivas_error read_hrtf_binary_header(
    /*      Input configuration   (4 bytes) : See "BINAURAL_INPUT_AUDIO_CONFIG" */
    /*      Sampling Frequency    (4 bytes)                                     */
    /*      Raw data size         (4 bytes)                                     */
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    *is_fix_point = 0;
#endif
    if ( ( fread( &( hrtf_header->rend_type ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->input_cfg ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->frequency ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->data_size ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( hrtf_header->rend_type & DEFAULT_BIN_FILE_FX_FLAG )
        {
            *is_fix_point = 1;
@@ -272,12 +272,35 @@ static void LoadBSplineBinaryITD_fx(
    int16_t *v_tmp16;
    int16_t j;
    float q_scale;
#ifdef FIX_989_TD_REND_ROM
    fread( &modelITD->elevDim3, sizeof( int16_t ), 1, f_hrtf );
    modelITD->elevKSeq_dyn = (float *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( float ) );
    fread( modelITD->elevKSeq_dyn, sizeof( float ), modelITD->elevDim3 - 2, f_hrtf );
    v_tmp16 = (int16_t *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( int16_t ) );
    fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf );
    q_scale = powf( 2.f, -1.f * (float) factor_Q );
    fread( v_tmp16, sizeof( int16_t ), modelITD->elevDim3 - 2, f_hrtf );
    for ( j = 0; j < modelITD->elevDim3 - 2; j++ )
    {
        modelITD->elevKSeq_dyn[j] = ( (float) v_tmp16[j] ) * q_scale;
    }

    fread( &modelITD->azimDim3, sizeof( int16_t ), 1, f_hrtf );
    modelITD->azimKSeq_dyn = (float *) malloc( ( ( modelITD->azimDim3 + 1 ) / 2 - 2 ) * sizeof( float ) ); /* basis functions are flipped around 180 deg, number of basis functions above/below is (N+1)/2 */
    v_tmp16 = (int16_t *) malloc( ( ( modelITD->azimDim3 + 1 ) / 2 - 2 ) * sizeof( int16_t ) );
    fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf );
    q_scale = powf( 2.f, -1.f * (float) factor_Q );
    fread( v_tmp16, sizeof( int16_t ), ( modelITD->azimDim3 + 1 ) / 2 - 2, f_hrtf );
    for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ )
    {
        modelITD->azimKSeq_dyn[j] = ( (float) v_tmp16[j] ) * q_scale;
    }
#else
    fread( &modelITD->N, sizeof( int16_t ), 1, f_hrtf );
    fread( &modelITD->elevDim2, sizeof( int16_t ), 1, f_hrtf );
    fread( &modelITD->elevDim3, sizeof( int16_t ), 1, f_hrtf );
    modelITD->elevKSeq_dyn = (float *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( float ) );


    v_tmp16 = (int16_t *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( int16_t ) );
    fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf );
    q_scale = powf( 2.f, -1.f * (float) factor_Q );
@@ -299,7 +322,7 @@ static void LoadBSplineBinaryITD_fx(
    {
        modelITD->azimKSeq_dyn[j] = ( (float) v_tmp16[j] ) * q_scale;
    }

#endif
    fread( &tmp, sizeof( int16_t ), 1, f_hrtf );
    modelITD->W_dyn = (float *) malloc( tmp * sizeof( float ) );

@@ -411,6 +434,7 @@ static void LoadBSplineBinaryITD(

    modelITD->azimBsShape_dyn = (float *) malloc( tmp * sizeof( float ) );
    fread( modelITD->azimBsShape_dyn, sizeof( float ), tmp, f_hrtf );

    fread( &modelITD->azimSegSamples, sizeof( int16_t ), 1, f_hrtf );

    /* elevation */
@@ -505,6 +529,22 @@ static ivas_error LoadBSplineBinary_fx(
            return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "Error: HR filter file had an unsupported sampling rate (%d kHz)", tmp );
    }

#ifdef FIX_989_TD_REND_ROM
    fread( &model->K, sizeof( int16_t ), 1, f_hrtf );
    fread( &model->elevDim3, sizeof( int16_t ), 1, f_hrtf );
    model->elevKSeq_dyn = (float *) malloc( ( model->elevDim3 - 2 ) * sizeof( float ) );
    fread( model->elevKSeq_dyn, sizeof( float ), model->elevDim3 - 2, f_hrtf );

    v_tmp16 = (int16_t *) malloc( ( model->elevDim3 - 2 ) * sizeof( int16_t ) );
    fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf );
    q_scale = powf( 2.f, -1.f * (float) factor_Q );
    fread( v_tmp16, sizeof( int16_t ), model->elevDim3 - 2, f_hrtf );
    for ( j = 0; j < model->elevDim3 - 2; j++ )
    {
        model->elevKSeq_dyn[j] = ( (float) v_tmp16[j] * q_scale );
    }
    free( v_tmp16 );
#else
    fread( &model->SplineDegree, sizeof( int16_t ), 1, f_hrtf );
    fread( &model->K, sizeof( int16_t ), 1, f_hrtf );

@@ -523,13 +563,16 @@ static ivas_error LoadBSplineBinary_fx(
    free( v_tmp16 );

    model->azimDim2_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) );
#endif
    model->azimDim3_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) );
    model->azim_start_idx_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) );

    model->azimKSeq = (float **) malloc( model->elevDim3 * sizeof( float * ) );
    for ( i = 0; i < model->elevDim3; i++ )
    {
#ifndef FIX_989_TD_REND_ROM
        fread( &model->azimDim2_dyn[i], sizeof( int16_t ), 1, f_hrtf );
#endif
        fread( &model->azimDim3_dyn[i], sizeof( int16_t ), 1, f_hrtf );
        fread( &model->azim_start_idx_dyn[i], sizeof( int16_t ), 1, f_hrtf );
        model->azimKSeq[i] = (float *) malloc( ( model->azimDim3_dyn[i] + 1 ) * sizeof( float ) );
@@ -615,7 +658,9 @@ static ivas_error LoadBSplineBinary_fx(
    model->ER = (const float *) model->ER_dyn;
    model->elevBsShape = (const float *) model->elevBsShape_dyn;
    model->elevKSeq = (const float *) model->elevKSeq_dyn;
#ifndef FIX_989_TD_REND_ROM
    model->azimDim2 = (const int16_t *) model->azimDim2_dyn;
#endif
    model->azimDim3 = (const int16_t *) model->azimDim3_dyn;
    model->azim_start_idx = (const int16_t *) model->azim_start_idx_dyn;
    model->azimSegSamples = (const int16_t *) model->azimSegSamples_dyn;
@@ -660,6 +705,7 @@ static ivas_error LoadBSplineBinary(
    int16_t i, tmp;

    fread( &HrFiltSet_p->latency_s, sizeof( float ), 1, f_hrtf );

    model = &( HrFiltSet_p->ModelParams );

    /* Set ROM flag for correct deallocation */
@@ -712,7 +758,6 @@ static ivas_error LoadBSplineBinary(
#endif
    model->azimDim3_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) );
    model->azim_start_idx_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) );

    model->azimKSeq = (float **) malloc( model->elevDim3 * sizeof( float * ) );
    for ( i = 0; i < model->elevDim3; i++ )
    {
@@ -737,7 +782,6 @@ static ivas_error LoadBSplineBinary(
    model->azimBsShape = (const float **) malloc( model->num_unique_azim_splines * sizeof( float * ) );
    model->azimBsShape_dyn = (float **) malloc( model->num_unique_azim_splines * sizeof( float * ) );
    model->azimSegSamples_dyn = (int16_t *) malloc( model->num_unique_azim_splines * sizeof( int16_t ) );

    for ( i = 0; i < model->num_unique_azim_splines; i++ )
    {
        fread( &tmp, sizeof( int16_t ), 1, f_hrtf );
@@ -828,7 +872,7 @@ static ivas_error load_reverb_from_binary(
    int32_t hrtf_data_size_max;
    char *hrtf_data;
    int16_t lr_iac_len;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
    int16_t ind;
    Word16 factorQ;
@@ -872,7 +916,7 @@ static ivas_error load_reverb_from_binary(

    for ( hrtf_id = 0; ( hrtf_id < hrtfs_file_header.nb_hrtf ) && ( !is_reverb ); hrtf_id++ )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( read_hrtf_binary_header( &hrtf_header, &is_fx, f_hrtf ) != IVAS_ERR_OK )
#else
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
@@ -911,7 +955,7 @@ static ivas_error load_reverb_from_binary(
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
        }
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( is_fx )
        {
            fread( &factorQ, sizeof( Word16 ), 1, f_hrtf );
@@ -991,7 +1035,7 @@ static ivas_error TDREND_MIX_LoadHRTF(
    ivas_hrtfs_header_t hrtf_header;
    int32_t hrtf_data_size_max;
    char *hrtf_data;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -1039,7 +1083,7 @@ static ivas_error TDREND_MIX_LoadHRTF(

    for ( hrtf_id = 0; ( hrtf_id < hrtfs_file_header.nb_hrtf ) && ( !is_tdrend ); hrtf_id++ )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( read_hrtf_binary_header( &hrtf_header, &is_fx, f_hrtf ) != IVAS_ERR_OK )
#else
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
@@ -1386,8 +1430,13 @@ static ivas_error create_HRTF_from_rawdata(
    }

    /* max_total_num_fsamp_per_iteration */
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    max_total_num_fsamp_per_iteration = *( (uint32_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint32_t );
#else
    max_total_num_fsamp_per_iteration = *( (uint16_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint16_t );
#endif

    /* coeff_re (the size depends on pIndex_frequency_max) */
    for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ )
@@ -1438,8 +1487,13 @@ static ivas_error create_HRTF_from_rawdata(
    }

    /* max_total_num_fsamp_per_iteration_diff */
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    max_total_num_fsamp_per_iteration_diff = *( (uint32_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint32_t );
#else
    max_total_num_fsamp_per_iteration_diff = *( (uint16_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint16_t );
#endif

    if ( max_total_num_fsamp_per_iteration_diff != 0 )
    {
@@ -1489,7 +1543,7 @@ static ivas_error create_HRTF_from_rawdata(
    return IVAS_ERR_OK;
}

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
/*---------------------------------------------------------------------*
 * create_HRTF_from_rawdata_fx()
 *
@@ -2699,7 +2753,7 @@ ivas_error load_fastconv_HRTF_from_binary(
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    int16_t asFastconv = 0;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -2728,7 +2782,7 @@ ivas_error load_fastconv_HRTF_from_binary(
    /* Read & load */
    for ( hrtf_id = 0; hrtf_id < hrtfs_file_header.nb_hrtf; hrtf_id++ )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( read_hrtf_binary_header( &hrtf_header, &is_fx, f_hrtf ) != IVAS_ERR_OK )
#else
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
@@ -2746,7 +2800,7 @@ ivas_error load_fastconv_HRTF_from_binary(
                return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" );
            }

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
            if ( is_fx )
            {
                /* Create the HRTF reading the raw data from the binary file */
@@ -2875,7 +2929,7 @@ ivas_error load_parambin_HRTF_from_binary(
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    int16_t asParam = 0;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -2906,7 +2960,7 @@ ivas_error load_parambin_HRTF_from_binary(

    for ( hrtf_id = 0; hrtf_id < hrtfs_file_header.nb_hrtf; hrtf_id++ )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( read_hrtf_binary_header( &hrtf_header, &is_fx, f_hrtf ) != IVAS_ERR_OK )
#else
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
@@ -2983,7 +3037,7 @@ ivas_error create_SetOfHRTF_from_binary(
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -3015,7 +3069,7 @@ ivas_error create_SetOfHRTF_from_binary(

    for ( hrtf_id = 0; hrtf_id < hrtfs_file_header.nb_hrtf; hrtf_id++ )
    {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( read_hrtf_binary_header( &hrtf_header, &is_fx, f_hrtf ) != IVAS_ERR_OK )
#else
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
@@ -3064,7 +3118,7 @@ ivas_error create_SetOfHRTF_from_binary(

        if ( hHRTF != NULL )
        {
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
            if ( is_fx )
            {
                /* Create the HRTF reading the raw data from the binary file */
+60 −20
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@
#include "ivas_stat_dec.h"
#include "hrtf_file_reader.h"
#include "ivas_rom_rend.h"
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
#include <math.h>
#endif

@@ -60,7 +60,7 @@

#define DEFAULT_BIN_FILE_EXT ".bin"

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
#define DEFAULT_BIN_FILE_FX_FLAG 0x1000
#endif

@@ -102,8 +102,13 @@ typedef struct _crend_hrtf_tables_dimensions
    int16_t max_num_ir;
    int16_t max_num_iterations;
    int16_t max_num_iterations_diffuse;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    uint32_t max_total_num_fsamp_per_iteration;
    uint32_t max_total_num_fsamp_per_iteration_diff;
#else
    uint16_t max_total_num_fsamp_per_iteration;
    uint16_t max_total_num_fsamp_per_iteration_diff;
#endif

} crend_hrtf_tables_dimensions;

@@ -145,7 +150,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD

int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG input_cfg, int32_t frequency, crend_hrtf_tables_pointers *hrtf_table_ptrs /*OUT*/, crend_hrtf_tables_dimensions *hrtf_table_dims /*OUT*/ );
int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims );
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_ptrs, crend_hrtf_tables_dimensions *hrtf_table_dims );
#endif
/*---------------------------------------------------------------------*
@@ -622,7 +627,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
{
    int32_t mixerconv_hrtf_header_size, mixerconv_hrtf_data_size;
    char *mixerconv_hrtf = NULL, *mixerconv_hrtf_wptr;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -652,7 +657,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
        {
            configuration_name = "HOA3_HRIR";
        }
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( strstr( input_mixerconv_bin_hrir_file_name, "_fx" ) )
        {
            input_mixerconv_bin_hrir_file_name[strlen( input_mixerconv_bin_hrir_file_name ) - 3] = '\0';
@@ -701,7 +706,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
        {
            return NULL;
        }
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( strstr( input_mixerconv_bin_brir_file_name, "_fx" ) )
        {
            input_mixerconv_bin_brir_file_name[strlen( input_mixerconv_bin_brir_file_name ) - 3] = '\0';
@@ -765,7 +770,7 @@ char *create_hrtf_crend( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
        // Get the HRTF header

        // Renderer type
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            rend_type = rend_type + DEFAULT_BIN_FILE_FX_FLAG;
@@ -951,12 +956,12 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size )
    FILE *input_reverb_file = NULL;
    int32_t reverb_header_size, reverb_data_size;
    char *reverb = NULL, *reverb_wptr, *full_in_reverb_path = NULL;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif
    *hrtf_size = 0;

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    if ( strstr( input_reverb_file_name, "_fx" ) )
    {
        input_reverb_file_name[strlen( input_reverb_file_name ) - 3] = '\0';
@@ -1036,7 +1041,7 @@ char *create_reverb( int32_t frequency, int32_t *hrtf_size )
        // Get the HRTF header

        // Renderer type
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( reverb_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_REVERB_ALL + DEFAULT_BIN_FILE_FX_FLAG;
@@ -1104,7 +1109,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_
    int32_t hrtf_total_file_size = 0, hrtf_data_size = 0;
    int16_t nbHrft = 0, ind;
    ivas_hrtfs_header_t hrtf_header;
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    int16_t is_fx = 0;
#endif

@@ -1159,7 +1164,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_


    // Get the HRTF raw data
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    if ( strstr( input_fastconv_bin_file_name, "_fx" ) )
    {
        is_fx = 1;
@@ -1297,7 +1302,7 @@ char *create_hrtf_fastconv( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_
        // Get the HRTF header

        // Renderer type
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            rend_type = rend_type + DEFAULT_BIN_FILE_FX_FLAG;
@@ -1357,7 +1362,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
    int16_t i, j;
    FILE *input_param_bin_file = NULL;

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    char hrtf_identifier[8] = "";
    int16_t is_fx = 0;
    if ( strstr( input_param_bin_file_name, "_fx" ) )
@@ -1390,7 +1395,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size )

    hrtf_data_size = 0;

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT

    input_param_bin_file = fopen( full_in_param_bin_path, "rb" );

@@ -1417,6 +1422,7 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
        memset( hrtf, 0x00, *hrtf_size );
        hrtf_wptr = hrtf;

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC + DEFAULT_BIN_FILE_FX_FLAG;
@@ -1425,6 +1431,16 @@ char *create_hrtf_parametric( int32_t *hrtf_size )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC;
        }
#else
        if ( is_fx == 1 )
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM + DEFAULT_BIN_FILE_FX_FLAG;
        }
        else
        {
            *( (int32_t *) ( hrtf_wptr ) ) = HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM;
        }
#endif
        hrtf_wptr += sizeof( int32_t );

        // Decoder output format - not relevant parametric binaural renderer
@@ -2069,7 +2085,7 @@ int16_t get_crend_hrtf_tables( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INP
    return result;
}

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
/*---------------------------------------------------------------------*
 * compute_crend_hrtf_data_size_fx()
 *
@@ -2106,7 +2122,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_
    hrtf_data_size += sizeof( uint16_t );                                                 // index_frequency_max_diffuse
    hrtf_data_size += sizeof( Word16 );                                                   // inv_diffuse_weight factor Q
    hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( Word16 ); // inv_diffuse_weight
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration
#endif

    hrtf_data_size += sizeof( Word16 ); // filters factor Q
    // coeff_re & coeff_im : The size depends on pIndex_frequency_max
@@ -2121,7 +2141,11 @@ int32_t compute_crend_hrtf_data_size_fx( crend_hrtf_tables_pointers *hrtf_table_
        }
    }

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff
#endif
    if ( hrtf_table_dims->max_total_num_fsamp_per_iteration_diff != 0 )
    {
        // coeff_diffuse_re & coeff_diffuse_im : The size depends on pIndex_frequency_max
@@ -2171,7 +2195,11 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr

    hrtf_data_size += sizeof( uint16_t );                                                // index_frequency_max_diffuse
    hrtf_data_size += hrtf_table_dims->max_num_ir * BINAURAL_CHANNELS * sizeof( float ); // inv_diffuse_weight
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration
#endif
    // coeff_re & coeff_im : The size depends on pIndex_frequency_max
    for ( iIR = 0, iIndex = 0; iIR < hrtf_table_dims->max_num_ir; iIR++ )
    {
@@ -2184,7 +2212,11 @@ int32_t compute_crend_hrtf_data_size( crend_hrtf_tables_pointers *hrtf_table_ptr
        }
    }

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    hrtf_data_size += sizeof( uint32_t ); // max_total_num_fsamp_per_iteration_diff
#else
    hrtf_data_size += sizeof( uint16_t ); // max_total_num_fsamp_per_iteration_diff
#endif
    if ( hrtf_table_dims->max_total_num_fsamp_per_iteration_diff != 0 )
    {
        // coeff_diffuse_re & coeff_diffuse_im : The size depends on pIndex_frequency_max
@@ -2359,7 +2391,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
        return -1;
    }

#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
#ifdef FLOAT_FIX_POINT_HRTF_FILE_FORMAT
    if ( rend_type & DEFAULT_BIN_FILE_FX_FLAG )
        hrtf_data_size = compute_crend_hrtf_data_size_fx( &tabs_ptrs, &tabs_dims );
    else
@@ -2497,7 +2529,11 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
    hrtf_data_in_rptr += ctrl_size;

// max_total_num_fsamp_per_iteration
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint32_t *) ( hrtf_data_in_rptr ) ) )
#else
    if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint16_t *) ( hrtf_data_in_rptr ) ) )
#endif
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" );
        return -1;
@@ -2570,7 +2606,11 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD
    }

    // max_total_num_fsamp_per_iteration_diff
#ifdef FIX_CREND_FIX_POINT_HRTF_FILE_FORMAT
    if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint32_t *) ( hrtf_data_in_rptr ) ) )
#else
    if ( tabs_dims.max_total_num_fsamp_per_iteration_diff != *( (uint16_t *) ( hrtf_data_in_rptr ) ) )
#endif
    {
        fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration_diff!\n\n" );
        return -1;
+1 −1
Original line number Diff line number Diff line
clear -regexp ^((?!writeRomFileOutput|writeBinaryOutput|generateCustomBinaryFile|writeEachRendererBinaryOutput|rom_file|bin_file|hrir_file|brir_file|ivas_path|binary_path|output_bin_name|param_bin_file|fastconv_bin_file|td_binary_file|binary_name|rom_path).)*$
clear -regexp ^((?!writeRomFileOutput|writeBinaryOutput|generate_BE|generateBinaryFile_fx|generateCustomBinaryFile|writeEachRendererBinaryOutput|rom_file|bin_file|hrir_file|brir_file|ivas_path|binary_path|output_bin_name|param_bin_file|fastconv_bin_file|td_binary_file|binary_name|rom_path).)*$
Loading