Commit 6187b6ad authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files
Merge branch 'main' of ssh://forge.3gpp.org:29419/ivas-codec-pc/ivas-codec into 1466-renderer-enable-rendering-of-mono-stereo-to-all-formats-add-tests
parents b6744a13 315f7421
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -163,7 +163,7 @@
#define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR      /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */
#define FIX_1466_EXTREND                                /* FhG: issue 1466: enable rendering of mono/stereo to other formats in the external renderer */
#define NONBE_1122_KEEP_EVS_MODE_UNCHANGED              /* FhG: Disables fix for issue 1122 in EVS mode to keep BE tests green. This switch should be removed once the 1122 fix is added to EVS via a CR.  */

#define FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND /* OR : Fix issue basop 2201 hrtf_file_reader crend differs between basop ivas-main and ivas-float-update */

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

+25 −4
Original line number Diff line number Diff line
@@ -65,9 +65,14 @@ ivas_error ivas_Crend_hrtf_init(
    }

    hHrtf->latency_s = 0;
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    hHrtf->gain_lfe = 0;
#endif
    hHrtf->max_num_ir = 0;
    hHrtf->max_num_iterations = 0;
#ifndef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    hHrtf->gain_lfe = 0;
#endif
    hHrtf->index_frequency_max_diffuse = 0;
    hHrtf->same_inv_diffuse_weight = 1;

@@ -80,6 +85,11 @@ ivas_error ivas_Crend_hrtf_init(
            hHrtf->pIndex_frequency_max[i][j] = NULL;
            hHrtf->pOut_to_bin_re[i][j] = NULL;
            hHrtf->pOut_to_bin_im[i][j] = NULL;
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
            hHrtf->pOut_to_bin_re_dyn[i][j] = NULL;
            hHrtf->pOut_to_bin_im_dyn[i][j] = NULL;
            hHrtf->pIndex_frequency_max_dyn[i][j] = NULL;
#endif
        }
    }

@@ -89,6 +99,11 @@ ivas_error ivas_Crend_hrtf_init(
        hHrtf->pIndex_frequency_max_diffuse[j] = NULL;
        hHrtf->pOut_to_bin_diffuse_re[j] = NULL;
        hHrtf->pOut_to_bin_diffuse_im[j] = NULL;
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
        hHrtf->pIndex_frequency_max_diffuse_dyn[j] = NULL;
        hHrtf->pOut_to_bin_diffuse_re_dyn[j] = NULL;
        hHrtf->pOut_to_bin_diffuse_im_dyn[j] = NULL;
#endif
    }

    hHrtf->init_from_rom = 1;
@@ -818,6 +833,9 @@ static ivas_error ivas_rend_initCrend(
            if ( hHrtf->inv_diffuse_weight[0][i] != hHrtf->inv_diffuse_weight[1][i] )
            {
                hHrtf->same_inv_diffuse_weight = 0;
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                break;
#endif
            }
        }
    }
@@ -1264,8 +1282,11 @@ ivas_error ivas_rend_openCrend(
                hCrend->freq_buffer_re_diffuse[1] = NULL;
                hCrend->freq_buffer_im_diffuse[1] = NULL;
            }

#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
            max_total_ir_len = (int32_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;
#else
            max_total_ir_len = (int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length;
#endif
            if ( max_total_ir_len > 0 )
            {
                if ( ( hCrend->lfe_delay_line = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL )
+52 −6
Original line number Diff line number Diff line
@@ -803,6 +803,9 @@ static ivas_error load_reverb_from_binary(
        {
            if ( hrtf_header.frequency != sampleRate )
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERR_INVALID_HRTF_SAMPLING_RATE;
            }
        }
@@ -815,8 +818,11 @@ static ivas_error load_reverb_from_binary(
        hHrtfStatistics->average_energy_l_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->average_energy_r_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );
        hHrtfStatistics->inter_aural_coherence_dyn = (float *) malloc( lr_iac_len * sizeof( float ) );

#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
        if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL )
#else
        if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL )
#endif
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" );
        }
@@ -895,16 +901,21 @@ static ivas_error TDREND_MIX_LoadHRTF(
    ivas_hrtfs_header_t hrtf_header;
    int32_t hrtf_data_size_max;
    char *hrtf_data;

#ifndef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    header_check_result = IVAS_ERR_OK;

#endif
    if ( f_hrtf == NULL )
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    header_check_result = IVAS_ERR_OK;
#endif

    if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK )
    {

        /* 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 )
        {
@@ -945,11 +956,17 @@ static ivas_error TDREND_MIX_LoadHRTF(
    {
        if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK )
        {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
            free( hrtf_data );
#endif
            return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "HRTF binary file not compliant (number of HRTF)" );
        }

        if ( ( header_check_result = check_hrtf_binary_header( &hrtf_header ) ) != IVAS_ERR_OK )
        {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
            free( hrtf_data );
#endif
            return header_check_result;
        }

@@ -958,6 +975,9 @@ static ivas_error TDREND_MIX_LoadHRTF(
        {
            if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size )
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" );
            }
        }
@@ -965,6 +985,9 @@ static ivas_error TDREND_MIX_LoadHRTF(
        {
            if ( hrtf_header.frequency != sampleRate )
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERR_INVALID_HRTF_SAMPLING_RATE;
            }
        }
@@ -1748,6 +1771,9 @@ ivas_error load_fastconv_HRTF_from_binary(
        {
            if ( hrtf_header.frequency != 48000 ) /* note: Parametric renderer data are always stored at 48 kHz */
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERR_INVALID_HRTF_SAMPLING_RATE;
            }

@@ -1757,6 +1783,7 @@ ivas_error load_fastconv_HRTF_from_binary(
                return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" );
            }

            /* Create the HRTF reading the raw data from the binary file */
            if ( ( create_fastconv_HRTF_from_rawdata( &hHrtfFastConv, hrtf_data, hrtf_header.rend_type, hrtf_header.input_cfg ) ) != IVAS_ERR_OK )
            {
                free( hrtf_data );
@@ -1845,6 +1872,9 @@ ivas_error load_parambin_HRTF_from_binary(
        {
            if ( hrtf_header.frequency != 48000 ) /* note: Parametric renderer data are always stored at 48 kHz */
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERR_INVALID_HRTF_SAMPLING_RATE;
            }

@@ -1902,6 +1932,9 @@ ivas_error load_Crend_HRTF_from_binary(
    ivas_hrtfs_file_header_t hrtfs_file_header;
    int16_t hrtf_id;
    bool load = false;
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    int16_t asCrend = 0;
#endif
    BINAURAL_INPUT_AUDIO_CONFIG hrtf_set_binaural_cfg;

    /* convert audio config. to HRTF binaural config */
@@ -1962,6 +1995,9 @@ ivas_error load_Crend_HRTF_from_binary(
        {
            if ( hrtf_header.frequency != sampleRate )
            {
#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
                free( hrtf_data );
#endif
                return IVAS_ERR_INVALID_HRTF_SAMPLING_RATE;
            }

@@ -1976,7 +2012,9 @@ ivas_error load_Crend_HRTF_from_binary(
                free( hrtf_data );
                return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" );
            }

#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
            asCrend = 1;
#endif
            break; /* read just one set */
        }
        else
@@ -1986,9 +2024,17 @@ ivas_error load_Crend_HRTF_from_binary(
    }

    free( hrtf_data );

#ifdef FIX_BASOP_2201_HARMONIZE_HRTF_FILE_READER_CREND
    if ( asCrend )
    {
        return IVAS_ERR_OK;
    }
    else
    {
        return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" );
    }
#endif
}


/*---------------------------------------------------------------------*
+1 −1
Original line number Diff line number Diff line
@@ -105,7 +105,7 @@ ivas_error load_TDrend_HRTF_binary(
);

/*---------------------------------------------------------------------*
 * load_reverb_from_binary()
 * load_reverb_binary()
 *
 * Load reverb binary data into the HRTF handle
 *---------------------------------------------------------------------*/