Commit fb9b4f1e authored by emerit's avatar emerit
Browse files

bug bix and code refactoring

parent 6e9d1a7e
Loading
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ void ivas_HRTF_binary_close_fx(
    }

#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    int16_t i;
    Word16 i;
    IF( ( *hHrtfTD )->ModelParams.modelROM )
    {
        FOR( i = 0; i < ( *hHrtfTD )->ModelParams.num_unique_azim_splines; i++ )
@@ -222,11 +222,11 @@ ivas_error ivas_HRTF_CRend_binary_open_buffers_int16(
 * Allocate buffer with dynamic length for HRTF binary Crend handle
 *-----------------------------------------------------------------------*/
ivas_error ivas_HRTF_binary_open_buffers_uint16(
    uint16_t **buffer,      /* o  : buffer to allocate      */
    UWord16 **buffer,       /* o  : buffer to allocate      */
    const uint32_t mem_size /* i  : size of buffer          */
)
{
    *buffer = (uint16_t *) malloc( mem_size );
    *buffer = (UWord16 *) malloc( mem_size );

    if ( *buffer == NULL )
    {
@@ -242,11 +242,11 @@ ivas_error ivas_HRTF_binary_open_buffers_uint16(
 * Allocate buffer with dynamic length for HRTF binary Crend handle
 *-----------------------------------------------------------------------*/
ivas_error ivas_HRTF_binary_open_buffers_int32(
    int32_t **buffer,       /* o  : buffer to allocate      */
    Word32 **buffer,        /* o  : buffer to allocate      */
    const uint32_t mem_size /* i  : size of buffer          */
)
{
    *buffer = (int32_t *) malloc( mem_size );
    *buffer = (Word32 *) malloc( mem_size );

    if ( *buffer == NULL )
    {
@@ -262,11 +262,11 @@ ivas_error ivas_HRTF_binary_open_buffers_int32(
 * Allocate buffer with dynamic length for HRTF binary Crend handle
 *-----------------------------------------------------------------------*/
ivas_error ivas_HRTF_binary_open_buffers_int32_ptr(
    int32_t ***buffer,      /* o  : buffer to allocate      */
    Word32 ***buffer,       /* o  : buffer to allocate      */
    const uint32_t mem_size /* i  : size of buffer          */
)
{
    *buffer = (int32_t **) malloc( mem_size );
    *buffer = (Word32 **) malloc( mem_size );

    if ( *buffer == NULL )
    {
@@ -282,11 +282,11 @@ ivas_error ivas_HRTF_binary_open_buffers_int32_ptr(
 * Allocate buffer with dynamic length for HRTF binary Crend handle
 *-----------------------------------------------------------------------*/
ivas_error ivas_HRTF_binary_open_buffers_int32_ptr_const(
    const int32_t ***buffer, /* o  : buffer to allocate      */
    const Word32 ***buffer, /* o  : buffer to allocate      */
    const uint32_t mem_size /* i  : size of buffer          */
)
{
    *buffer = (const int32_t **) malloc( mem_size );
    *buffer = (const Word32 **) malloc( mem_size );

    if ( *buffer == NULL )
    {
@@ -461,7 +461,7 @@ ivas_error ivas_HRTF_statistics_binary_open_fx(
    }

#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    set_c( (int8_t *) ( *hHrtfStatistics ), 0, (int32_t) sizeof( HRTFS_STATISTICS ) );
    set_c( (Word8 *) ( *hHrtfStatistics ), 0, (Word32) sizeof( HRTFS_STATISTICS ) );
#endif
    return IVAS_ERR_OK;
}
+67 −67
Original line number Diff line number Diff line
@@ -51,9 +51,9 @@ struct hrtfFileReader
typedef struct ivas_hrtfs_file_header_t
{
    char identifier[8];
    int32_t file_size;
    int16_t nb_hrtf;
    int32_t max_data_size;
    Word32 file_size;
    Word16 nb_hrtf;
    Word32 max_data_size;

} ivas_hrtfs_file_header_t;

@@ -129,7 +129,7 @@ static ivas_error read_and_check_hrtf_binary_file_header(
    ivas_hrtfs_file_header_t *hrtf_file_header,
    FILE *f_hrtf )
{
    int32_t file_size;
    Word32 file_size;

    if ( hrtf_file_header == NULL || f_hrtf == NULL )
    {
@@ -146,7 +146,7 @@ static ivas_error read_and_check_hrtf_binary_file_header(
    file_size = ftell( f_hrtf );
    fseek( f_hrtf, 0, SEEK_SET );

    if ( file_size < (int32_t) sizeof( ivas_hrtfs_file_header_t ) )
    if ( file_size < (Word32) sizeof( ivas_hrtfs_file_header_t ) )
    {
        return IVAS_ERROR( IVAS_ERR_END_OF_FILE, "HRTF binary file not compliant (size of file header)" );
    }
@@ -230,7 +230,7 @@ static ivas_error read_hrtf_binary_header(
    /*      Sampling Frequency    (4 bytes)                                     */
    /*      Raw data size         (4 bytes)                                     */

    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 ) )
    if ( ( fread( &( hrtf_header->rend_type ), sizeof( Word32 ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->input_cfg ), sizeof( Word32 ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->frequency ), sizeof( Word32 ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->data_size ), sizeof( Word32 ), 1, f_hrtf ) == 1 ) )
    {
        return IVAS_ERR_OK;
    }
@@ -361,7 +361,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(

    /* azimuth */
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &modelITD->azimBsLen_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &modelITD->azimBsLen_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    modelITD->azimBsLen_dyn_fx = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -371,7 +371,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    }
    fread( modelITD->azimBsLen_dyn_fx, sizeof( Word16 ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &modelITD->azimBsStart_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &modelITD->azimBsStart_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    modelITD->azimBsStart_dyn_fx = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -404,7 +404,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(

    /* elevation */
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &modelITD->elevBsLen_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &modelITD->elevBsLen_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    modelITD->elevBsLen_dyn_fx = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -414,7 +414,7 @@ static ivas_error TDREND_LoadBSplineBinaryITD(
    }
    fread( modelITD->elevBsLen_dyn_fx, sizeof( Word16 ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &modelITD->elevBsStart_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &modelITD->elevBsStart_dyn_fx, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    modelITD->elevBsStart_dyn_fx = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -544,12 +544,12 @@ static ivas_error TDREND_LoadBSplineBinary(
    }
    free( v_tmp16 );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->azimDim3_dyn, model->elevDim3 * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->azimDim3_dyn, model->elevDim3 * sizeof( Word16 ) );
#else
    model->azimDim3_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) );
#endif
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->azim_start_idx_dyn, model->elevDim3 * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->azim_start_idx_dyn, model->elevDim3 * sizeof( Word16 ) );
#else
    model->azim_start_idx_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) );
#endif
@@ -640,7 +640,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    model->azimBsShape_dyn_fx = (Word32 **) malloc( model->num_unique_azim_splines * sizeof( Word32 * ) );
#endif
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->azimSegSamples_dyn, model->num_unique_azim_splines * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->azimSegSamples_dyn, model->num_unique_azim_splines * sizeof( Word16 ) );
#else
    model->azimSegSamples_dyn = (Word16 *) malloc( model->num_unique_azim_splines * sizeof( Word16 ) );
#endif
@@ -677,7 +677,7 @@ static ivas_error TDREND_LoadBSplineBinary(
        free( v_tmp16 );
    }
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->azimShapeIdx_dyn, model->elevDim3 * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->azimShapeIdx_dyn, model->elevDim3 * sizeof( Word16 ) );
#else
    model->azimShapeIdx_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) );
#endif
@@ -687,7 +687,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    }
    fread( model->azimShapeIdx_dyn, sizeof( Word16 ), model->elevDim3, f_hrtf );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->azimShapeIdx_dyn, model->elevDim3 * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->azimShapeSampFactor_dyn, model->elevDim3 * sizeof( Word16 ) );
#else
    model->azimShapeSampFactor_dyn = (Word16 *) malloc( model->elevDim3 * sizeof( Word16 ) );
#endif
@@ -699,7 +699,7 @@ static ivas_error TDREND_LoadBSplineBinary(

    /* elevation */
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->elevBsLen_dyn, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->elevBsLen_dyn, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    model->elevBsLen_dyn = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -709,7 +709,7 @@ static ivas_error TDREND_LoadBSplineBinary(
    }
    fread( model->elevBsLen_dyn, sizeof( Word16 ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_binary_open_buffers_int16( &model->elevBsStart_dyn, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) );
    ivas_HRTF_binary_open_buffers_int16( &model->elevBsStart_dyn, HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#else
    model->elevBsStart_dyn = (Word16 *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( Word16 ) );
#endif
@@ -830,12 +830,12 @@ static ivas_error load_reverb_from_binary(
    bool is_reverb;
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    Word16 hrtf_id;
    ivas_hrtfs_header_t hrtf_header;
    int32_t hrtf_data_size_max;
    Word32 hrtf_data_size_max;
    char *hrtf_data;
    int16_t lr_iac_len;
    int16_t ind;
    Word16 lr_iac_len;
    Word16 ind;
    Word16 factorQ;
    Word16 tmp16;

@@ -989,13 +989,13 @@ static ivas_error TDREND_MIX_LoadHRTF(
    IVAS_DEC_HRTF_TD_HANDLE HrFiltSet_p /* o  : Loaded HR filter set      */
)
{
    int16_t tmp;
    Word16 tmp;
    bool is_tdrend;
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    Word16 hrtf_id;
    ivas_hrtfs_header_t hrtf_header;
    int32_t hrtf_data_size_max;
    Word32 hrtf_data_size_max;
    char *hrtf_data;

    if ( f_hrtf == NULL )
@@ -1010,7 +1010,7 @@ static ivas_error TDREND_MIX_LoadHRTF(

        /* try if it is old format for BE tests*/
        fseek( f_hrtf, 0, SEEK_SET );
        if ( fread( &tmp, 1, sizeof( int16_t ), f_hrtf ) == 0 )
        if ( fread( &tmp, 1, sizeof( Word16 ), f_hrtf ) == 0 )
        {
            header_check_result = IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" );
        }
@@ -1082,7 +1082,7 @@ static ivas_error TDREND_MIX_LoadHRTF(

    if ( is_tdrend )
    {
        if ( fread( &tmp, 1, sizeof( int16_t ), f_hrtf ) == 0 )
        if ( fread( &tmp, 1, sizeof( Word16 ), f_hrtf ) == 0 )
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" );
        }
@@ -1115,7 +1115,7 @@ static ivas_error TDREND_MIX_LoadHRTF(

ivas_error load_TDrend_HRTF_binary(
    IVAS_DEC_HRTF_TD_HANDLE hHrtf,   /* i/o: TD rend. HRTF handle                */
    const int32_t sampleRate,        /* i  : sample rate                         */
    const Word32 sampleRate,         /* i  : sample rate                         */
    const hrtfFileReader *hrtfReader /* i  : pointer to hrtfFileReader handle    */
)
{
@@ -1143,7 +1143,7 @@ void destroy_td_hrtf(
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_td_binary_close_fx( hHrtf );
#else
    int16_t i;
    Word16 i;
    if ( ( hHrtf == NULL ) || ( *hHrtf == NULL ) )
    {
        return;
@@ -1299,7 +1299,7 @@ static ivas_error create_Crend_HRTF_from_rawdata(
        /* pIndex_frequency_max_diffuse (the size depends on num_iterations_diffuse) */
        for ( j = 0; j < BINAURAL_CHANNELS; j++ )
        {
            mem_size = ( *hHRTF )->num_iterations_diffuse[j] * sizeof( uint16_t );
            mem_size = ( *hHRTF )->num_iterations_diffuse[j] * sizeof( UWord16 );
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
            if ( ( error = ivas_HRTF_binary_open_buffers_int16( &( *hHRTF )->pIndex_frequency_max_diffuse_dyn_fx[j], mem_size ) ) != IVAS_ERR_OK )
#else
@@ -1316,7 +1316,7 @@ static ivas_error create_Crend_HRTF_from_rawdata(

    /* index_frequency_max_diffuse */
    ( *hHRTF )->index_frequency_max_diffuse = *( (Word16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint16_t );
    hrtf_data_rptr += sizeof( UWord16 );

    /* inv_diffuse_weight Q factor*/
    ( *hHRTF )->factor_Q_inv_diffuse_weight = Q15 - *( (Word16 *) ( hrtf_data_rptr ) );
@@ -1405,8 +1405,8 @@ static ivas_error create_Crend_HRTF_from_rawdata(
    }

    /* max_total_num_fsamp_per_iteration_diff */
    max_total_num_fsamp_per_iteration_diff = *( (uint32_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint32_t );
    max_total_num_fsamp_per_iteration_diff = *( (UWord32 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( UWord32 );

    mem_size_buf = max_total_num_fsamp_per_iteration_diff * sizeof( Word16 );

@@ -1513,17 +1513,17 @@ static ivas_error create_fastconv_HRTF_from_rawdata(
    latency_s = *( (Word32 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( Word32 );

    if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
    if ( BINAURAL_CONVBANDS != *( (UWord16 *) ( hrtf_data_rptr ) ) )
    {
        return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" );
    }
    hrtf_data_rptr += sizeof( uint16_t );
    hrtf_data_rptr += sizeof( UWord16 );

    nbchan = *( (uint16_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint16_t );
    nbchan = *( (UWord16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( UWord16 );

    ntaps = *( (uint16_t *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( uint16_t );
    ntaps = *( (UWord16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( UWord16 );

    ( *hHRTF )->ntaps = ntaps;
    ( *hHRTF )->FASTCONV_latency_s_Q_fx = Q31 - factorQ;
@@ -1689,11 +1689,11 @@ static ivas_error create_parambin_HRTF_from_rawdata(
    char *hrtf_data               /* i  : pointer to binary file                */
)
{
    int16_t i, j, k;
    Word16 i, j, k;
    char *hrtf_data_rptr;
    uint32_t data_size_tmp;
    UWord32 data_size_tmp;
    Word16 factorQ;
    int16_t *ptW16;
    Word16 *ptW16;

    if ( hrtf_data == NULL )
    {
@@ -1703,30 +1703,30 @@ static ivas_error create_parambin_HRTF_from_rawdata(
    hrtf_data_rptr = hrtf_data;

    /* HRTF_SH_CHANNELS */
    if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
    if ( HRTF_SH_CHANNELS != *( (UWord16 *) ( hrtf_data_rptr ) ) )
    {
        return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" );
    }
    hrtf_data_rptr += sizeof( uint16_t );
    hrtf_data_rptr += sizeof( UWord16 );

    /* HRTF_NUM_BINS */
    if ( HRTF_NUM_BINS != *( (uint16_t *) ( hrtf_data_rptr ) ) )
    if ( HRTF_NUM_BINS != *( (UWord16 *) ( hrtf_data_rptr ) ) )
    {
        return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_NUM_BINS)" );
    }
    hrtf_data_rptr += sizeof( uint16_t );
    hrtf_data_rptr += sizeof( UWord16 );

    /* HRTF */
    /* Q factor*/
    factorQ = *( (Word16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( Word16 );

    data_size_tmp = HRTF_NUM_BINS * sizeof( int16_t );
    data_size_tmp = HRTF_NUM_BINS * sizeof( Word16 );
    for ( i = 0; i < BINAURAL_CHANNELS; i++ )
    {
        for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
        {
            ptW16 = (int16_t *) hrtf_data_rptr;
            ptW16 = (Word16 *) hrtf_data_rptr;
            for ( k = 0; k < HRTF_NUM_BINS; k++ )
            {

@@ -1739,7 +1739,7 @@ static ivas_error create_parambin_HRTF_from_rawdata(
    {
        for ( j = 0; j < HRTF_SH_CHANNELS; j++ )
        {
            ptW16 = (int16_t *) hrtf_data_rptr;
            ptW16 = (Word16 *) hrtf_data_rptr;
            for ( k = 0; k < HRTF_NUM_BINS; k++ )
            {
                ( *hHRTF )->hrtfShCoeffsIm_fx[i][j][k] = shl_r( ptW16[k], Q14 - factorQ );
@@ -1749,44 +1749,44 @@ static ivas_error create_parambin_HRTF_from_rawdata(
    }

    /* Reverb Parameters */
    if ( CLDFB_NO_CHANNELS_MAX != *( (uint16_t *) ( hrtf_data_rptr ) ) )
    if ( CLDFB_NO_CHANNELS_MAX != *( (UWord16 *) ( hrtf_data_rptr ) ) )
    {
        return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (CLDFB_NO_CHANNELS_MAX)" );
    }
    hrtf_data_rptr += sizeof( uint16_t );
    hrtf_data_rptr += sizeof( UWord16 );

    /* Q factor*/
    factorQ = *( (Word16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( Word16 );

    ptW16 = (int16_t *) hrtf_data_rptr;
    ptW16 = (Word16 *) hrtf_data_rptr;
    for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
    {
        ( *hHRTF )->parametricReverberationTimes_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q26 - factorQ );
    }
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t );
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( Word16 );

    /* Q factor*/
    factorQ = *( (Word16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( Word16 );

    ptW16 = (int16_t *) hrtf_data_rptr;
    ptW16 = (Word16 *) hrtf_data_rptr;
    for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
    {
        ( *hHRTF )->parametricReverberationEneCorrections_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q31 - factorQ );
    }
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t );
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( Word16 );

    /* Q factor*/
    factorQ = *( (Word16 *) ( hrtf_data_rptr ) );
    hrtf_data_rptr += sizeof( Word16 );

    ptW16 = (int16_t *) hrtf_data_rptr;
    ptW16 = (Word16 *) hrtf_data_rptr;
    for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ )
    {
        ( *hHRTF )->parametricEarlyPartEneCorrection_fx[j] = L_shl_r( L_deposit_l( ptW16[j] ), Q28 - factorQ );
    }
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t );
    hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( Word16 );

    return IVAS_ERR_OK;
}
@@ -1806,13 +1806,13 @@ ivas_error load_fastconv_HRTF_from_binary(
)
{
    FILE *f_hrtf;
    int32_t hrtf_data_size_max;
    Word32 hrtf_data_size_max;
    char *hrtf_data;
    ivas_hrtfs_header_t hrtf_header;
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    int16_t asFastconv = 0;
    Word16 hrtf_id;
    Word16 asFastconv = 0;
    bool load = false;
    BINAURAL_INPUT_AUDIO_CONFIG hrtf_set_binaural_cfg;

@@ -1918,13 +1918,13 @@ ivas_error load_parambin_HRTF_from_binary(
)
{
    FILE *f_hrtf;
    int32_t hrtf_data_size_max;
    Word32 hrtf_data_size_max;
    char *hrtf_data;
    ivas_hrtfs_header_t hrtf_header;
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    int16_t asParam = 0;
    Word16 hrtf_id;
    Word16 asParam = 0;

    if ( hrtfReader == NULL || hrtfReader->file == NULL )
    {
@@ -2016,18 +2016,18 @@ ivas_error load_Crend_HRTF_from_binary(
    const hrtfFileReader *hrtfReader,           /* i  : pointer to hrtfFileReader handle */
    const IVAS_AUDIO_CONFIG OutputConfig,       /* i  : output audio configuration       */
    const IVAS_AUDIO_CONFIG hrtf_set_audio_cfg, /* i  : HRTF set audio config.           */
    const int32_t sampleRate                    /* i  : sample rate                      */
    const Word32 sampleRate                     /* i  : sample rate                      */
)
{
    FILE *f_hrtf;
    int32_t hrtf_data_size_max;
    Word32 hrtf_data_size_max;
    char *hrtf_data;
    ivas_hrtfs_header_t hrtf_header;
    ivas_error header_check_result;
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    Word16 hrtf_id;
    bool load = false;
    int16_t asCrend = 0;
    Word16 asCrend = 0;
    BINAURAL_INPUT_AUDIO_CONFIG hrtf_set_binaural_cfg;

    /* convert audio config. to HRTF binaural config */
@@ -2138,7 +2138,7 @@ void destroy_crend_hrtf(
#ifdef FIX_2249_MEMORY_LEAK_IN_SBA
    ivas_HRTF_CRend_binary_close_fx( hHrtfCrend );
#else
    uint16_t i, j;
    UWord16 i, j;

    test();
    if ( *hHrtfCrend != NULL && hHrtfCrend != NULL )