Loading apps/decoder.c +7 −2 Original line number Diff line number Diff line Loading @@ -175,6 +175,9 @@ typedef struct ISAR_SPLIT_REND_RENDERER_SELECTION binaural_renderer; ISAR_SPLIT_REND_RENDERER_SELECTION binaural_renderer_old; IVAS_AUDIO_CONFIG intern_audio_config; int16_t room_reverb_flag; } IVAS_DEC_HRTF_WRAPPER; #endif Loading Loading @@ -257,6 +260,8 @@ int main( hHrtf.hHrtfTD = NULL; /* just to avoid compilation warning */ hHrtf.hSetOfHRTF = NULL; /* just to avoid compilation warning */ hHrtf.hHrtfStatistics = NULL; /* just to avoid compilation warning */ hHrtf.room_reverb_flag = 0; hHrtf.intern_audio_config = IVAS_AUDIO_CONFIG_INVALID; #endif splitRendBits.bits_buf = splitRendBitsBuf; Loading Loading @@ -2533,7 +2538,7 @@ static ivas_error decodeG192( #ifdef FIX_HRTF_LOAD /* Read main parameters from the bitstream to set-up the decoder */ hHrtf->binaural_renderer_old = hHrtf->binaural_renderer; if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtf->binaural_renderer ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtf->binaural_renderer, &hHrtf->room_reverb_flag, &hHrtf->intern_audio_config ) ) != IVAS_ERR_OK ) { return error; } Loading Loading @@ -3903,7 +3908,7 @@ static ivas_error IVAS_DEC_LoadHrtfFromFile( return error; } if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hHrtf->hrtfReader ) ) != IVAS_ERR_OK ) if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hHrtf->room_reverb_flag, hHrtf->intern_audio_config, hHrtf->hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { Loading apps/renderer.c +4 −0 Original line number Diff line number Diff line Loading @@ -945,7 +945,11 @@ int main( goto cleanup; } #ifdef FIX_HRTF_LOAD if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, 0, IVAS_AUDIO_CONFIG_INVALID, hrtfFileReader ) ) != IVAS_ERR_OK ) #else if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK ) #endif { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { Loading lib_dec/lib_dec.c +14 −2 Original line number Diff line number Diff line Loading @@ -1057,7 +1057,9 @@ ivas_error IVAS_DEC_FeedFrame_Serial( ivas_error IVAS_DEC_ReadFormat( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer /* o : binaural renderer type */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer, /* o : binaural renderer type */ int16_t *room_reverb_flag, /* o : room reverb flag */ IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ ) { ivas_error error; Loading Loading @@ -1111,6 +1113,14 @@ ivas_error IVAS_DEC_ReadFormat( *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_CREND; break; case RENDERER_BINAURAL_FASTCONV: *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { *room_reverb_flag = 1; } break; case RENDERER_BINAURAL_FASTCONV_ROOM: *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; break; Loading @@ -1122,6 +1132,8 @@ ivas_error IVAS_DEC_ReadFormat( *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_NONE; break; } *intern_audio_config = st_ivas->intern_config; } st_ivas->ism_mode = ism_mode_old; Loading lib_dec/lib_dec.h +3 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,9 @@ ivas_error IVAS_DEC_FeedFrame_Serial( #ifdef FIX_HRTF_LOAD ivas_error IVAS_DEC_ReadFormat( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer /* o : binaural renderer type */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer, /* o : binaural renderer type */ int16_t *room_reverb_flag, /* o : room reverb flag */ IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ ); ivas_error IVAS_DEC_GetSamplesDecoder( Loading lib_util/hrtf_file_reader.c +74 −189 Original line number Diff line number Diff line Loading @@ -967,13 +967,6 @@ ivas_error load_HRTF_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtf == NULL ) { return IVAS_ERR_OK; } #endif fseek( hrtfReader->file, 0, SEEK_SET ); return TDREND_MIX_LoadHRTF( hrtfReader->file, hHrtf ); Loading Loading @@ -1458,16 +1451,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->leftHRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1475,16 +1463,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->leftHRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1492,16 +1475,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->rightHRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1509,16 +1487,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->rightHRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1535,16 +1508,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1552,16 +1520,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1569,16 +1532,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1586,16 +1544,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1612,16 +1565,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1629,16 +1577,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1646,16 +1589,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1663,16 +1601,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1689,16 +1622,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1706,16 +1634,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1723,16 +1646,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1740,16 +1658,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1767,16 +1680,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->leftBRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1784,16 +1692,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->leftBRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1801,16 +1704,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->rightBRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1818,16 +1716,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->rightBRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading Loading @@ -1994,6 +1887,10 @@ static ivas_error create_parambin_HRTF_from_rawdata( ivas_error load_fastconv_HRTF_from_binary( IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv, /* i/o: FastConv HRTF handle */ #ifdef FIX_HRTF_LOAD int16_t room_reverb_flag, /* i : room reverb flag */ const IVAS_AUDIO_CONFIG intern_audio_config, /* i : internal audio configuration */ #endif const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ) { Loading @@ -2011,13 +1908,6 @@ ivas_error load_fastconv_HRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtfFastConv == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading Loading @@ -2049,7 +1939,16 @@ ivas_error load_fastconv_HRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } #ifdef FIX_HRTF_LOAD if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && ( ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA3 ) || ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA2 ) || ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA && intern_audio_config == IVAS_AUDIO_CONFIG_FOA ) ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && room_reverb_flag == 1 ) ) || ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && intern_audio_config == IVAS_AUDIO_CONFIG_INVALID ) ) #else if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { Loading Loading @@ -2107,13 +2006,6 @@ ivas_error load_parambin_HRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtfParamBin == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading Loading @@ -2205,13 +2097,6 @@ ivas_error create_SetOfHRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hSetOfHRTF == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading Loading
apps/decoder.c +7 −2 Original line number Diff line number Diff line Loading @@ -175,6 +175,9 @@ typedef struct ISAR_SPLIT_REND_RENDERER_SELECTION binaural_renderer; ISAR_SPLIT_REND_RENDERER_SELECTION binaural_renderer_old; IVAS_AUDIO_CONFIG intern_audio_config; int16_t room_reverb_flag; } IVAS_DEC_HRTF_WRAPPER; #endif Loading Loading @@ -257,6 +260,8 @@ int main( hHrtf.hHrtfTD = NULL; /* just to avoid compilation warning */ hHrtf.hSetOfHRTF = NULL; /* just to avoid compilation warning */ hHrtf.hHrtfStatistics = NULL; /* just to avoid compilation warning */ hHrtf.room_reverb_flag = 0; hHrtf.intern_audio_config = IVAS_AUDIO_CONFIG_INVALID; #endif splitRendBits.bits_buf = splitRendBitsBuf; Loading Loading @@ -2533,7 +2538,7 @@ static ivas_error decodeG192( #ifdef FIX_HRTF_LOAD /* Read main parameters from the bitstream to set-up the decoder */ hHrtf->binaural_renderer_old = hHrtf->binaural_renderer; if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtf->binaural_renderer ) ) != IVAS_ERR_OK ) if ( ( error = IVAS_DEC_ReadFormat( hIvasDec, &hHrtf->binaural_renderer, &hHrtf->room_reverb_flag, &hHrtf->intern_audio_config ) ) != IVAS_ERR_OK ) { return error; } Loading Loading @@ -3903,7 +3908,7 @@ static ivas_error IVAS_DEC_LoadHrtfFromFile( return error; } if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hHrtf->hrtfReader ) ) != IVAS_ERR_OK ) if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hHrtf->room_reverb_flag, hHrtf->intern_audio_config, hHrtf->hrtfReader ) ) != IVAS_ERR_OK ) { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { Loading
apps/renderer.c +4 −0 Original line number Diff line number Diff line Loading @@ -945,7 +945,11 @@ int main( goto cleanup; } #ifdef FIX_HRTF_LOAD if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, 0, IVAS_AUDIO_CONFIG_INVALID, hrtfFileReader ) ) != IVAS_ERR_OK ) #else if ( ( error = load_fastconv_HRTF_from_binary( *hHrtfFastConv, hrtfFileReader ) ) != IVAS_ERR_OK ) #endif { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { Loading
lib_dec/lib_dec.c +14 −2 Original line number Diff line number Diff line Loading @@ -1057,7 +1057,9 @@ ivas_error IVAS_DEC_FeedFrame_Serial( ivas_error IVAS_DEC_ReadFormat( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer /* o : binaural renderer type */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer, /* o : binaural renderer type */ int16_t *room_reverb_flag, /* o : room reverb flag */ IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ ) { ivas_error error; Loading Loading @@ -1111,6 +1113,14 @@ ivas_error IVAS_DEC_ReadFormat( *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_CREND; break; case RENDERER_BINAURAL_FASTCONV: *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { *room_reverb_flag = 1; } break; case RENDERER_BINAURAL_FASTCONV_ROOM: *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; break; Loading @@ -1122,6 +1132,8 @@ ivas_error IVAS_DEC_ReadFormat( *binaural_renderer = ISAR_SPLIT_REND_RENDERER_SELECTION_NONE; break; } *intern_audio_config = st_ivas->intern_config; } st_ivas->ism_mode = ism_mode_old; Loading
lib_dec/lib_dec.h +3 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,9 @@ ivas_error IVAS_DEC_FeedFrame_Serial( #ifdef FIX_HRTF_LOAD ivas_error IVAS_DEC_ReadFormat( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer /* o : binaural renderer type */ ISAR_SPLIT_REND_RENDERER_SELECTION *binaural_renderer, /* o : binaural renderer type */ int16_t *room_reverb_flag, /* o : room reverb flag */ IVAS_AUDIO_CONFIG *intern_audio_config /* o : internal audio configuration */ ); ivas_error IVAS_DEC_GetSamplesDecoder( Loading
lib_util/hrtf_file_reader.c +74 −189 Original line number Diff line number Diff line Loading @@ -967,13 +967,6 @@ ivas_error load_HRTF_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtf == NULL ) { return IVAS_ERR_OK; } #endif fseek( hrtfReader->file, 0, SEEK_SET ); return TDREND_MIX_LoadHRTF( hrtfReader->file, hHrtf ); Loading Loading @@ -1458,16 +1451,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->leftHRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1475,16 +1463,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->leftHRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1492,16 +1475,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->rightHRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1509,16 +1487,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir; k++ ) { ( *hHRTF )->rightHRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir * sizeof( Word16 ); } } Loading @@ -1535,16 +1508,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1552,16 +1520,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1569,16 +1532,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1586,16 +1544,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA3 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa3; k++ ) { ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa3 * sizeof( Word16 ); } } Loading @@ -1612,16 +1565,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1629,16 +1577,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1646,16 +1589,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1663,16 +1601,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_HOA2 != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_hoa2; k++ ) { ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_hoa2 * sizeof( Word16 ); } } Loading @@ -1689,16 +1622,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1706,16 +1634,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1723,16 +1646,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1740,16 +1658,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftHRIRReal_FOA != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_hrir_foa; k++ ) { ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_hrir_foa * sizeof( Word16 ); } } Loading @@ -1767,16 +1680,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->leftBRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1784,16 +1692,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->leftBRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1801,16 +1704,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->rightBRIRReal[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading @@ -1818,16 +1716,11 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_HRTF_LOAD if ( ( *hHRTF )->leftBRIRReal != NULL ) #endif { ptW16 = (Word16 *) hrtf_data_rptr; for ( k = 0; k < ( *hHRTF )->ntaps_brir; k++ ) { ( *hHRTF )->rightBRIRImag[i][j][k] = ptW16[k] * scaleFactor; } } hrtf_data_rptr += ( *hHRTF )->ntaps_brir * sizeof( Word16 ); } } Loading Loading @@ -1994,6 +1887,10 @@ static ivas_error create_parambin_HRTF_from_rawdata( ivas_error load_fastconv_HRTF_from_binary( IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv, /* i/o: FastConv HRTF handle */ #ifdef FIX_HRTF_LOAD int16_t room_reverb_flag, /* i : room reverb flag */ const IVAS_AUDIO_CONFIG intern_audio_config, /* i : internal audio configuration */ #endif const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ) { Loading @@ -2011,13 +1908,6 @@ ivas_error load_fastconv_HRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtfFastConv == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading Loading @@ -2049,7 +1939,16 @@ ivas_error load_fastconv_HRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } #ifdef FIX_HRTF_LOAD if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && ( ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA3 ) || ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 && intern_audio_config == IVAS_AUDIO_CONFIG_HOA2 ) || ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA && intern_audio_config == IVAS_AUDIO_CONFIG_FOA ) ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && room_reverb_flag == 1 ) ) || ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV || hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && intern_audio_config == IVAS_AUDIO_CONFIG_INVALID ) ) #else if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) #endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { Loading Loading @@ -2107,13 +2006,6 @@ ivas_error load_parambin_HRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hHrtfParamBin == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading Loading @@ -2205,13 +2097,6 @@ ivas_error create_SetOfHRTF_from_binary( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef FIX_HRTF_LOAD if ( hSetOfHRTF == NULL ) { return IVAS_ERR_OK; } #endif f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) Loading