diff --git a/apps/decoder.c b/apps/decoder.c index 2b18205f8745e89761dabe694017fb56f75880fb..55ef28160eae362d94b6558c775eb50ad7f68a49 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -160,7 +160,10 @@ typedef struct char *hrtfFileName; IVAS_DEC_HRTF_HANDLE *hHrtfTD; +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF; +#endif + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics; IVAS_BIN_RENDERER_TYPE binaural_renderer; @@ -244,8 +247,10 @@ int main( reset_mem( USE_BYTES ); #endif - hHrtfBinary.hHrtfTD = NULL; /* just to avoid compilation warning */ - hHrtfBinary.hSetOfHRTF = NULL; /* just to avoid compilation warning */ + hHrtfBinary.hHrtfTD = NULL; /* just to avoid compilation warning */ +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM + hHrtfBinary.hSetOfHRTF = NULL; /* just to avoid compilation warning */ +#endif hHrtfBinary.hHrtfStatistics = NULL; /* just to avoid compilation warning */ splitRendBits.bits_buf = splitRendBitsBuf; @@ -813,7 +818,9 @@ cleanup: if ( arg.hrtfReaderEnabled ) { destroy_td_hrtf( hHrtfBinary.hHrtfTD ); +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM destroy_SetOfHRTF( hHrtfBinary.hSetOfHRTF ); +#endif destroy_hrtf_statistics( hHrtfBinary.hHrtfStatistics ); } @@ -3740,11 +3747,13 @@ static ivas_error IVAS_DEC_LoadHrtfFromFile( destroy_td_hrtf( hHrtfBinary->hHrtfTD ); } +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM if ( !( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && hHrtfBinary->hSetOfHRTF != NULL ) { destroy_SetOfHRTF( hHrtfBinary->hSetOfHRTF ); } +#endif if ( ( error = IVAS_DEC_HRTF_binary_close( hIvasDec, hHrtfBinary->binaural_renderer_old ) ) != IVAS_ERR_OK ) { return error; @@ -3788,13 +3797,22 @@ static ivas_error IVAS_DEC_LoadHrtfFromFile( if ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + IVAS_DEC_HRTF_CREND_HANDLE *hHrtfCrend = NULL; + if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hHrtfCrend ) ) != IVAS_ERR_OK ) +#else if ( ( error = IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hHrtfBinary->hSetOfHRTF ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "\nIVAS_DEC_GetHrtfCRendHandle failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); return error; } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = load_Crend_HRTF_from_binary( *hHrtfCrend, hHrtfBinary->hrtfReader, OutputConfig, hHrtfBinary->hrtf_set_audio_cfg, output_Fs ) ) != IVAS_ERR_OK ) +#else if ( ( error = create_SetOfHRTF_from_binary( *hHrtfBinary->hSetOfHRTF, hHrtfBinary->hrtfReader, output_Fs ) ) != IVAS_ERR_OK ) +#endif { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { @@ -3803,7 +3821,11 @@ static ivas_error IVAS_DEC_LoadHrtfFromFile( } else { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + destroy_crend_hrtf( hHrtfCrend ); +#else destroy_SetOfHRTF( hHrtfBinary->hSetOfHRTF ); +#endif } } } diff --git a/apps/renderer.c b/apps/renderer.c index dc779ada5a7cd3c0e2038813ea09673e9a0d23d1..f90ec711f690416d00853e7ad19c499ca56b2441 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -665,7 +665,11 @@ int main( SplitRendBFIFileReader *splitRendBFIReader = NULL; Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + IVAS_DEC_HRTF_CREND_HANDLE *hHrtfCrend = NULL; +#else IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF = NULL; +#endif IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv = NULL; IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin = NULL; IVAS_DEC_HRTF_HANDLE *hHrtfTD = NULL; @@ -920,13 +924,27 @@ int main( } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hHrtfCrend ) ) != IVAS_ERR_OK ) +#else if ( ( error = IVAS_REND_GetHrtfCRendHandle( hIvasRend, &hSetOfHRTF ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "\nIVAS_Rend_GetHrtfCRendHandle failed: %s\n\n", ivas_error_to_string( error ) ); goto cleanup; } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + IVAS_AUDIO_CONFIG hrtf_set_audio_cfg = IVAS_AUDIO_CONFIG_7_1_4; + if ( args.inConfig.ambisonicsBuses->audioConfig != IVAS_AUDIO_CONFIG_INVALID && args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { + hrtf_set_audio_cfg = args.inConfig.ambisonicsBuses->audioConfig; + } + + if ( ( error = load_Crend_HRTF_from_binary( *hHrtfCrend, hrtfFileReader, args.outConfig.audioConfig, hrtf_set_audio_cfg, args.sampleRate ) ) != IVAS_ERR_OK ) +#else if ( ( error = create_SetOfHRTF_from_binary( *hSetOfHRTF, hrtfFileReader, args.sampleRate ) ) != IVAS_ERR_OK ) +#endif { if ( error != IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA ) { @@ -935,7 +953,11 @@ int main( } else { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + destroy_crend_hrtf( hHrtfCrend ); +#else destroy_SetOfHRTF( hSetOfHRTF ); +#endif } } @@ -1956,7 +1978,9 @@ cleanup: Vector3PairFileReader_close( &referenceVectorReader ); destroy_td_hrtf( hHrtfTD ); +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM destroy_SetOfHRTF( hSetOfHRTF ); +#endif destroy_hrtf_statistics( hHrtfStatistics ); IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); @@ -2499,6 +2523,9 @@ static CmdlnArgs defaultArgs( args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_INVALID; args.outConfig.outSetupCustom.num_spk = 0; args.outConfig.outSetupCustom.num_lfe = 0; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + args.inConfig.ambisonicsBuses->audioConfig = IVAS_AUDIO_CONFIG_INVALID; +#endif for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { diff --git a/ci/complexity_measurements/genWebpageData.py b/ci/complexity_measurements/genWebpageData.py index 457ca5ba934edfe6209e2c31cda2ace25a765917..447c5fd12290b5b201884694902d637a9b1ea271 100644 --- a/ci/complexity_measurements/genWebpageData.py +++ b/ci/complexity_measurements/genWebpageData.py @@ -425,6 +425,12 @@ def create_display_strings( displays.append(display) + if which == "wmops_per_op": + assert len(displays) == 4 + # flot.js' "stack: true" depends on the order of data arrays + # reorder here instead of reworking above loop + displays = [displays[0], displays[2], displays[1], displays[3]] + return displays diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index 7ec90253ce11e528b5367c2f72e8da9298c5d4e2..c252e4f4362b2ace4d68397ba646b334d187e4df 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -53,7 +53,7 @@ repo_arg_script="" if [ $# -eq 4 ]; then if [ "$4" = "basop" ]; then repo_arg_script="--basop" - elif [ "$4" != "float"]; then + elif [ "$4" != "float" ]; then usage fi fi diff --git a/ci/complexity_measurements/index_complexity.html b/ci/complexity_measurements/index_complexity.html index daac766ca0182c46cb22f3f99beef6d1d5c9bd75..48e02c4f9253a095458bb03e20f9b7de94084f7d 100755 --- a/ci/complexity_measurements/index_complexity.html +++ b/ci/complexity_measurements/index_complexity.html @@ -648,40 +648,91 @@ function WMOPS_perOP() { previousPoint = item.datapoint; $("#tooltip").remove(); - var encData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[0]; - var decData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[1]; + var encData, decData; + var encRefData, decRefData; + var text = ""; - var x = item.datapoint[0]; - var y = item.datapoint[1]; + if (Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.length == 2) { + encData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[0]; + decData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[1]; + + var x = item.datapoint[0]; + var y = item.datapoint[1]; + + var scoreEnc = Math.max(parseFloat(encData.data[x][1]), 0); + var scoreDec = Math.max(parseFloat(decData.data[x][1]), 0); + var scoreCodec = Math.round((scoreEnc + scoreDec) * 100) / 100; + + text += "Mode: " + Graphs_WMOPS_perOP.wmops_worstcase_per_op.runs[x].operatingPoint + "
"; + + text += 'Score: ' + Math.round(y * 100) / 100; + if (graph.direction == -1) + text += " WMOPS"; + if( item.series.id == "worstCaseEnc" ){ + text += " (enc)"; + } + if( item.series.id == "worstCaseDec" ){ + text += " (enc + dec)"; + } + text += "

"; + text += "Worst case enc: " + scoreEnc + " WMOPS
"; + text += "Worst case dec: " + scoreDec + " WMOPS
"; + text += "Worst case codec: " + scoreCodec + " WMOPS

"; + + var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1; + text += "Logfile
"; + } + else if (Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays.length == 4) { + encData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[0]; + decData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[2]; - var scoreEnc = parseFloat(encData.data[x][1]); - var scoreDec = parseFloat(decData.data[x][1]); - var scoreCodec = Math.round((scoreEnc + scoreDec) * 100) / 100; + encRefData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[1]; + decRefData = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays[3]; - var text = ""; + var x = item.datapoint[0]; + var y = item.datapoint[1]; - text += "Mode: " + Graphs_WMOPS_perOP.wmops_worstcase_per_op.runs[x].operatingPoint + "
"; - - text += 'Score: ' + Math.round(y * 100) / 100; - if (graph.direction == -1) - text += " WMOPS"; - if( item.series.id == "worstCaseEnc" ){ - text += " (enc)"; - } - if( item.series.id == "worstCaseDec" ){ - text += " (enc + dec)"; - } - text += "

"; - - text += "Worst case enc: " + scoreEnc + " WMOPS
"; - text += "Worst case dec: " + scoreDec + " WMOPS
"; - text += "Worst case codec: " + scoreCodec + " WMOPS

"; + var run = Graphs_WMOPS_perOP.wmops_worstcase_per_op.runs[x]; + var codec = run.codec; + var op = run.operatingPoint; - var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1; - text += "Logfile
"; - + var scoreEnc, scoreDec; + + if (codec == "FLT REF") + { + x = (x - 1) / 2; + scoreEnc = Math.max(parseFloat(encRefData.data[x][1]), 0); + scoreDec = Math.max(parseFloat(decRefData.data[x][1]), 0); + } + else if (codec == "BASOP") { + x = x / 2; + scoreEnc = Math.max(parseFloat(encData.data[x][1]), 0); + scoreDec = Math.max(parseFloat(decData.data[x][1]), 0); + } + + var scoreCodec = Math.round((scoreEnc + scoreDec) * 100) / 100; + + text += "Mode: " + op + " - " + codec + "
"; + + text += 'Score: ' + Math.round(y * 100) / 100; + if (graph.direction == -1) + text += " WMOPS"; + if( item.series.id == "worstCaseEnc" ){ + text += " (enc)"; + } + if( item.series.id == "worstCaseDec" ){ + text += " (enc + dec)"; + } + text += "

"; + text += "Worst case enc: " + scoreEnc + " WMOPS
"; + text += "Worst case dec: " + scoreDec + " WMOPS
"; + text += "Worst case codec: " + scoreCodec + " WMOPS

"; + + var nEntriesWmopsGraph = Graphs_WMOPS.wmops_worstcase.runs.length - 1; + text += "Logfile
"; + } showToolTip(item.pageX, item.pageY, text); - + }); } @@ -689,7 +740,19 @@ function WMOPS_perOP() { $(document).ready(function () { // need to get worst case of enc + dec combined, because values are stacked in the graph - var max = get_max_y_val_for_plotting(Graphs_WMOPS.wmops_worstcase.displays, 50); + var displays = Graphs_WMOPS_perOP.wmops_worstcase_per_op.displays; + var encData, decData; + if (displays.length == 2) { + encData = [displays[0]]; + decData = [displays[1]]; + } + else if (displays.length == 4) { + encData = [displays[0], displays[2]]; + decData = [displays[1], displays[3]]; + } + var max_enc = get_max_y_val_for_plotting(encData, 1); + var max_dec = get_max_y_val_for_plotting(decData, 1); + var max = Math.ceil( (max_enc + max_dec ) / 50) * 50; drawGraph($("#wmops_per_op-graph"), Graphs_WMOPS_perOP.wmops_worstcase_per_op, max); }); diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 00df25e87d564b767b3428b94c2cb519778ca125..16614a929aac45f348d23167a627eadb570bf3d7 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -175,7 +175,11 @@ typedef struct ivas_masa_metadata_frame_struct *IVAS_MASA_METADATA_HANDLE; typedef struct ivas_masa_decoder_ext_out_meta_struct *IVAS_MASA_DECODER_EXT_OUT_META_HANDLE; typedef struct TDREND_HRFILT_FiltSet_struct *IVAS_DEC_HRTF_HANDLE; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +typedef struct ivas_hrtf_crend_structure *IVAS_DEC_HRTF_CREND_HANDLE; +#else typedef struct ivas_hrtfs_crend_structure *IVAS_DEC_HRTF_CREND_HANDLE; +#endif typedef struct ivas_hrtfs_fastconv_struct *IVAS_DEC_HRTF_FASTCONV_HANDLE; typedef struct ivas_hrtfs_parambin_struct *IVAS_DEC_HRTF_PARAMBIN_HANDLE; typedef struct ivas_hrtfs_statistics_struct *IVAS_DEC_HRTF_STATISTICS_HANDLE; diff --git a/lib_com/options.h b/lib_com/options.h index ca759dc86cd3711076ff089a28b889a027387b90..484de232aa48b1865b46fd4fea0e4eb7f0a5a0fb 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -161,6 +161,8 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define TMP_FIX_1119_SPLIT_RENDERING_VOIP /* FhG: Add error check for unsupported config: split rendering with VoIP mode */ #define FIX_1226_FASTCONV_HRTF_LOADING_OPTIM /* VA: issue 1226: for FastConv binaural renderer in decoder, load only HTRT coefficient set that is needed */ +#define FIX_1227_Crend_HRTF_LOADING_OPTIM /* VA: issue 1227: for Crend binaural renderer in decoder, load only HTRT coefficient set that is needed */ +#define FIX_1222_OMASA_DEC_CHANNEL_BUFFERS /* VA: issue 1222: Reduction of the number of channel buffers in OMASA decoder */ /* #################### End BE switches ################################## */ @@ -174,6 +176,7 @@ #define NONBE_FIX_1196_TD_HEADTRACKING_INTERPOLATION /* Ericsson: Issue 1196, Always apply filter interpolation for each subframe */ #define NONBE_1220_OMASA_JBM_BRATE_SW_FLUSH /* VA: issue 1220: fix bug in renderer flush in OMASA 1ISM JBM bitrate switching */ #define NONBE_1229_FIX_ISM1_DPID /* Eri: issue 1229: fix bug causing ISM 1 to use default -dpid instead of the specified one */ +#define NONBE_1233_HQ_CLASSIFIER_DIV_BY_ZERO /* Eri: issue 1233: Address possible division by zero in hf_spectrum_sparseness() */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 2c7e004342f348c15a5bb09eb046b444255158aa..fff019e028ece9d4b1f923a759a0bdcc8ffd1835 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -2175,8 +2175,13 @@ ivas_error ivas_init_decoder( } } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, + st_ivas->hRenderConfig, st_ivas->hHrtfCrend, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, 0, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -2656,7 +2661,11 @@ void ivas_initialize_handles_dec( st_ivas->hMonoDmxRenderer = NULL; st_ivas->hCrendWrapper = NULL; st_ivas->hReverb = NULL; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + st_ivas->hHrtfCrend = NULL; +#else st_ivas->hSetOfHRTF = NULL; +#endif st_ivas->hHrtfFastConv = NULL; st_ivas->hHrtfParambin = NULL; st_ivas->hHrtfStatistics = NULL; @@ -2874,7 +2883,11 @@ void ivas_destroy_dec( } /* CRend binaural renderer handle */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + ivas_HRTF_CRend_binary_close( &st_ivas->hHrtfCrend ); +#else ivas_HRTF_CRend_binary_close( &st_ivas->hSetOfHRTF ); +#endif /* Fastconv HRTF memories */ ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv ); diff --git a/lib_dec/ivas_ism_dec.c b/lib_dec/ivas_ism_dec.c index cdc130b191655ab1de30b583eb08556a4b268488..cf215d34c7376fb26903e2344dfc7d0ffbd6a8af 100644 --- a/lib_dec/ivas_ism_dec.c +++ b/lib_dec/ivas_ism_dec.c @@ -199,7 +199,11 @@ static ivas_error ivas_ism_bitrate_switching_dec( ivas_omasa_data_close( &st_ivas->hMasaIsmData ); /* Open Crend Binaural renderer */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hHrtfCrend, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, 0, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 2b9d07190104c9b06d57ef72243a5722ea53d4ed..e0b12fd9627a9ef72629e19b9de36c24a6d158c5 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -1483,7 +1483,11 @@ ivas_error ivas_masa_dec_reconfigure( { if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) { +#ifdef FIX_1222_OMASA_DEC_CHANNEL_BUFFERS + tc_nchan_to_allocate = BINAURAL_CHANNELS + st_ivas->nchan_ism; +#else tc_nchan_to_allocate = 2 * BINAURAL_CHANNELS + 2; +#endif } else { diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c index bb41bcd203f388f3849e32c9468fa3f477a3d5e3..b7c539301398e9a4e1e21131ffdf4ad7d7740f00 100644 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -1241,7 +1241,11 @@ static ivas_error ivas_mc_dec_reconfig( } else if ( st_ivas->hCrendWrapper == NULL && ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hHrtfCrend, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, 0, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &( st_ivas->hCrendWrapper ), st_ivas->intern_config, st_ivas->hDecoderConfig->output_config, st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h index c4a146cb4568bc904dd15f4c5afee919b9efcae5..4dce5c64ce35288219a5a063eb16572bb1ae5607 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -1100,7 +1100,11 @@ typedef struct Decoder_Struct MONO_DOWNMIX_RENDERER_HANDLE hMonoDmxRenderer; /* Mono downmix structure */ CREND_WRAPPER_HANDLE hCrendWrapper; /* Crend handle */ REVERB_HANDLE hReverb; /* Reverb handle */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_HANDLE hHrtfCrend; /* HRTF tables for CRend binaural renderer */ +#else HRTFS_CREND_HANDLE hSetOfHRTF; /* Set of HRTFs handle (CRend) */ +#endif HRTFS_FASTCONV_HANDLE hHrtfFastConv; /* FASTCONV HRTF tables for binaural rendering */ HRTFS_PARAMBIN_HANDLE hHrtfParambin; /* HRTF tables for parametric binauralizer */ HRTFS_STATISTICS_HANDLE hHrtfStatistics; /* HRTF statistics handle */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index baa70ce54afcf5d7047ff543c09f9c1f1e17178e..a71d801ae7ec24fa2b7c4fbfe293b6ee833a0088 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -1039,6 +1039,27 @@ ivas_error IVAS_DEC_ReadFormat( } } } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + else if ( *binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND ) + { + if ( st_ivas->ivas_format == ISM_FORMAT ) + { + /* BRIRs */ + *hrtf_set_audio_cfg = IVAS_AUDIO_CONFIG_7_1_4; + } + else if ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCT ) + { + /* BRIRs */ + *hrtf_set_audio_cfg = IVAS_AUDIO_CONFIG_7_1_4; + + if ( st_ivas->hDecoderConfig->Opt_Headrotation && ( output_config == IVAS_AUDIO_CONFIG_BINAURAL || output_config == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + /* SHD HRIRs for low complexity rotation */ + *hrtf_set_audio_cfg = IVAS_AUDIO_CONFIG_HOA3; + } + } + } +#endif #else *intern_audio_config = st_ivas->intern_config; #endif @@ -2686,16 +2707,29 @@ ivas_error IVAS_DEC_GetHrtfHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfCRendHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + IVAS_DEC_HRTF_CREND_HANDLE **hHrtfCrend /* o : Crend HRTF handle */ +#else IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +#endif ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfCrend == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfCrend = &hIvasDec->st_ivas->hHrtfCrend; +#else if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hSetOfHRTF == NULL ) { return IVAS_ERR_WRONG_PARAMS; } *hSetOfHRTF = &hIvasDec->st_ivas->hSetOfHRTF; +#endif return IVAS_ERR_OK; } @@ -2799,9 +2833,17 @@ ivas_error IVAS_DEC_HRTF_binary_open( } /* Crend binaural renderer */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hHrtfCrend == NULL ) +#else if ( ( binaural_renderer == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer == IVAS_BIN_RENDERER_TYPE_DEFAULT ) && st_ivas->hSetOfHRTF == NULL ) +#endif { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open( &( st_ivas->hHrtfCrend ) ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_HRTF_CRend_binary_open( &( st_ivas->hSetOfHRTF ) ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -2870,7 +2912,11 @@ ivas_error IVAS_DEC_HRTF_binary_close( if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_CREND || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) { /* CRend binaural renderer handle */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + ivas_HRTF_CRend_binary_close( &st_ivas->hHrtfCrend ); +#else ivas_HRTF_CRend_binary_close( &st_ivas->hSetOfHRTF ); +#endif } if ( !( binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_FASTCONV || binaural_renderer_old == IVAS_BIN_RENDERER_TYPE_DEFAULT ) ) diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index 48794851a8ffc585af9f9b11a7d9120677a81925..3aca0e9b1c2d86a068b9c4fe1b1b7a28f2a39466 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -444,7 +444,11 @@ ivas_error IVAS_DEC_GetHrtfHandle( /*! r: error code */ ivas_error IVAS_DEC_GetHrtfCRendHandle( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + IVAS_DEC_HRTF_CREND_HANDLE **hHrtfCrend /* o : Crend HRTF handle */ +#else IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +#endif ); ivas_error IVAS_DEC_GetHrtfFastConvHandle( diff --git a/lib_enc/hq_classifier_enc.c b/lib_enc/hq_classifier_enc.c index a41942d658493d35e9d6995f43a78d0241573bf1..b0ef15969b11166728597de7441b65613882d699 100644 --- a/lib_enc/hq_classifier_enc.c +++ b/lib_enc/hq_classifier_enc.c @@ -573,6 +573,60 @@ static int16_t hf_spectrum_sparseness( inv_rms = 0.0f; crest_mod = 0.0f; maximum( A, L_SPEC_HB, &Amax ); +#ifdef NONBE_1233_HQ_CLASSIFIER_DIV_BY_ZERO + if ( Amax == 0 ) + { + /* For all-zero input the crest is 1.0 */ + crest = 1.0f; + crest_mod = 1.0f; + low_count = 0; + } + else + { + thr = Amax * PEAK_THRESHOLD; + movmean = 0.0f; /* avoid uninitialized warning */ + p_num = &inv_tbl[HALF_WIN_LENGTH + 1]; /* Table for division 1./(11:21) */ + for ( i = 0; i < L_SPEC_HB; i++ ) + { + inv_rms += A[i] * A[i]; + if ( A[i] < thr ) + { + low_count += 1; + } + if ( i <= HALF_WIN_LENGTH ) + { + if ( i == 0 ) + { + movmean = sum_f( &A[0], i + HALF_WIN_LENGTH + 1 ) * ( *p_num ); + } + else + { + p_num++; + movmean = movmean + ( A[i + HALF_WIN_LENGTH] - movmean ) * ( *p_num ); + } + } + else + { + if ( L_SPEC_HB <= i + HALF_WIN_LENGTH ) + { + p_num--; + movmean = movmean + ( movmean - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num ); + } + else + { + movmean = movmean + ( A[i + HALF_WIN_LENGTH] - A[i - HALF_WIN_LENGTH - 1] ) * ( *p_num ); + } + } + if ( crest_mod < movmean ) + { + crest_mod = movmean; + } + } + inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB ); + crest = Amax * inv_rms; + crest_mod = crest_mod * inv_rms; + } +#else thr = Amax * PEAK_THRESHOLD; movmean = 0.0f; /* avoid uninitialized warning */ p_num = &inv_tbl[HALF_WIN_LENGTH + 1]; /* Table for division 1./(11:21) */ @@ -615,6 +669,7 @@ static int16_t hf_spectrum_sparseness( inv_rms = 1.0f / (float) sqrtf( inv_rms / L_SPEC_HB ); crest = Amax * inv_rms; crest_mod = crest_mod * inv_rms; +#endif *crest_lp = HQ_CREST_FAC_SM * ( *crest_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest; *crest_mod_lp = HQ_CREST_FAC_SM * ( *crest_mod_lp ) + ( 1.0f - HQ_CREST_FAC_SM ) * crest_mod; diff --git a/lib_rend/ivas_crend.c b/lib_rend/ivas_crend.c index 87215cd2bf9346ed4acd17c8a767c7ae2c668d5e..555351a985fb79475d7be91e4a82245bcd15cbe0 100644 --- a/lib_rend/ivas_crend.c +++ b/lib_rend/ivas_crend.c @@ -48,14 +48,20 @@ /*------------------------------------------------------------------------- - * ivas_hrtf_init() + * ivas_Crend_hrtf_init() * * Initialize hHrtf handle *------------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error ivas_Crend_hrtf_init( + HRTFS_CREND_DATA *hHrtf /* i/o: HRTF handle */ +) +#else ivas_error ivas_hrtf_init( HRTFS_DATA *hHrtf /* i/o: HRTF handle */ ) +#endif { int16_t i, j; @@ -100,7 +106,7 @@ ivas_error ivas_hrtf_init( /*------------------------------------------------------------------------- * ivas_hrtf_open() * - * Open hHrtf handle + * Open hHrtf handle for Crend renderer *------------------------------------------------------------------------*/ static ivas_error ivas_hrtf_open( @@ -117,7 +123,11 @@ static ivas_error ivas_hrtf_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend HRTFS Handle\n" ); } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_Crend_hrtf_init( hHrtf ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_hrtf_init( hHrtf ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -154,6 +164,7 @@ static void ivas_hrtf_close( return; } + /*------------------------------------------------------------------------- * ivas_rend_initCrend() * @@ -164,10 +175,19 @@ static ivas_error ivas_rend_initCrend( CREND_WRAPPER *pCrend, const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_HANDLE hHrtfCrend, + const int16_t ext_rend_flag, +#else HRTFS_CREND_HANDLE hSetOfHRTF, +#endif const int32_t output_Fs ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + int16_t i, j, tmp, tmp2; +#else int16_t i, j, tmp; +#endif int16_t nchan_in; IVAS_REND_AudioConfigType inConfigType; HRTFS_HANDLE hHrtf; @@ -189,10 +209,34 @@ static ivas_error ivas_rend_initCrend( if ( hHrtf == NULL ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( hHrtfCrend != NULL && ext_rend_flag == 0 ) + { + /* HRTF set loaded from binary file */ + hHrtf = hHrtfCrend; + hHrtf->init_from_rom = 0; + } + else + { + /* create new handle when HRTF is loaded from ROM, or external renderer is used */ + if ( ( error = ivas_hrtf_open( &hHrtf ) ) != IVAS_ERR_OK ) + { + return error; + } + + hHrtf->init_from_rom = 1; + if ( hHrtfCrend != NULL ) + { + hHrtf->init_from_rom = 0; + } + } +#else if ( ivas_hrtf_open( &hHrtf ) != IVAS_ERR_OK ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for HRTF handle" ); } + +#endif } if ( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ) != IVAS_ERR_OK ) @@ -206,6 +250,9 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERR_INTERNAL_FATAL; } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( hHrtf->init_from_rom ) +#else if ( ( hSetOfHRTF == NULL ) || ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) || ( ( hSetOfHRTF->hHRTF_hrir_combined == NULL ) && ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) && ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL ) ) || @@ -213,8 +260,11 @@ static ivas_error ivas_rend_initCrend( ( ( hSetOfHRTF->hHRTF_hrir_foa == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_FOA ) ) || ( ( hSetOfHRTF->hHRTF_hrir_hoa2 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA2 ) ) || ( ( hSetOfHRTF->hHRTF_hrir_hoa3 == NULL ) && ( inConfig == IVAS_AUDIO_CONFIG_HOA3 ) ) ) +#endif { +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM hHrtf->init_from_rom = 1; +#endif if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { hHrtf->max_num_ir -= 1; /* subtract LFE */ @@ -690,6 +740,115 @@ static ivas_error ivas_rend_initCrend( } else { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) + { + hHrtf->max_num_ir -= 1; /* subtract LFE */ + hHrtf->gain_lfe = GAIN_LFE; + } + + if ( ext_rend_flag == 1 ) + { + if ( hHrtfCrend == NULL ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Invalid function parameters " ); + } + hHrtf->latency_s = hHrtfCrend->latency_s; + hHrtf->max_num_iterations = hHrtfCrend->max_num_iterations; + hHrtf->index_frequency_max_diffuse = hHrtfCrend->index_frequency_max_diffuse; + + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + hHrtf->num_iterations_diffuse[j] = hHrtfCrend->num_iterations_diffuse[j]; + hHrtf->pIndex_frequency_max_diffuse[j] = hHrtfCrend->pIndex_frequency_max_diffuse[j]; + hHrtf->pOut_to_bin_diffuse_re[j] = hHrtfCrend->pOut_to_bin_diffuse_re[j]; + hHrtf->pOut_to_bin_diffuse_im[j] = hHrtfCrend->pOut_to_bin_diffuse_im[j]; + } + } + + if ( inConfig == IVAS_AUDIO_CONFIG_7_1 && ext_rend_flag == 0 ) + { + /* hack to enable pointers swapping - needed when indexes of 'channelIndex_CICPx[]' are not in increasing order */ + for ( i = 5; i < hHrtf->max_num_ir; i++ ) + { + tmp = channelIndex_CICP12[i]; + tmp2 = channelIndex_CICP14[i]; + + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + hHrtf->inv_diffuse_weight[j][tmp2] = hHrtfCrend->inv_diffuse_weight[j][tmp]; + hHrtf->num_iterations[tmp2][j] = hHrtfCrend->num_iterations[tmp][j]; + hHrtf->pIndex_frequency_max[tmp2][j] = hHrtfCrend->pIndex_frequency_max[tmp][j]; + hHrtf->pOut_to_bin_re[tmp2][j] = hHrtfCrend->pOut_to_bin_re[tmp][j]; + hHrtf->pOut_to_bin_im[tmp2][j] = hHrtfCrend->pOut_to_bin_im[tmp][j]; + } + } + } + + for ( i = 0; i < hHrtf->max_num_ir; i++ ) + { + if ( inConfig == IVAS_AUDIO_CONFIG_5_1 ) + { + tmp = channelIndex_CICP6[i]; + } + else if ( inConfig == IVAS_AUDIO_CONFIG_7_1 ) + { + if ( ext_rend_flag == 0 ) + { + tmp = channelIndex_CICP14[i]; + } + else + { + tmp = channelIndex_CICP12[i]; + } + } + else if ( inConfig == IVAS_AUDIO_CONFIG_5_1_2 ) + { + tmp = channelIndex_CICP14[i]; + } + else if ( inConfig == IVAS_AUDIO_CONFIG_5_1_4 ) + { + tmp = channelIndex_CICP16[i]; + } + else if ( inConfig == IVAS_AUDIO_CONFIG_7_1_4 ) + { + tmp = channelIndex_CICP19[i]; + } + else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) + { + tmp = i; + } + else + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" ); + } + + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + hHrtf->inv_diffuse_weight[j][i] = hHrtfCrend->inv_diffuse_weight[j][tmp]; + hHrtf->num_iterations[i][j] = hHrtfCrend->num_iterations[tmp][j]; + + if ( ext_rend_flag == 0 ) + { + /* in case of HRTF handle reuse, swap the pointers for correct deallocation at the exit */ +#define WMC_TOOL_SKIP + swap( hHrtf->pIndex_frequency_max[i][j], hHrtf->pIndex_frequency_max[tmp][j], const uint16_t * ); + MOVE( 3 ); + swap( hHrtf->pOut_to_bin_re[i][j], hHrtf->pOut_to_bin_re[tmp][j], const float * ); + MOVE( 3 ); + swap( hHrtf->pOut_to_bin_im[i][j], hHrtf->pOut_to_bin_im[tmp][j], const float * ); + MOVE( 3 ); +#undef WMC_TOOL_SKIP + } + else + { + hHrtf->pIndex_frequency_max[i][j] = hHrtfCrend->pIndex_frequency_max[tmp][j]; + hHrtf->pOut_to_bin_re[i][j] = hHrtfCrend->pOut_to_bin_re[tmp][j]; + hHrtf->pOut_to_bin_im[i][j] = hHrtfCrend->pOut_to_bin_im[tmp][j]; + } + } + } +#else hHrtf->init_from_rom = 0; if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { @@ -877,6 +1036,7 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported renderer type in Crend" ); } } +#endif } hHrtf->same_inv_diffuse_weight = 1; @@ -1199,7 +1359,11 @@ ivas_error ivas_rend_openMultiBinCrend( const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, const int32_t output_Fs ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + return ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, 0, pMultiBinPoseData->num_poses ); +#else return ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, pMultiBinPoseData->num_poses ); +#endif } @@ -1214,9 +1378,16 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_HANDLE hHrtfCrend, +#else HRTFS_CREND_HANDLE hSetOfHRTF, +#endif HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + const int16_t ext_rend_flag, +#endif const int16_t num_poses ) { int16_t i, subframe_length; @@ -1237,7 +1408,11 @@ ivas_error ivas_rend_openCrend( if ( ( *pCrend )->hHrtfCrend == NULL ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_initCrend( *pCrend, inConfig, outConfig, hHrtfCrend, ext_rend_flag, output_Fs ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_initCrend( *pCrend, inConfig, outConfig, hSetOfHRTF, output_Fs ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -1420,7 +1595,11 @@ void ivas_rend_closeCrend( return; } - if ( ( *pCrend )->hHrtfCrend != NULL ) +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( *pCrend )->hHrtfCrend != NULL && ( *pCrend )->hHrtfCrend->init_from_rom ) +#else + if ( ( *pCrend )->hHrtfCrend != NULL && ( *pCrend )->hHrtfCrend->init_from_rom ) +#endif { ivas_hrtf_close( &( *pCrend )->hHrtfCrend ); } @@ -1862,9 +2041,9 @@ ivas_error ivas_rend_crendProcessSubframe( if ( hDecoderConfig && combinedOrientationEnabled ) { /* Rotation in SHD for: - MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL - SBA SPAR -> BINAURAL or BINAURAL_ROOM - */ + MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL + SBA SPAR -> BINAURAL or BINAURAL_ROOM + */ if ( inConfig == IVAS_AUDIO_CONFIG_FOA || inConfig == IVAS_AUDIO_CONFIG_HOA2 || inConfig == IVAS_AUDIO_CONFIG_HOA3 ) { rotateFrame_shd( hCombinedOrientationData, tc_local, subframe_len, *hIntSetup, 0 ); diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index 7acf77dfd930f9ca90c4d5cae518a19756cf9407..dc617485458ca9ba557a92de19fb10cc13f4efe0 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -321,7 +321,11 @@ ivas_error ivas_dirac_dec_init_binaural_data( nchan_to_allocate = 2 * BINAURAL_CHANNELS; if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) { +#ifdef FIX_1222_OMASA_DEC_CHANNEL_BUFFERS + nchan_to_allocate = BINAURAL_CHANNELS + st_ivas->nchan_ism; +#else nchan_to_allocate = 2 * BINAURAL_CHANNELS + 2; +#endif } n_samples_granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); diff --git a/lib_rend/ivas_hrtf.c b/lib_rend/ivas_hrtf.c index 2eba94957b961ce48958d003031ad90a5553f454..815ff89ea4702ffa24a4c8d6170baf51373a86ee 100644 --- a/lib_rend/ivas_hrtf.c +++ b/lib_rend/ivas_hrtf.c @@ -42,7 +42,7 @@ /*-----------------------------------------------------------------------* * ivas_HRTF_binary_open() * - * Allocate HRTF binary handle + * Allocate HRTF binary handle for TD renderer *-----------------------------------------------------------------------*/ ivas_error ivas_HRTF_binary_open( @@ -64,7 +64,7 @@ ivas_error ivas_HRTF_binary_open( /*-------------------------------------------------------------------* * ivas_HRTF_binary_close() * - * Close HRTF binary handle + * Close HRTF binary handle for TD renderer *-------------------------------------------------------------------*/ void ivas_HRTF_binary_close( @@ -85,9 +85,28 @@ void ivas_HRTF_binary_close( /*-----------------------------------------------------------------------* * ivas_HRTF_CRend_binary_open() * - * Allocate HRTF binary handle + * Allocate HRTF binary handle for Crend renderer *-----------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error ivas_HRTF_CRend_binary_open( + HRTFS_CREND_DATA **hHrtfCrend ) +{ + ivas_error error; + + if ( ( *hHrtfCrend = (HRTFS_CREND_HANDLE) malloc( sizeof( HRTFS_CREND_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend HRTFS Handle\n" ); + } + + if ( ( error = ivas_Crend_hrtf_init( *hHrtfCrend ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} +#else ivas_error ivas_HRTF_CRend_binary_open( HRTFS_CREND **hSetOfHRTF ) { @@ -106,14 +125,112 @@ ivas_error ivas_HRTF_CRend_binary_open( return IVAS_ERR_OK; } +#endif + +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + +/*-----------------------------------------------------------------------* + * ivas_HRTF_CRend_binary_open_buffers_uint16() + * + * Allocate buffer with dynamic length for HRTF binary Crend handle + *-----------------------------------------------------------------------*/ + +ivas_error ivas_HRTF_CRend_binary_open_buffers_uint16( + uint16_t **buffer, /* o : buffer to allocate */ + const uint32_t mem_size /* i : size of buffer */ +) +{ + *buffer = (uint16_t *) malloc( mem_size ); + + if ( *buffer == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary data\n" ); + } + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * ivas_HRTF_CRend_binary_open_buffers_float() + * + * Allocate buffer with dynamic length for HRTF binary Crend handle + *-----------------------------------------------------------------------*/ + +ivas_error ivas_HRTF_CRend_binary_open_buffers_float( + float **buffer, /* o : buffer to allocate */ + const uint32_t mem_size /* i : size of buffer */ +) +{ + *buffer = (float *) malloc( mem_size ); + + if ( *buffer == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary data\n" ); + } + + return IVAS_ERR_OK; +} +#endif /*-------------------------------------------------------------------* * ivas_HRTF_CRend_binary_close() * - * Close HRTF CRend binary handle + * Close HRTF CRend binary handle for Crend renderer *-------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +void ivas_HRTF_CRend_binary_close( + HRTFS_CREND_DATA **hHrtfCrend ) +{ + uint16_t i, j; + + if ( *hHrtfCrend == NULL || hHrtfCrend == NULL ) + { + return; + } + + for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + { + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + if ( ( *hHrtfCrend )->pIndex_frequency_max[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pIndex_frequency_max_dyn[i][j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_re[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_re_dyn[i][j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_im[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_im_dyn[i][j] ); + } + } + } + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + if ( ( *hHrtfCrend )->pIndex_frequency_max_diffuse[j] != NULL ) + { + free( ( *hHrtfCrend )->pIndex_frequency_max_diffuse_dyn[j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_diffuse_re[j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_diffuse_re_dyn[j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_diffuse_im[j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_diffuse_im_dyn[j] ); + } + } + + free( *hHrtfCrend ); + *hHrtfCrend = NULL; + + return; +} +#else void ivas_HRTF_CRend_binary_close( HRTFS_CREND **hSetOfHRTF ) { @@ -127,6 +244,7 @@ void ivas_HRTF_CRend_binary_close( return; } +#endif /*-----------------------------------------------------------------------* diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c index 594f09ea472f3bc23f4c8db727cde9d294e8e22d..46025d48293fd8a3303a54677715ce9fc556189f 100644 --- a/lib_rend/ivas_output_init.c +++ b/lib_rend/ivas_output_init.c @@ -344,7 +344,11 @@ int16_t ivas_get_nchan_buffers_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { +#ifdef FIX_1222_OMASA_DEC_CHANNEL_BUFFERS + nchan_out_buff = max( nchan_out_buff, BINAURAL_CHANNELS + st_ivas->nchan_ism ); +#else nchan_out_buff = max( nchan_out_buff, 2 * BINAURAL_CHANNELS + 2 ); +#endif } else if ( output_config != IVAS_AUDIO_CONFIG_EXTERNAL ) { diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index d7ec73d71ee57593e673aed766efc08c019f5396..d4a75254a3ddc384f840cf01933ba5e99b4626eb 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -576,11 +576,31 @@ void ivas_HRTF_parambin_binary_close( ); ivas_error ivas_HRTF_CRend_binary_open( +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_DATA **hHrtfCrend /* i/o: Crend HRTF handle */ +#else HRTFS_CREND **hSetOfHRTF /* i/o: Set of HRTF handle */ +#endif +); + +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error ivas_HRTF_CRend_binary_open_buffers_uint16( + uint16_t **buffer, /* o : buffer to allocate */ + const uint32_t mem_size /* i : size of buffer */ ); +ivas_error ivas_HRTF_CRend_binary_open_buffers_float( + float **buffer, /* o : buffer to allocate */ + const uint32_t mem_size /* i : size of buffer */ +); + +#endif void ivas_HRTF_CRend_binary_close( +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_DATA **hHrtfCrend /* i/o: Crend HRTF handle */ +#else HRTFS_CREND **hSetOfHRTF /* i/o: Set of HRTF handle */ +#endif ); ivas_error ivas_HRTF_statistics_init( @@ -892,9 +912,16 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + HRTFS_CREND_HANDLE hHrtfCrend, +#else HRTFS_CREND_HANDLE hSetOfHRTF, +#endif HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + const int16_t ext_rend_flag, +#endif const int16_t num_poses ); @@ -903,9 +930,15 @@ void ivas_rend_closeCrend( const int16_t num_poses ); +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error ivas_Crend_hrtf_init( + HRTFS_CREND_DATA *hHrtf /* i/o: Crend HRTF handle */ +); +#else ivas_error ivas_hrtf_init( - HRTFS_DATA *hHrtf /* i/o: HRTF handle */ + HRTFS_DATA *hHrtf /* i/o: HRTF handle */ ); +#endif ivas_error ivas_rend_initCrendWrapper( CREND_WRAPPER_HANDLE *pCrend, diff --git a/lib_rend/ivas_rom_binaural_crend_head.c b/lib_rend/ivas_rom_binaural_crend_head.c index 4fd680d7b234f61ee1d1e7d66985e0e3a2cdfb38..bb04993298401fd59b557dffb4ba57587214b589 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.c +++ b/lib_rend/ivas_rom_binaural_crend_head.c @@ -64,7 +64,7 @@ const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNEL const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz = 0; const float CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_Combined_HRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_Combined_HRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.19f8p+0, 0x1.1f28p+0, 0x1.2a4p+0, 0x1.397p+0, 0x1.42p+0, 0x1.387p+0, 0x1.2638p+0, 0x1.241p+0, 0x1.2f88p+0, 0x1.20c8p+0, 0x1.cep-1, 0x1.6a7p-1, 0x1.938p-1, 0x1.1978p+0, 0x1.6008p+0, 0x1.7c28p+0, 0x1.8cc8p+0, 0x1.b21p+0, 0x1.e06p+0, 0x1.feep+0, 0x1.054cp+1, 0x1.03b4p+1, 0x1.ebe8p+0, 0x1.b37p+0, 0x1.72cp+0, 0x1.4708p+0, 0x1.3958p+0, 0x1.3eap+0, 0x1.4c48p+0, 0x1.61fp+0, 0x1.83fp+0, 0x1.b378p+0, 0x1.eb3p+0, 0x1.0fb4p+1, 0x1.220cp+1, 0x1.2a3p+1, 0x1.2a3p+1, 0x1.25acp+1, 0x1.1ef4p+1, 0x1.1634p+1, 0x1.0ad4p+1, 0x1.fa68p+0, 0x1.df2p+0, 0x1.c96p+0, 0x1.bb58p+0, 0x1.b34p+0, 0x1.add8p+0, 0x1.a828p+0, 0x1.9f58p+0, 0x1.91cp+0, 0x1.809p+0, 0x1.6eb8p+0, 0x1.5e68p+0, 0x1.506p+0, 0x1.44bp+0, 0x1.3b38p+0, 0x1.33c8p+0, 0x1.2e38p+0, 0x1.29e8p+0, 0x1.2568p+0, 0x1.1f28p+0, 0x1.168p+0, 0x1.0b28p+0, 0x1.f7ap-1, 0x1.cdcp-1, 0x1.991p-1, 0x1.5dep-1, 0x1.223p-1, 0x1.d82p-2, 0x1.81cp-2, 0x1.47p-2, 0x1.264p-2, 0x1.1a8p-2, 0x1.1eep-2, 0x1.2ecp-2, 0x1.438p-2, 0x1.57p-2, 0x1.658p-2, 0x1.6dep-2, 0x1.71ap-2, 0x1.738p-2, 0x1.75cp-2, 0x1.798p-2, 0x1.806p-2, 0x1.8cep-2, 0x1.a08p-2, 0x1.ba4p-2, 0x1.d9ep-2, 0x1.ffcp-2, 0x1.15ap-1, 0x1.2c3p-1, 0x1.417p-1, 0x1.53ep-1, 0x1.625p-1, 0x1.6bdp-1, 0x1.6f9p-1, 0x1.6d7p-1, 0x1.65fp-1, 0x1.5a1p-1, 0x1.4b2p-1, 0x1.3a3p-1, 0x1.285p-1, 0x1.16ep-1, 0x1.07p-1, 0x1.f12p-2, 0x1.d64p-2, 0x1.bfp-2, 0x1.adap-2, 0x1.a3p-2, 0x1.9e8p-2, 0x1.a16p-2, 0x1.acep-2, 0x1.c0ap-2, 0x1.db4p-2, 0x1.fc2p-2, 0x1.11ap-1, 0x1.282p-1, 0x1.41ap-1, 0x1.5e6p-1, 0x1.7e4p-1, 0x1.a11p-1, 0x1.c76p-1, 0x1.f1cp-1, 0x1.0fb8p+0, 0x1.27cp+0, 0x1.4118p+0, 0x1.5c08p+0, 0x1.77e8p+0, 0x1.93b8p+0, 0x1.aee8p+0, 0x1.c94p+0, 0x1.e1d8p+0, 0x1.f6e8p+0, 0x1.0378p+1, 0x1.088cp+1, 0x1.0a3cp+1, 0x1.07d8p+1, 0x1.00b8p+1, 0x1.e9bp+0, 0x1.c988p+0, 0x1.a1cp+0, 0x1.7298p+0, 0x1.3d18p+0, 0x1.037p+0, 0x1.8f4p-1, 0x1.145p-1, 0x1.2cap-2, 0x1.8ap-5, -0x1.854p-3, -0x1.ae8p-2, -0x1.4bp-1, -0x1.bb9p-1, -0x1.1308p+0, -0x1.4548p+0, -0x1.75f8p+0, -0x1.a56p+0, -0x1.d278p+0, -0x1.fcf8p+0, -0x1.12f8p+1, -0x1.26f4p+1, -0x1.3a08p+1, -0x1.4bb4p+1, -0x1.5c04p+1, -0x1.6b1cp+1, -0x1.78acp+1, -0x1.83fcp+1, -0x1.8c8cp+1, -0x1.9278p+1, -0x1.95ep+1, -0x1.9644p+1, -0x1.933p+1, -0x1.8d14p+1, -0x1.84bp+1, -0x1.79f8p+1, -0x1.6c64p+1, -0x1.5c6p+1, -0x1.4ad4p+1, -0x1.3784p+1, -0x1.217p+1, -0x1.08acp+1, -0x1.dbc8p+0, -0x1.a0ep+0, -0x1.5dfp+0, -0x1.12f8p+0, -0x1.83p-1, -0x1.a18p-2, -0x1.84p-6, 0x1.89ap-2, 0x1.981p-1, 0x1.347p+0, 0x1.9848p+0, 0x1.ee58p+0, @@ -186,7 +186,7 @@ const float CRendBin_Combined_HRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHA 0x1.38p-1, 0x1.2ebp-1, 0x1.17ep-1, 0x1.e3ep-2, 0x1.7bp-2, 0x1.fccp-3, 0x1.d08p-4, -0x1.09p-5, -0x1.57p-3, -0x1.eecp-3, -0x1.bcp-3, -0x1.e5p-4, -0x1.66p-6, 0x1.3ap-6, 0x1.d4p-7, 0x1.1p-9, 0x1.8p-12, 0x1.cp-10, -0x1p-13, -0x1.4p-10, 0x1.8p-12, 0x1p-10, -0x1.8p-12, -0x1.8p-11, 0x1.8p-12, 0x1.4p-11, -0x1.8p-12, -0x1p-11, 0x1.8p-12, 0x1.8p-12, -0x1.8p-12, -0x1p-12, 0x1p-12, 0x1p-12, -0x1p-12, -0x1p-13, 0x1p-12, 0x1p-13, -0x1p-12, -0x1p-13, 0x1p-13, 0x0p+0, -0x1p-13, 0x0p+0, 0x1p-13, 0x0p+0, 0x0p+0, 0x1p-13} } }; -const float CRendBin_Combined_HRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_Combined_HRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.64p-6, 0x1.fep-5, 0x1.6e8p-4, 0x1.478p-4, 0x1.46p-6, -0x1.6cp-5, -0x1.3cp-5, 0x1.d4p-7, -0x1.ap-8, -0x1.d18p-4, -0x1.d78p-4, 0x1.218p-3, 0x1.047p-1, 0x1.647p-1, 0x1.47p-1, 0x1.0fdp-1, 0x1.06cp-1, 0x1.05cp-1, 0x1.a7p-2, 0x1.dd8p-3, 0x1.15p-5, -0x1.6dp-3, -0x1.93ap-2, -0x1.10ap-1, -0x1.085p-1, -0x1.7e2p-2, -0x1.984p-3, -0x1.bep-5, 0x1.09p-4, 0x1.67p-3, 0x1.156p-2, 0x1.4a6p-2, 0x1.308p-2, 0x1.728p-3, -0x1.5p-8, -0x1.b64p-3, -0x1.ap-2, -0x1.235p-1, -0x1.6bp-1, -0x1.ab4p-1, -0x1.e28p-1, -0x1.0528p+0, -0x1.0f1p+0, -0x1.1118p+0, -0x1.109p+0, -0x1.122p+0, -0x1.17a8p+0, -0x1.2168p+0, -0x1.2e3p+0, -0x1.3af8p+0, -0x1.4468p+0, -0x1.4958p+0, -0x1.4adp+0, -0x1.4a5p+0, -0x1.48e8p+0, -0x1.476p+0, -0x1.4658p+0, -0x1.46ap+0, -0x1.4938p+0, -0x1.4ec8p+0, -0x1.56dp+0, -0x1.6058p+0, -0x1.6b28p+0, -0x1.76ep+0, -0x1.819p+0, -0x1.8818p+0, -0x1.87e8p+0, -0x1.7ff8p+0, -0x1.70a8p+0, -0x1.5bap+0, -0x1.43d8p+0, -0x1.2c18p+0, -0x1.1608p+0, -0x1.02a8p+0, -0x1.e57p-1, -0x1.cd1p-1, -0x1.bb4p-1, -0x1.adcp-1, -0x1.a23p-1, -0x1.968p-1, -0x1.89ap-1, -0x1.7b9p-1, -0x1.6c7p-1, -0x1.5bfp-1, -0x1.4a9p-1, -0x1.39bp-1, -0x1.2a9p-1, -0x1.1d7p-1, -0x1.134p-1, -0x1.0dcp-1, -0x1.0e4p-1, -0x1.14ap-1, -0x1.201p-1, -0x1.2fcp-1, -0x1.427p-1, -0x1.56cp-1, -0x1.6acp-1, -0x1.7cep-1, -0x1.8bcp-1, -0x1.96bp-1, -0x1.9d7p-1, -0x1.9fap-1, -0x1.9d4p-1, -0x1.977p-1, -0x1.8fp-1, -0x1.83fp-1, -0x1.759p-1, -0x1.646p-1, -0x1.516p-1, -0x1.3cfp-1, -0x1.272p-1, -0x1.10ep-1, -0x1.f68p-2, -0x1.cdcp-2, -0x1.a78p-2, -0x1.842p-2, -0x1.63ep-2, -0x1.47p-2, -0x1.2e2p-2, -0x1.1a4p-2, -0x1.0b8p-2, -0x1.026p-2, -0x1.01p-2, -0x1.0ap-2, -0x1.1ep-2, -0x1.3cep-2, -0x1.69ap-2, -0x1.a82p-2, -0x1.f9ep-2, -0x1.2f2p-1, -0x1.6b7p-1, -0x1.b3bp-1, -0x1.042p+0, -0x1.33d8p+0, -0x1.6818p+0, -0x1.a058p+0, -0x1.dbc8p+0, -0x1.0c38p+1, -0x1.29e8p+1, -0x1.4614p+1, -0x1.604cp+1, -0x1.780cp+1, -0x1.8c64p+1, -0x1.9cdp+1, -0x1.a9ap+1, -0x1.b33cp+1, -0x1.b96cp+1, -0x1.bbe4p+1, -0x1.bb3cp+1, -0x1.b854p+1, -0x1.b344p+1, -0x1.abb4p+1, -0x1.a1f4p+1, -0x1.96ecp+1, -0x1.8accp+1, -0x1.7d14p+1, -0x1.6dbp+1, -0x1.5d2cp+1, -0x1.4bbcp+1, -0x1.38e4p+1, -0x1.243p+1, -0x1.0dd8p+1, -0x1.ec48p+0, -0x1.b9dp+0, -0x1.838p+0, -0x1.4968p+0, -0x1.0ccp+0, -0x1.9dp-1, -0x1.1d5p-1, -0x1.352p-2, -0x1.7cp-5, 0x1.9d8p-3, 0x1.c5ep-2, 0x1.5cbp-1, 0x1.d31p-1, 0x1.217p+0, 0x1.5698p+0, 0x1.8ab8p+0, 0x1.bd68p+0, 0x1.ecb8p+0, 0x1.0c78p+1, 0x1.21cp+1, 0x1.357p+1, 0x1.45d4p+1, 0x1.5278p+1, 0x1.5b2cp+1, 0x1.5dep+1, 0x1.57dcp+1, 0x1.4854p+1, 0x1.2f08p+1, 0x1.0ap+1, 0x1.b028p+0, @@ -320,7 +320,7 @@ const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNEL const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz = 0; const float CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_Combined_HRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_Combined_HRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.391p+0, 0x1.3e48p+0, 0x1.4968p+0, 0x1.58ap+0, 0x1.6148p+0, 0x1.57c8p+0, 0x1.45ap+0, 0x1.4388p+0, 0x1.4f18p+0, 0x1.4058p+0, 0x1.0688p+0, 0x1.a96p-1, 0x1.d27p-1, 0x1.38f8p+0, 0x1.7f88p+0, 0x1.9b9p+0, 0x1.ac28p+0, 0x1.d15p+0, 0x1.ff88p+0, 0x1.0efcp+1, 0x1.14c8p+1, 0x1.131cp+1, 0x1.0548p+1, 0x1.d2p+0, 0x1.914p+0, 0x1.657p+0, 0x1.57b8p+0, 0x1.5dp+0, 0x1.6aap+0, 0x1.8048p+0, 0x1.a24p+0, 0x1.d1cp+0, 0x1.04bp+1, 0x1.1ecp+1, 0x1.310cp+1, 0x1.3924p+1, 0x1.3914p+1, 0x1.3484p+1, 0x1.2dcp+1, 0x1.24f8p+1, 0x1.199p+1, 0x1.0be8p+1, 0x1.fc68p+0, 0x1.e678p+0, 0x1.d838p+0, 0x1.cffp+0, 0x1.ca68p+0, 0x1.c49p+0, 0x1.bb88p+0, 0x1.adcp+0, 0x1.9c6p+0, 0x1.8a48p+0, 0x1.79cp+0, 0x1.6b88p+0, 0x1.5fap+0, 0x1.55fp+0, 0x1.4e48p+0, 0x1.4888p+0, 0x1.4408p+0, 0x1.3f5p+0, 0x1.38d8p+0, 0x1.3008p+0, 0x1.248p+0, 0x1.14fp+0, 0x1.ffap-1, 0x1.ca9p-1, 0x1.8efp-1, 0x1.52bp-1, 0x1.1c1p-1, 0x1.e0ap-2, 0x1.a4cp-2, 0x1.82cp-2, 0x1.75ep-2, 0x1.79p-2, 0x1.878p-2, 0x1.9aep-2, 0x1.ad2p-2, 0x1.ba4p-2, 0x1.c12p-2, 0x1.c36p-2, 0x1.c3cp-2, 0x1.c46p-2, 0x1.c68p-2, 0x1.cbcp-2, 0x1.d6ap-2, 0x1.e88p-2, 0x1.005p-1, 0x1.0f4p-1, 0x1.214p-1, 0x1.361p-1, 0x1.4bbp-1, 0x1.6p-1, 0x1.716p-1, 0x1.7eep-1, 0x1.876p-1, 0x1.8a1p-1, 0x1.86dp-1, 0x1.7e2p-1, 0x1.712p-1, 0x1.60fp-1, 0x1.4ebp-1, 0x1.3b7p-1, 0x1.289p-1, 0x1.172p-1, 0x1.071p-1, 0x1.fp-2, 0x1.d56p-2, 0x1.c06p-2, 0x1.b1ep-2, 0x1.a9ap-2, 0x1.a88p-2, 0x1.afcp-2, 0x1.bf4p-2, 0x1.d5ap-2, 0x1.f2p-2, 0x1.0ap-1, 0x1.1dcp-1, 0x1.345p-1, 0x1.4e4p-1, 0x1.6b9p-1, 0x1.8cp-1, 0x1.afbp-1, 0x1.d6fp-1, 0x1.0088p+0, 0x1.16a8p+0, 0x1.2de8p+0, 0x1.469p+0, 0x1.603p+0, 0x1.79cp+0, 0x1.9298p+0, 0x1.aa78p+0, 0x1.c068p+0, 0x1.d278p+0, 0x1.dec8p+0, 0x1.e468p+0, 0x1.e25p+0, 0x1.d6c8p+0, 0x1.c07p+0, 0x1.9f48p+0, 0x1.7478p+0, 0x1.40a8p+0, 0x1.0458p+0, 0x1.81bp-1, 0x1.e24p-2, 0x1.6c4p-3, -0x1.f7p-4, -0x1.b6p-2, -0x1.758p-1, -0x1.0538p+0, -0x1.4c6p+0, -0x1.901p+0, -0x1.cf2p+0, -0x1.03fcp+1, -0x1.1d14p+1, -0x1.331p+1, -0x1.45cp+1, -0x1.5498p+1, -0x1.5f9p+1, -0x1.6704p+1, -0x1.6af4p+1}, @@ -412,7 +412,7 @@ const float CRendBin_Combined_HRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHA 0x1.372p-1, 0x1.584p-1, 0x1.789p-1, 0x1.969p-1, 0x1.b08p-1, 0x1.c4fp-1, 0x1.d3dp-1, 0x1.ddap-1, 0x1.e2ap-1, 0x1.e29p-1, 0x1.ddbp-1, 0x1.d4dp-1, 0x1.c7dp-1, 0x1.b5dp-1, 0x1.9e5p-1, 0x1.822p-1, 0x1.621p-1, 0x1.3e7p-1, 0x1.177p-1, 0x1.dd4p-2, 0x1.8b6p-2, 0x1.3aap-2, 0x1.d68p-3, 0x1.3ccp-3, 0x1.598p-4, 0x1.46p-6, -0x1.46p-5, -0x1.89p-4, -0x1.2f8p-3, -0x1.924p-3, -0x1.f04p-3, -0x1.27p-2, -0x1.56p-2, -0x1.83cp-2, -0x1.af8p-2, -0x1.d92p-2, -0x1.ffap-2, -0x1.103p-1, -0x1.1cdp-1, -0x1.26p-1, -0x1.2c5p-1, -0x1.3p-1, -0x1.311p-1, -0x1.304p-1, -0x1.2ecp-1, -0x1.2d3p-1, -0x1.2bfp-1, -0x1.2b5p-1, -0x1.2c2p-1, -0x1.2f2p-1, -0x1.347p-1, -0x1.3bdp-1, -0x1.453p-1, -0x1.50dp-1, -0x1.5e6p-1, -0x1.6d3p-1, -0x1.7c4p-1, -0x1.8b5p-1, -0x1.9ap-1, -0x1.a77p-1, -0x1.b2bp-1, -0x1.bb5p-1, -0x1.c17p-1, -0x1.c4dp-1} } }; -const float CRendBin_Combined_HRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_Combined_HRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.74p-6, 0x1.0bp-4, 0x1.82p-4, 0x1.628p-4, 0x1.cep-6, -0x1.1ap-5, -0x1.bcp-6, 0x1.c2p-6, 0x1.0cp-7, -0x1.91p-4, -0x1.92p-4, 0x1.478p-3, 0x1.0ecp-1, 0x1.6f8p-1, 0x1.52bp-1, 0x1.1c3p-1, 0x1.13dp-1, 0x1.139p-1, 0x1.c42p-2, 0x1.0d6p-2, 0x1.0b8p-4, -0x1.294p-3, -0x1.7p-2, -0x1.fbcp-2, -0x1.e92p-2, -0x1.54ap-2, -0x1.414p-3, -0x1.4cp-7, 0x1.c5p-4, 0x1.c88p-3, 0x1.47cp-2, 0x1.7e4p-2, 0x1.65ep-2, 0x1.e08p-3, 0x1.9bp-5, -0x1.41cp-3, -0x1.64p-2, -0x1.047p-1, -0x1.4b4p-1, -0x1.8a9p-1, -0x1.c11p-1, -0x1.e82p-1, -0x1.fb5p-1, -0x1.feap-1, -0x1.fcdp-1, -0x1.fefp-1, -0x1.0498p+0, -0x1.0dfp+0, -0x1.1a48p+0, -0x1.26ap+0, -0x1.2fap+0, -0x1.3418p+0, -0x1.351p+0, -0x1.341p+0, -0x1.323p+0, -0x1.302p+0, -0x1.2e98p+0, -0x1.2e58p+0, -0x1.3068p+0, -0x1.3578p+0, -0x1.3cf8p+0, -0x1.46p+0, -0x1.5048p+0, -0x1.5b8p+0, -0x1.65b8p+0, -0x1.6bcp+0, -0x1.6b1p+0, -0x1.62a8p+0, -0x1.52d8p+0, -0x1.3d58p+0, -0x1.251p+0, -0x1.0ccp+0, -0x1.ec6p-1, -0x1.c49p-1, -0x1.a3ap-1, -0x1.8a2p-1, -0x1.774p-1, -0x1.68bp-1, -0x1.5bfp-1, -0x1.4f1p-1, -0x1.411p-1, -0x1.31dp-1, -0x1.217p-1, -0x1.0fcp-1, -0x1.fa6p-2, -0x1.d62p-2, -0x1.b54p-2, -0x1.988p-2, -0x1.81ap-2, -0x1.73ep-2, -0x1.724p-2, -0x1.7c6p-2, -0x1.90ap-2, -0x1.ad2p-2, -0x1.cfep-2, -0x1.f5cp-2, -0x1.0d9p-1, -0x1.1e5p-1, -0x1.2bep-1, -0x1.358p-1, -0x1.3aep-1, -0x1.3bap-1, -0x1.37fp-1, -0x1.30bp-1, -0x1.26dp-1, -0x1.1a3p-1, -0x1.0a5p-1, -0x1.ef2p-2, -0x1.c5ep-2, -0x1.99cp-2, -0x1.6aep-2, -0x1.3aep-2, -0x1.0c2p-2, -0x1.bfcp-3, -0x1.6c8p-3, -0x1.1fp-3, -0x1.afp-4, -0x1.2a8p-4, -0x1.68p-5, -0x1.44p-6, -0x1.8p-10, 0x1.6p-7, 0x1.ecp-7, 0x1.2cp-7, -0x1.d8p-8, -0x1.17p-5, -0x1.2ep-4, -0x1.0bp-3, -0x1.a64p-3, -0x1.33cp-2, -0x1.a96p-2, -0x1.1cp-1, -0x1.707p-1, -0x1.d06p-1, -0x1.1cep+0, -0x1.55a8p+0, -0x1.919p+0, -0x1.ce38p+0, -0x1.0464p+1, -0x1.1facp+1, -0x1.3864p+1, -0x1.4dbcp+1, -0x1.5eacp+1, -0x1.6abp+1, -0x1.71ecp+1, -0x1.7488p+1, -0x1.7244p+1, -0x1.6ae4p+1, -0x1.5ee4p+1, -0x1.4eecp+1, -0x1.3b18p+1, -0x1.2354p+1, -0x1.082p+1, -0x1.d4b8p+0, -0x1.94b8p+0, -0x1.505p+0, -0x1.0858p+0, -0x1.7cdp-1, -0x1.ccep-2, -0x1.354p-3}, @@ -516,7 +516,7 @@ const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNEL const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz = 0; const float CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_Combined_HRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_Combined_HRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { 0x1.3ep+0, 0x1.4338p+0, 0x1.4e58p+0, 0x1.5d9p+0, 0x1.663p+0, 0x1.5c98p+0, 0x1.4a48p+0, 0x1.48p+0, 0x1.535p+0, 0x1.445p+0, 0x1.0a38p+0, 0x1.b05p-1, 0x1.d9p-1, 0x1.3c08p+0, 0x1.8258p+0, 0x1.9e38p+0, 0x1.aebp+0, 0x1.d3cp+0, 0x1.00e8p+1, 0x1.100cp+1, 0x1.15c4p+1, 0x1.13f8p+1, 0x1.05f8p+1, 0x1.d2f8p+0, 0x1.91b8p+0, 0x1.6568p+0, 0x1.573p+0, 0x1.5cp+0, 0x1.692p+0, 0x1.7e4p+0, 0x1.9fbp+0, 0x1.cea8p+0, 0x1.02dcp+1, 0x1.1ca4p+1, 0x1.2ea8p+1, 0x1.3674p+1, 0x1.360cp+1, 0x1.311cp+1, 0x1.29f4p+1, 0x1.20cp+1, 0x1.14dcp+1, 0x1.06acp+1, 0x1.f0fp+0, 0x1.dap+0, 0x1.cacp+0, 0x1.c178p+0, 0x1.bae8p+0, 0x1.b3f8p+0, 0x1.a9dp+0, 0x1.9ad8p+0, 0x1.882p+0, 0x1.749p+0, 0x1.6268p+0, 0x1.527p+0, 0x1.44a8p+0, 0x1.38fp+0, 0x1.2f3p+0, 0x1.2748p+0, 0x1.209p+0, 0x1.1978p+0, 0x1.1078p+0, 0x1.04e8p+0, 0x1.ec7p-1, 0x1.c6p-1, 0x1.935p-1, 0x1.547p-1, 0x1.0dap-1, 0x1.8a4p-2, 0x1.032p-2, 0x1.21cp-3, 0x1.cbp-5, -0x1.3p-8, -0x1.73p-5, -0x1.238p-4, -0x1.638p-4, -0x1.8d8p-4, -0x1.b2p-4, -0x1.d78p-4, -0x1.f98p-4, -0x1.06cp-3}, { 0x1.f36p-1, 0x1.fd1p-1, 0x1.c0fp-1, 0x1.34fp-1, 0x1.5ep-2, 0x1.6d4p-3, 0x1.94p-6, -0x1.3ep-3, -0x1.ea4p-3, -0x1.318p-3, 0x1.a8p-7, 0x1.9bp-4, 0x1.cap-5, -0x1.128p-3, -0x1.d98p-2, -0x1.a2bp-1, -0x1.051p+0, -0x1.028p+0, -0x1.ccap-1, -0x1.94fp-1, -0x1.545p-1, -0x1.fd6p-2, -0x1.6dp-2, -0x1.34cp-2, -0x1.28p-2, -0x1.fc8p-3, -0x1.6f8p-3, -0x1.b5p-4, 0x1p-11, 0x1.75p-3, 0x1.9fep-2, 0x1.34p-1, 0x1.801p-1, 0x1.c43p-1, 0x1.fe3p-1, 0x1.0788p+0, 0x1.e21p-1, 0x1.8b2p-1, 0x1.321p-1, 0x1.d7ep-2, 0x1.662p-2, 0x1.f28p-3, 0x1.1a4p-3, 0x1.08p-5, -0x1.4ep-4, -0x1.a5p-3, -0x1.4d4p-2, -0x1.b3ep-2, -0x1.024p-1, -0x1.21ap-1, -0x1.366p-1, -0x1.3dap-1, -0x1.37dp-1, -0x1.27cp-1, -0x1.0f7p-1, -0x1.e1ep-2, -0x1.9e2p-2, -0x1.55ep-2, -0x1.062p-2, -0x1.5bp-3, -0x1.3dp-4, 0x1.06p-6, 0x1.b38p-4, 0x1.7d4p-3, 0x1.f94p-3, 0x1.23cp-2, 0x1.374p-2, 0x1.3b6p-2, 0x1.322p-2, 0x1.1e8p-2, 0x1.05cp-2, 0x1.dap-3, 0x1.afcp-3, 0x1.8fcp-3, 0x1.79p-3, 0x1.68p-3, 0x1.584p-3, 0x1.47cp-3, 0x1.38p-3, 0x1.2ep-3} @@ -578,7 +578,7 @@ const float CRendBin_Combined_HRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHA { 0x1.1898p+0, 0x1.17p+0, 0x1.1c9p+0, 0x1.2f48p+0, 0x1.479p+0, 0x1.546p+0, 0x1.4c68p+0, 0x1.37cp+0, 0x1.2488p+0, 0x1.173p+0, 0x1.0ca8p+0, 0x1.0718p+0, 0x1.0e5p+0, 0x1.2298p+0, 0x1.396p+0, 0x1.4898p+0, 0x1.4eep+0, 0x1.4dcp+0, 0x1.43fp+0, 0x1.31bp+0, 0x1.1d88p+0, 0x1.0ec8p+0, 0x1.05e8p+0, 0x1.fbep-1, 0x1.e73p-1, 0x1.cf1p-1, 0x1.b6p-1, 0x1.9c1p-1, 0x1.813p-1, 0x1.66ap-1, 0x1.4c8p-1, 0x1.319p-1, 0x1.15p-1, 0x1.ef8p-2, 0x1.b6ap-2, 0x1.83ep-2, 0x1.5dep-2, 0x1.4bcp-2, 0x1.4fcp-2, 0x1.64ap-2, 0x1.82cp-2, 0x1.a56p-2, 0x1.ca6p-2, 0x1.efp-2, 0x1.075p-1, 0x1.139p-1, 0x1.1cbp-1, 0x1.23cp-1, 0x1.298p-1, 0x1.2edp-1, 0x1.34ap-1, 0x1.3bdp-1, 0x1.449p-1, 0x1.4eap-1, 0x1.58cp-1, 0x1.613p-1, 0x1.668p-1, 0x1.67ep-1, 0x1.64ap-1, 0x1.5c4p-1, 0x1.4f2p-1, 0x1.3efp-1, 0x1.2cdp-1, 0x1.18bp-1, 0x1.01dp-1, 0x1.cfcp-2, 0x1.958p-2, 0x1.546p-2, 0x1.0cap-2, 0x1.84p-3, 0x1.e68p-4, 0x1.c5p-5, 0x1.2p-9, -0x1.4p-5, -0x1.178p-4, -0x1.67p-4, -0x1.9bp-4, -0x1.be8p-4, -0x1.d58p-4, -0x1.e2p-4} } }; -const float CRendBin_Combined_HRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_Combined_HRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { 0x1.86p-6, 0x1.188p-4, 0x1.988p-4, 0x1.82p-4, 0x1.36p-5, -0x1.78p-6, -0x1.cp-7, 0x1.5fp-5, 0x1.a6p-6, -0x1.3f8p-4, -0x1.36p-4, 0x1.7bp-3, 0x1.1dp-1, 0x1.7f2p-1, 0x1.63dp-1, 0x1.2edp-1, 0x1.27ep-1, 0x1.28ep-1, 0x1.f12p-2, 0x1.3ccp-2, 0x1.d18p-4, -0x1.85p-4, -0x1.3acp-2, -0x1.c48p-2, -0x1.afcp-2, -0x1.18ep-2, -0x1.888p-4, 0x1.b6p-5, 0x1.6a4p-3, 0x1.2aep-2, 0x1.914p-2, 0x1.ca8p-2, 0x1.b4ep-2, 0x1.42p-2, 0x1.0fcp-3, -0x1.278p-4, -0x1.0a8p-2, -0x1.acep-2, -0x1.1bfp-1, -0x1.5ap-1, -0x1.8f2p-1, -0x1.b4ap-1, -0x1.c61p-1, -0x1.c7ap-1, -0x1.c4p-1, -0x1.c47p-1, -0x1.ccfp-1, -0x1.dep-1, -0x1.f51p-1, -0x1.0618p+0, -0x1.0e6p+0, -0x1.1228p+0, -0x1.126p+0, -0x1.1098p+0, -0x1.0dd8p+0, -0x1.0aep+0, -0x1.0848p+0, -0x1.06f8p+0, -0x1.08p+0, -0x1.0cp+0, -0x1.128p+0, -0x1.1aa8p+0, -0x1.2428p+0, -0x1.2e9p+0, -0x1.37d8p+0, -0x1.3cb8p+0, -0x1.3a58p+0, -0x1.2f8p+0, -0x1.1c78p+0, -0x1.03p+0, -0x1.cbdp-1, -0x1.901p-1, -0x1.562p-1, -0x1.1fap-1, -0x1.daep-2, -0x1.7f2p-2, -0x1.298p-2, -0x1.ac4p-3, -0x1.038p-3, -0x1.5cp-5}, { -0x1.488p-4, -0x1.3eap-2, -0x1.36ep-1, -0x1.954p-1, -0x1.99fp-1, -0x1.855p-1, -0x1.7a4p-1, -0x1.4abp-1, -0x1.c92p-2, -0x1.1ep-2, -0x1.1c8p-2, -0x1.afap-2, -0x1.3dcp-1, -0x1.9aap-1, -0x1.bb1p-1, -0x1.6adp-1, -0x1.7dp-2, -0x1.1ap-5, 0x1.848p-3, 0x1.5eep-2, 0x1.e92p-2, 0x1.1c1p-1, 0x1.158p-1, 0x1.03fp-1, 0x1.0eep-1, 0x1.2f1p-1, 0x1.4c8p-1, 0x1.6bcp-1, 0x1.973p-1, 0x1.b87p-1, 0x1.adfp-1, 0x1.78bp-1, 0x1.332p-1, 0x1.c6ap-2, 0x1.d9cp-3, -0x1.54p-5, -0x1.39p-2, -0x1.f0cp-2, -0x1.23ap-1, -0x1.363p-1, -0x1.443p-1, -0x1.507p-1, -0x1.57dp-1, -0x1.5b8p-1, -0x1.5abp-1, -0x1.4e5p-1, -0x1.315p-1, -0x1.077p-1, -0x1.adep-2, -0x1.42ap-2, -0x1.98cp-3, -0x1.45p-4, 0x1.26p-5, 0x1.20cp-3, 0x1.df4p-3, 0x1.3fcp-2, 0x1.814p-2, 0x1.b86p-2, 0x1.e64p-2, 0x1.034p-1, 0x1.0a9p-1, 0x1.081p-1, 0x1.f6p-2, 0x1.c6p-2, 0x1.858p-2, 0x1.3eap-2, 0x1.f38p-3, 0x1.74p-3, 0x1.038p-3, 0x1.518p-4, 0x1.9fp-5, 0x1.f2p-6, 0x1.36p-6, 0x1.98p-7, 0x1p-7, 0x1.bp-9, -0x1.8p-10, -0x1.4p-8, -0x1.58p-8, -0x1.2p-9} @@ -658,7 +658,7 @@ const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAUR const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz = 0; const float CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][FOA_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_FOA_HRIR_coeff_re_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_FOA_HRIR_coeff_re_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.eeb8p-1, 0x1.7778p-1, 0x1.7c1p-2, 0x1.c8p-7, -0x1.056p-2, -0x1.b81p-2, -0x1.165p-1, -0x1.3e2p-1, -0x1.51ep-1, -0x1.49b8p-1, -0x1.22d8p-1, -0x1.c52p-2, -0x1.24cp-2, -0x1.df8p-4, 0x1.8b8p-5, 0x1.95ep-3, 0x1.4d5p-2, 0x1.b7bp-2, 0x1.06bp-1, 0x1.28f8p-1, 0x1.42d8p-1, 0x1.53ap-1, 0x1.5bcp-1, 0x1.5d88p-1, 0x1.5b5p-1, 0x1.55ap-1, 0x1.4bap-1, 0x1.3d48p-1, 0x1.2bf8p-1, 0x1.195p-1, 0x1.0618p-1, 0x1.e56p-2, 0x1.bf4p-2, 0x1.9abp-2, 0x1.77ap-2, 0x1.554p-2, 0x1.337p-2, 0x1.12bp-2, 0x1.e76p-3, 0x1.accp-3, 0x1.74p-3, 0x1.3bep-3, 0x1.03cp-3, 0x1.984p-4, 0x1.2ap-4, 0x1.7a8p-5, 0x1.4dp-6, -0x1.3cp-8, -0x1.ep-6, -0x1.b48p-5, -0x1.3a4p-4, -0x1.978p-4, -0x1.f1cp-4, -0x1.248p-3, -0x1.4e4p-3, -0x1.76p-3, -0x1.9bap-3, -0x1.bf4p-3, -0x1.e14p-3, -0x1.00cp-2, -0x1.102p-2, -0x1.1eap-2, -0x1.2c8p-2, -0x1.39bp-2, -0x1.462p-2, -0x1.51bp-2, -0x1.5c9p-2, -0x1.66dp-2, -0x1.70bp-2, -0x1.7a3p-2, -0x1.838p-2, -0x1.8cdp-2, -0x1.962p-2, -0x1.9f8p-2, -0x1.a9p-2, -0x1.b2fp-2, -0x1.bd5p-2, -0x1.c82p-2, -0x1.d38p-2, -0x1.dfap-2, -0x1.ec5p-2, -0x1.f96p-2, -0x1.0358p-1, -0x1.0a2p-1, -0x1.10d8p-1, -0x1.175p-1, -0x1.1d68p-1, -0x1.2328p-1, -0x1.28ap-1, -0x1.2dep-1, -0x1.32ep-1, -0x1.3778p-1, -0x1.3b9p-1, -0x1.3f1p-1, -0x1.421p-1, -0x1.44bp-1, -0x1.46e8p-1, -0x1.48d8p-1, -0x1.4a98p-1, -0x1.4c2p-1, -0x1.4d8p-1, -0x1.4ec8p-1, -0x1.501p-1, -0x1.517p-1, -0x1.52f8p-1, -0x1.54b8p-1, -0x1.569p-1, -0x1.589p-1, -0x1.5ac8p-1, -0x1.5d68p-1, -0x1.6058p-1, -0x1.637p-1, -0x1.6678p-1, -0x1.696p-1, -0x1.6c28p-1, -0x1.6eb8p-1, -0x1.713p-1, -0x1.739p-1, -0x1.75cp-1, -0x1.77dp-1, -0x1.79c8p-1, -0x1.7bb8p-1, -0x1.7dap-1, -0x1.7f78p-1, -0x1.814p-1, -0x1.82ep-1, -0x1.8458p-1, -0x1.85a8p-1, -0x1.86ep-1, -0x1.87f8p-1, -0x1.88ep-1, -0x1.89ap-1, -0x1.8a4p-1, -0x1.8ac8p-1, -0x1.8b4p-1, -0x1.8bc8p-1, -0x1.8c68p-1, -0x1.8d08p-1, -0x1.8dap-1, -0x1.8e48p-1, -0x1.8efp-1, -0x1.8f9p-1, -0x1.904p-1, -0x1.91p-1, -0x1.91b8p-1, -0x1.926p-1, -0x1.93p-1, -0x1.939p-1, -0x1.94p-1, -0x1.9458p-1, -0x1.94b8p-1, -0x1.952p-1, -0x1.958p-1, -0x1.95d8p-1, -0x1.964p-1, -0x1.96ap-1, -0x1.96e8p-1, -0x1.9708p-1, -0x1.972p-1, -0x1.9718p-1, -0x1.96f8p-1, -0x1.96dp-1, -0x1.96cp-1, -0x1.96bp-1, -0x1.96ap-1, -0x1.96bp-1, -0x1.96dp-1, -0x1.96ep-1, -0x1.96dp-1, -0x1.96dp-1, -0x1.96dp-1, -0x1.96b8p-1, -0x1.9698p-1, -0x1.9698p-1, -0x1.9698p-1, -0x1.9688p-1, -0x1.9678p-1, -0x1.9678p-1, -0x1.966p-1, -0x1.964p-1, -0x1.9648p-1, -0x1.9688p-1, -0x1.96cp-1, -0x1.97p-1, -0x1.9788p-1, -0x1.983p-1, -0x1.98a8p-1, -0x1.992p-1, -0x1.99dp-1, -0x1.9a68p-1, -0x1.9ac8p-1, -0x1.9b28p-1, @@ -692,7 +692,7 @@ const float CRendBin_FOA_HRIR_coeff_re_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][24 -0x1.43bp-2, -0x1.3a6p-2, -0x1.343p-2, -0x1.328p-2, -0x1.2bep-2, -0x1.1f6p-2, -0x1.1bfp-2, -0x1.22p-2, -0x1.1aep-2, -0x1.05dp-2, -0x1.06p-2, -0x1.1ddp-2, -0x1.128p-2, -0x1.9fcp-3, -0x1.5bcp-3, -0x1.f74p-3, -0x1.762p-2, -0x1.9e4p-2, -0x1.726p-2, -0x1.56fp-2, -0x1.5f5p-2, -0x1.3fp-2, -0x1.ed2p-3, -0x1.eap-3, -0x1.62dp-2, -0x1.d27p-2, -0x1.e3p-2, -0x1.c0fp-2, -0x1.c11p-2, -0x1.dedp-2, -0x1.e87p-2, -0x1.d87p-2, -0x1.b6ep-2, -0x1.68bp-2, -0x1.dd6p-3, -0x1.3a6p-3, -0x1.804p-3, -0x1.296p-2, -0x1.671p-2, -0x1.584p-2, -0x1.426p-2, -0x1.595p-2, -0x1.797p-2, -0x1.706p-2, -0x1.55ep-2, -0x1.70bp-2, -0x1.d06p-2, -0x1.1578p-1} } }; -const float CRendBin_FOA_HRIR_coeff_im_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_FOA_HRIR_coeff_im_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.dc8p-3, -0x1.3d5p-1, -0x1.a38p-1, -0x1.a61p-1, -0x1.69c8p-1, -0x1.17ep-1, -0x1.879p-2, -0x1.b02p-3, -0x1.75p-6, 0x1.66p-3, 0x1.6fdp-2, 0x1.0428p-1, 0x1.382p-1, 0x1.5298p-1, 0x1.5598p-1, 0x1.454p-1, 0x1.274p-1, 0x1.0138p-1, 0x1.adcp-2, 0x1.531p-2, 0x1.e6p-3, 0x1.218p-3, 0x1.8ep-5, -0x1.338p-5, -0x1.e18p-4, -0x1.8d4p-3, -0x1.112p-2, -0x1.551p-2, -0x1.903p-2, -0x1.c2ep-2, -0x1.ee7p-2, -0x1.09d8p-1, -0x1.19ap-1, -0x1.2728p-1, -0x1.3328p-1, -0x1.3de8p-1, -0x1.4748p-1, -0x1.4f3p-1, -0x1.55f8p-1, -0x1.5c28p-1, -0x1.6208p-1, -0x1.679p-1, -0x1.6c88p-1, -0x1.70ep-1, -0x1.748p-1, -0x1.777p-1, -0x1.79bp-1, -0x1.7b6p-1, -0x1.7cap-1, -0x1.7d68p-1, -0x1.7dbp-1, -0x1.7d78p-1, -0x1.7ccp-1, -0x1.7bap-1, -0x1.7a18p-1, -0x1.783p-1, -0x1.7608p-1, -0x1.73b8p-1, -0x1.715p-1, -0x1.6ecp-1, -0x1.6c28p-1, -0x1.698p-1, -0x1.66d8p-1, -0x1.6428p-1, -0x1.6168p-1, -0x1.5ecp-1, -0x1.5c4p-1, -0x1.59f8p-1, -0x1.57e8p-1, -0x1.561p-1, -0x1.548p-1, -0x1.5328p-1, -0x1.52p-1, -0x1.51p-1, -0x1.5038p-1, -0x1.4fap-1, -0x1.4f1p-1, -0x1.4e9p-1, -0x1.4e08p-1, -0x1.4d6p-1, -0x1.4c68p-1, -0x1.4b18p-1, -0x1.4968p-1, -0x1.4748p-1, -0x1.449p-1, -0x1.415p-1, -0x1.3db8p-1, -0x1.39e8p-1, -0x1.35fp-1, -0x1.31c8p-1, -0x1.2d58p-1, -0x1.2898p-1, -0x1.23bp-1, -0x1.1eb8p-1, -0x1.19fp-1, -0x1.1548p-1, -0x1.10e8p-1, -0x1.0cc8p-1, -0x1.08fp-1, -0x1.0558p-1, -0x1.021p-1, -0x1.fe4p-2, -0x1.f92p-2, -0x1.f49p-2, -0x1.f08p-2, -0x1.ecbp-2, -0x1.e91p-2, -0x1.e5bp-2, -0x1.e2bp-2, -0x1.dfap-2, -0x1.dc2p-2, -0x1.d7ep-2, -0x1.d3p-2, -0x1.cdap-2, -0x1.c8p-2, -0x1.c22p-2, -0x1.bc4p-2, -0x1.b63p-2, -0x1.bp-2, -0x1.a9ep-2, -0x1.a3ep-2, -0x1.9ddp-2, -0x1.97cp-2, -0x1.91ap-2, -0x1.8b5p-2, -0x1.84dp-2, -0x1.7e5p-2, -0x1.77ep-2, -0x1.718p-2, -0x1.6b2p-2, -0x1.64dp-2, -0x1.5ebp-2, -0x1.58dp-2, -0x1.533p-2, -0x1.4ep-2, -0x1.491p-2, -0x1.445p-2, -0x1.3f9p-2, -0x1.3aep-2, -0x1.365p-2, -0x1.31cp-2, -0x1.2d4p-2, -0x1.28ep-2, -0x1.246p-2, -0x1.1fcp-2, -0x1.1b1p-2, -0x1.166p-2, -0x1.119p-2, -0x1.0cdp-2, -0x1.085p-2, -0x1.03fp-2, -0x1.ff4p-3, -0x1.f68p-3, -0x1.eep-3, -0x1.e56p-3, -0x1.dc8p-3, -0x1.d36p-3, -0x1.ca8p-3, -0x1.c1cp-3, -0x1.b92p-3, -0x1.b1p-3, -0x1.a98p-3, -0x1.a26p-3, -0x1.9b6p-3, -0x1.94cp-3, -0x1.8e6p-3, -0x1.87ap-3, -0x1.80ap-3, -0x1.7ap-3, -0x1.738p-3, -0x1.6dp-3, -0x1.66ap-3, -0x1.60cp-3, -0x1.5b2p-3, -0x1.552p-3, -0x1.4f6p-3, -0x1.4ap-3, -0x1.44ap-3, -0x1.3f4p-3, -0x1.3aap-3, -0x1.36cp-3, -0x1.328p-3, -0x1.2ep-3, -0x1.2ap-3, -0x1.26p-3, -0x1.20ep-3, -0x1.1b4p-3, -0x1.162p-3, -0x1.10ap-3, -0x1.09ep-3, -0x1.032p-3, -0x1.fa4p-4, @@ -738,7 +738,7 @@ const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAUR const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz = 0; const float CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][FOA_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_FOA_HRIR_coeff_re_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_FOA_HRIR_coeff_re_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.ffbp-1, 0x1.8878p-1, 0x1.9e1p-2, 0x1.82p-5, -0x1.c6ep-3, -0x1.962p-2, -0x1.056p-1, -0x1.2d4p-1, -0x1.4108p-1, -0x1.38e8p-1, -0x1.1208p-1, -0x1.a36p-2, -0x1.02ep-2, -0x1.578p-4, 0x1.4e8p-4, 0x1.da8p-3, 0x1.6fcp-2, 0x1.da2p-2, 0x1.17e8p-1, 0x1.3a28p-1, 0x1.53f8p-1, 0x1.64a8p-1, 0x1.6cbp-1, 0x1.6e6p-1, 0x1.6c1p-1, 0x1.664p-1, 0x1.5c28p-1, 0x1.4db8p-1, 0x1.3c58p-1, 0x1.2998p-1, 0x1.165p-1, 0x1.02ep-1, 0x1.df9p-2, 0x1.bafp-2, 0x1.97cp-2, 0x1.756p-2, 0x1.538p-2, 0x1.32bp-2, 0x1.13ap-2, 0x1.ec6p-3, 0x1.b36p-3, 0x1.7bp-3, 0x1.42ap-3, 0x1.0a8p-3, 0x1.a6p-4, 0x1.384p-4, 0x1.9a8p-5, 0x1.94p-6, -0x1p-14, -0x1.8fp-6, -0x1.8ap-5, -0x1.23cp-4, -0x1.7f4p-4, -0x1.d78p-4, -0x1.16p-3, -0x1.3e6p-3, -0x1.648p-3, -0x1.88cp-3, -0x1.ab4p-3, -0x1.ccp-3, -0x1.eb2p-3, -0x1.045p-2, -0x1.126p-2, -0x1.1fdp-2, -0x1.2c8p-2, -0x1.385p-2, -0x1.436p-2, -0x1.4dfp-2, -0x1.582p-2, -0x1.61ep-2, -0x1.6b8p-2, -0x1.752p-2, -0x1.7edp-2, -0x1.889p-2, -0x1.928p-2, -0x1.9cep-2, -0x1.a7bp-2, -0x1.b3p-2, -0x1.beep-2, -0x1.cb9p-2, -0x1.d8cp-2, -0x1.e66p-2, -0x1.f44p-2, -0x1.0128p-1, -0x1.0828p-1, -0x1.0ee8p-1, -0x1.154p-1, -0x1.1b48p-1, -0x1.21p-1, -0x1.268p-1, -0x1.2bcp-1, -0x1.3098p-1, -0x1.34e8p-1, -0x1.38a8p-1, -0x1.3bfp-1, -0x1.3ed8p-1, -0x1.416p-1, -0x1.43ap-1, -0x1.45bp-1, -0x1.4798p-1, -0x1.4958p-1, -0x1.4bp-1, -0x1.4cbp-1, -0x1.4e8p-1, -0x1.508p-1, -0x1.52b8p-1, -0x1.5508p-1, -0x1.5788p-1, -0x1.5a48p-1, -0x1.5d68p-1, -0x1.60e8p-1, -0x1.649p-1, -0x1.6828p-1, -0x1.6bap-1, -0x1.6ef8p-1, -0x1.7228p-1, -0x1.7538p-1, -0x1.7828p-1, -0x1.7bp-1, -0x1.7dbp-1, -0x1.805p-1, -0x1.82fp-1, -0x1.859p-1, -0x1.8828p-1, -0x1.8acp-1, -0x1.8d48p-1, -0x1.8fbp-1, -0x1.92p-1, -0x1.945p-1, -0x1.969p-1, -0x1.98cp-1, -0x1.9aep-1, -0x1.9cf8p-1, -0x1.9f1p-1, -0x1.a13p-1, -0x1.a378p-1, -0x1.a5fp-1, -0x1.a88p-1, -0x1.ab18p-1, -0x1.adc8p-1, -0x1.b088p-1, -0x1.b358p-1, -0x1.b63p-1, -0x1.b918p-1, -0x1.bcp-1, -0x1.bec8p-1, -0x1.c178p-1, -0x1.c408p-1, -0x1.c67p-1, -0x1.c8bp-1, -0x1.cadp-1, -0x1.ccd8p-1, -0x1.ceb8p-1, -0x1.d06p-1, -0x1.d1dp-1, -0x1.d31p-1, -0x1.d41p-1, -0x1.d4cp-1, -0x1.d53p-1, -0x1.d568p-1}, @@ -764,7 +764,7 @@ const float CRendBin_FOA_HRIR_coeff_re_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][16 0x1.8c8p-4, 0x1.bd4p-4, 0x1.ddp-4, 0x1.ecp-4, 0x1.f2p-4, 0x1.f38p-4, 0x1.ed4p-4, 0x1.d58p-4, 0x1.a64p-4, 0x1.63cp-4, 0x1.18cp-4, 0x1.99p-5, 0x1.f7p-6, 0x1.2cp-7, -0x1.eep-7, -0x1.49p-5, -0x1.04p-4, -0x1.568p-4, -0x1.9f4p-4, -0x1.e5cp-4, -0x1.17ep-3, -0x1.3dcp-3, -0x1.61p-3, -0x1.7e6p-3, -0x1.958p-3, -0x1.a8ap-3, -0x1.bacp-3, -0x1.ce4p-3, -0x1.e3ap-3, -0x1.f9ap-3, -0x1.074p-2, -0x1.113p-2, -0x1.1b2p-2, -0x1.25ap-2, -0x1.30fp-2, -0x1.3d3p-2, -0x1.4a8p-2, -0x1.588p-2, -0x1.66cp-2, -0x1.751p-2, -0x1.835p-2, -0x1.913p-2, -0x1.9e7p-2, -0x1.aafp-2, -0x1.b67p-2, -0x1.c07p-2, -0x1.c89p-2, -0x1.ceap-2, -0x1.d27p-2, -0x1.d3dp-2, -0x1.d32p-2, -0x1.d0bp-2, -0x1.cd2p-2, -0x1.c8dp-2, -0x1.c43p-2, -0x1.bfdp-2, -0x1.bbdp-2, -0x1.b86p-2, -0x1.b5ap-2, -0x1.b38p-2, -0x1.b1dp-2, -0x1.b07p-2, -0x1.afap-2, -0x1.af6p-2} } }; -const float CRendBin_FOA_HRIR_coeff_im_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_FOA_HRIR_coeff_im_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.dcp-3, -0x1.3cfp-1, -0x1.a2e8p-1, -0x1.a538p-1, -0x1.68b8p-1, -0x1.1698p-1, -0x1.848p-2, -0x1.a9p-3, -0x1.33p-6, 0x1.6f8p-3, 0x1.752p-2, 0x1.0728p-1, 0x1.3b6p-1, 0x1.5618p-1, 0x1.595p-1, 0x1.4928p-1, 0x1.2b5p-1, 0x1.057p-1, 0x1.b67p-2, 0x1.5cp-2, 0x1.f8ap-3, 0x1.34cp-3, 0x1.dd8p-5, -0x1.c1p-6, -0x1.b64p-4, -0x1.76ap-3, -0x1.055p-2, -0x1.48cp-2, -0x1.836p-2, -0x1.b57p-2, -0x1.e07p-2, -0x1.029p-1, -0x1.1218p-1, -0x1.1f6p-1, -0x1.2b2p-1, -0x1.35ap-1, -0x1.3ecp-1, -0x1.467p-1, -0x1.4dp-1, -0x1.53p-1, -0x1.58a8p-1, -0x1.5ep-1, -0x1.62c8p-1, -0x1.66fp-1, -0x1.6a6p-1, -0x1.6d2p-1, -0x1.6f28p-1, -0x1.70ap-1, -0x1.71a8p-1, -0x1.723p-1, -0x1.7238p-1, -0x1.71b8p-1, -0x1.70cp-1, -0x1.6f58p-1, -0x1.6d8p-1, -0x1.6b5p-1, -0x1.68ep-1, -0x1.664p-1, -0x1.6388p-1, -0x1.60bp-1, -0x1.5dc8p-1, -0x1.5ad8p-1, -0x1.57e8p-1, -0x1.54fp-1, -0x1.51fp-1, -0x1.4fp-1, -0x1.4c4p-1, -0x1.49b8p-1, -0x1.4768p-1, -0x1.455p-1, -0x1.438p-1, -0x1.41f8p-1, -0x1.409p-1, -0x1.3f5p-1, -0x1.3e5p-1, -0x1.3d78p-1, -0x1.3ca8p-1, -0x1.3bep-1, -0x1.3b18p-1, -0x1.3a28p-1, -0x1.38e8p-1, -0x1.3748p-1, -0x1.3548p-1, -0x1.32dp-1, -0x1.2fcp-1, -0x1.2c28p-1, -0x1.2838p-1, -0x1.241p-1, -0x1.1fcp-1, -0x1.1b38p-1, -0x1.167p-1, -0x1.1158p-1, -0x1.0c18p-1, -0x1.06d8p-1, -0x1.01b8p-1, -0x1.f9ap-2, -0x1.f04p-2, -0x1.e77p-2, -0x1.df2p-2, -0x1.d77p-2, -0x1.d04p-2, -0x1.c9dp-2, -0x1.c41p-2, -0x1.befp-2, -0x1.ba3p-2, -0x1.b5bp-2, -0x1.b16p-2, -0x1.ad6p-2, -0x1.a9ap-2, -0x1.a5dp-2, -0x1.a19p-2, -0x1.9c8p-2, -0x1.96dp-2, -0x1.909p-2, -0x1.8a1p-2, -0x1.836p-2, -0x1.7c9p-2, -0x1.75bp-2, -0x1.6ebp-2, -0x1.67bp-2, -0x1.60dp-2, -0x1.5ap-2, -0x1.533p-2, -0x1.4c5p-2, -0x1.454p-2, -0x1.3e1p-2, -0x1.36ep-2, -0x1.2fbp-2, -0x1.289p-2, -0x1.217p-2, -0x1.1a4p-2, -0x1.133p-2, -0x1.0c4p-2, -0x1.057p-2, -0x1.fdcp-3, -0x1.f0cp-3, -0x1.e3ap-3, -0x1.d62p-3, -0x1.c82p-3, -0x1.b9ap-3, -0x1.aacp-3, -0x1.9b2p-3, -0x1.8bp-3, -0x1.7ap-3, -0x1.68p-3, -0x1.55p-3, -0x1.414p-3, -0x1.2ccp-3, -0x1.178p-3, -0x1.01ep-3, -0x1.d78p-4, -0x1.aap-4, -0x1.7acp-4, -0x1.4a8p-4, -0x1.198p-4, -0x1.cfp-5, -0x1.688p-5, -0x1.018p-5, -0x1.35p-6, -0x1.9cp-8}, @@ -802,7 +802,7 @@ const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAUR const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz = 0; const float CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][FOA_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_FOA_HRIR_coeff_re_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_FOA_HRIR_coeff_re_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { 0x1.0ec8p+0, 0x1.a66p-1, 0x1.d9ep-2, 0x1.af8p-4, -0x1.5p-3, -0x1.5bp-2, -0x1.cffp-2, -0x1.1p-1, -0x1.23fp-1, -0x1.1bfp-1, -0x1.ea7p-2, -0x1.6a3p-2, -0x1.948p-3, -0x1.dep-6, 0x1.158p-3, 0x1.239p-2, 0x1.a55p-2, 0x1.078p-1, 0x1.321p-1, 0x1.5408p-1, 0x1.6d98p-1, 0x1.7ep-1, 0x1.85bp-1, 0x1.86f8p-1, 0x1.8428p-1, 0x1.7dc8p-1, 0x1.731p-1, 0x1.63f8p-1, 0x1.51ep-1, 0x1.3e7p-1, 0x1.2a8p-1, 0x1.166p-1, 0x1.0298p-1, 0x1.df1p-2, 0x1.ba5p-2, 0x1.964p-2, 0x1.727p-2, 0x1.4f9p-2, 0x1.2e4p-2, 0x1.0e6p-2, 0x1.decp-3, 0x1.a1p-3, 0x1.634p-3, 0x1.25cp-3, 0x1.d18p-4, 0x1.594p-4, 0x1.c6p-5, 0x1.bdp-6, -0x1.4p-11, -0x1.cdp-6, -0x1.c68p-5, -0x1.52p-4, -0x1.bf4p-4, -0x1.156p-3, -0x1.4a2p-3, -0x1.7d8p-3, -0x1.af4p-3, -0x1.df6p-3, -0x1.074p-2, -0x1.1e5p-2, -0x1.35p-2, -0x1.4b9p-2, -0x1.628p-2, -0x1.7a1p-2, -0x1.928p-2, -0x1.ac1p-2, -0x1.c72p-2, -0x1.e41p-2, -0x1.018p-1, -0x1.11e8p-1, -0x1.2328p-1, -0x1.34f8p-1, -0x1.46f8p-1, -0x1.58a8p-1, -0x1.696p-1, -0x1.7898p-1, -0x1.85a8p-1, -0x1.9p-1, -0x1.973p-1, -0x1.9aep-1}, { 0x1.0ec8p+0, 0x1.a66p-1, 0x1.d9ep-2, 0x1.af8p-4, -0x1.5p-3, -0x1.5bp-2, -0x1.cffp-2, -0x1.1p-1, -0x1.23fp-1, -0x1.1bfp-1, -0x1.ea7p-2, -0x1.6a3p-2, -0x1.948p-3, -0x1.dep-6, 0x1.158p-3, 0x1.239p-2, 0x1.a55p-2, 0x1.078p-1, 0x1.321p-1, 0x1.5408p-1, 0x1.6d98p-1, 0x1.7ep-1, 0x1.85bp-1, 0x1.86f8p-1, 0x1.8428p-1, 0x1.7dc8p-1, 0x1.731p-1, 0x1.63f8p-1, 0x1.51ep-1, 0x1.3e7p-1, 0x1.2a8p-1, 0x1.166p-1, 0x1.0298p-1, 0x1.df1p-2, 0x1.ba5p-2, 0x1.964p-2, 0x1.727p-2, 0x1.4f9p-2, 0x1.2e4p-2, 0x1.0e6p-2, 0x1.decp-3, 0x1.a1p-3, 0x1.634p-3, 0x1.25cp-3, 0x1.d18p-4, 0x1.594p-4, 0x1.c6p-5, 0x1.bdp-6, -0x1.4p-11, -0x1.cdp-6, -0x1.c68p-5, -0x1.52p-4, -0x1.bf4p-4, -0x1.156p-3, -0x1.4a2p-3, -0x1.7d8p-3, -0x1.af4p-3, -0x1.df6p-3, -0x1.074p-2, -0x1.1e5p-2, -0x1.35p-2, -0x1.4b9p-2, -0x1.628p-2, -0x1.7a1p-2, -0x1.928p-2, -0x1.ac1p-2, -0x1.c72p-2, -0x1.e41p-2, -0x1.018p-1, -0x1.11e8p-1, -0x1.2328p-1, -0x1.34f8p-1, -0x1.46f8p-1, -0x1.58a8p-1, -0x1.696p-1, -0x1.7898p-1, -0x1.85a8p-1, -0x1.9p-1, -0x1.973p-1, -0x1.9aep-1} @@ -820,7 +820,7 @@ const float CRendBin_FOA_HRIR_coeff_re_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80 { 0x1.4ecp-4, 0x1.bb8p-4, 0x1.b88p-4, 0x1.9a8p-5, -0x1.64p-6, -0x1.528p-5, 0x1.58p-9, 0x1.c6p-5, 0x1.e28p-5, 0x1.7cp-8, -0x1.11p-4, -0x1.e84p-4, -0x1.19p-3, -0x1.0a4p-3, -0x1.dc4p-4, -0x1.bbp-4, -0x1.a18p-4, -0x1.55p-4, -0x1.61p-5, 0x1.c4p-7, 0x1.3ap-4, 0x1.1bcp-3, 0x1.9p-3, 0x1.efep-3, 0x1.1c5p-2, 0x1.3bep-2, 0x1.5fcp-2, 0x1.88dp-2, 0x1.bp-2, 0x1.cf6p-2, 0x1.e74p-2, 0x1.f8bp-2, 0x1.0098p-1, 0x1.fcep-2, 0x1.eacp-2, 0x1.cc9p-2, 0x1.a3fp-2, 0x1.71ep-2, 0x1.38cp-2, 0x1.fa8p-3, 0x1.88ap-3, 0x1.212p-3, 0x1.89p-4, 0x1.c68p-5, 0x1.3dp-6, -0x1.acp-7, -0x1.618p-5, -0x1.26p-4, -0x1.954p-4, -0x1.f94p-4, -0x1.266p-3, -0x1.45ap-3, -0x1.59cp-3, -0x1.63ap-3, -0x1.678p-3, -0x1.6aap-3, -0x1.70cp-3, -0x1.7aep-3, -0x1.88ap-3, -0x1.9ap-3, -0x1.aep-3, -0x1.c26p-3, -0x1.d56p-3, -0x1.e7ap-3, -0x1.fap-3, -0x1.06p-2, -0x1.0e5p-2, -0x1.164p-2, -0x1.1ep-2, -0x1.24cp-2, -0x1.299p-2, -0x1.2dp-2, -0x1.2fep-2, -0x1.31dp-2, -0x1.31dp-2, -0x1.30dp-2, -0x1.303p-2, -0x1.2fcp-2, -0x1.2e8p-2, -0x1.2dp-2} } }; -const float CRendBin_FOA_HRIR_coeff_im_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_FOA_HRIR_coeff_im_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { -0x1.d9ep-3, -0x1.3b68p-1, -0x1.a06p-1, -0x1.a1cp-1, -0x1.644p-1, -0x1.1118p-1, -0x1.777p-2, -0x1.8aap-3, -0x1.ep-10, 0x1.964p-3, 0x1.8a9p-2, 0x1.12d8p-1, 0x1.481p-1, 0x1.63c8p-1, 0x1.681p-1, 0x1.591p-1, 0x1.3c7p-1, 0x1.17cp-1, 0x1.dd9p-2, 0x1.858p-2, 0x1.281p-2, 0x1.90ap-3, 0x1.aecp-4, 0x1.5fp-6, -0x1.cc8p-5, -0x1.0a8p-3, -0x1.9a2p-3, -0x1.0e4p-2, -0x1.468p-2, -0x1.763p-2, -0x1.9ebp-2, -0x1.c0fp-2, -0x1.dd9p-2, -0x1.f5cp-2, -0x1.0578p-1, -0x1.0edp-1, -0x1.16dp-1, -0x1.1d5p-1, -0x1.22bp-1, -0x1.2768p-1, -0x1.2bb8p-1, -0x1.2fap-1, -0x1.32e8p-1, -0x1.3588p-1, -0x1.3768p-1, -0x1.389p-1, -0x1.391p-1, -0x1.391p-1, -0x1.38ap-1, -0x1.37cp-1, -0x1.366p-1, -0x1.3478p-1, -0x1.3208p-1, -0x1.2f18p-1, -0x1.2bap-1, -0x1.27a8p-1, -0x1.2358p-1, -0x1.1edp-1, -0x1.1a2p-1, -0x1.1558p-1, -0x1.1088p-1, -0x1.0bc8p-1, -0x1.072p-1, -0x1.0278p-1, -0x1.fb6p-2, -0x1.f18p-2, -0x1.e6fp-2, -0x1.db3p-2, -0x1.cd9p-2, -0x1.bd5p-2, -0x1.a9ap-2, -0x1.91cp-2, -0x1.74fp-2, -0x1.52bp-2, -0x1.2afp-2, -0x1.fb4p-3, -0x1.968p-3, -0x1.292p-3, -0x1.6a4p-4, -0x1.e7p-6}, { -0x1.d9ep-3, -0x1.3b68p-1, -0x1.a06p-1, -0x1.a1cp-1, -0x1.644p-1, -0x1.1118p-1, -0x1.777p-2, -0x1.8aap-3, -0x1.ep-10, 0x1.964p-3, 0x1.8a9p-2, 0x1.12d8p-1, 0x1.481p-1, 0x1.63c8p-1, 0x1.681p-1, 0x1.591p-1, 0x1.3c7p-1, 0x1.17cp-1, 0x1.dd9p-2, 0x1.858p-2, 0x1.281p-2, 0x1.90ap-3, 0x1.aecp-4, 0x1.5fp-6, -0x1.cc8p-5, -0x1.0a8p-3, -0x1.9a2p-3, -0x1.0e4p-2, -0x1.468p-2, -0x1.763p-2, -0x1.9ebp-2, -0x1.c0fp-2, -0x1.dd9p-2, -0x1.f5cp-2, -0x1.0578p-1, -0x1.0edp-1, -0x1.16dp-1, -0x1.1d5p-1, -0x1.22bp-1, -0x1.2768p-1, -0x1.2bb8p-1, -0x1.2fap-1, -0x1.32e8p-1, -0x1.3588p-1, -0x1.3768p-1, -0x1.389p-1, -0x1.391p-1, -0x1.391p-1, -0x1.38ap-1, -0x1.37cp-1, -0x1.366p-1, -0x1.3478p-1, -0x1.3208p-1, -0x1.2f18p-1, -0x1.2bap-1, -0x1.27a8p-1, -0x1.2358p-1, -0x1.1edp-1, -0x1.1a2p-1, -0x1.1558p-1, -0x1.1088p-1, -0x1.0bc8p-1, -0x1.072p-1, -0x1.0278p-1, -0x1.fb6p-2, -0x1.f18p-2, -0x1.e6fp-2, -0x1.db3p-2, -0x1.cd9p-2, -0x1.bd5p-2, -0x1.a9ap-2, -0x1.91cp-2, -0x1.74fp-2, -0x1.52bp-2, -0x1.2afp-2, -0x1.fb4p-3, -0x1.968p-3, -0x1.292p-3, -0x1.6a4p-4, -0x1.e7p-6} @@ -856,7 +856,7 @@ const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINA const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz = 0; const float CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA2_HRIR_coeff_re_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_HOA2_HRIR_coeff_re_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.e93p-1, 0x1.4578p-1, 0x1.554p-3, -0x1.fd4p-3, -0x1.047p-1, -0x1.409p-1, -0x1.4cfp-1, -0x1.3588p-1, -0x1.f42p-2, -0x1.3bfp-2, -0x1.70cp-4, 0x1.112p-3, 0x1.53ep-2, 0x1.f03p-2, 0x1.29ap-1, 0x1.3f18p-1, 0x1.3d08p-1, 0x1.28cp-1, 0x1.0638p-1, 0x1.b07p-2, 0x1.435p-2, 0x1.9b4p-3, 0x1.634p-4, -0x1.5dp-6, -0x1.f94p-4, -0x1.c46p-3, -0x1.3fp-2, -0x1.8fcp-2, -0x1.d1bp-2, -0x1.02dp-1, -0x1.16dp-1, -0x1.2568p-1, -0x1.2f48p-1, -0x1.358p-1, -0x1.3928p-1, -0x1.3adp-1, -0x1.3ab8p-1, -0x1.3978p-1, -0x1.37a8p-1, -0x1.35ap-1, -0x1.3348p-1, -0x1.305p-1, -0x1.2c7p-1, -0x1.279p-1, -0x1.21b8p-1, -0x1.1bp-1, -0x1.1378p-1, -0x1.0b38p-1, -0x1.024p-1, -0x1.f13p-2, -0x1.dc8p-2, -0x1.c6ap-2, -0x1.bp-2, -0x1.98fp-2, -0x1.81cp-2, -0x1.6aap-2, -0x1.542p-2, -0x1.3e6p-2, -0x1.295p-2, -0x1.14bp-2, -0x1.009p-2, -0x1.d9cp-3, -0x1.b32p-3, -0x1.8cep-3, -0x1.674p-3, -0x1.42ap-3, -0x1.1fp-3, -0x1.f84p-4, -0x1.b4p-4, -0x1.72p-4, -0x1.318p-4, -0x1.e28p-5, -0x1.628p-5, -0x1.c8p-6, -0x1.98p-7, 0x1.a8p-9, 0x1.3bp-6, 0x1.2p-5, 0x1.a4p-5, 0x1.168p-4, 0x1.5dp-4, 0x1.a3cp-4, 0x1.e9p-4, 0x1.16ep-3, 0x1.398p-3, 0x1.5bep-3, 0x1.7cap-3, 0x1.9bcp-3, 0x1.ba2p-3, 0x1.d86p-3, 0x1.f62p-3, 0x1.08dp-2, 0x1.152p-2, 0x1.206p-2, 0x1.2afp-2, 0x1.34dp-2, 0x1.3d6p-2, 0x1.449p-2, 0x1.4bp-2, 0x1.517p-2, 0x1.586p-2, 0x1.5f8p-2, 0x1.66bp-2, 0x1.6ep-2, 0x1.75fp-2, 0x1.7f1p-2, 0x1.894p-2, 0x1.941p-2, 0x1.9f2p-2, 0x1.aa6p-2, 0x1.b6p-2, 0x1.c1dp-2, 0x1.cdcp-2, 0x1.d97p-2, 0x1.e4bp-2, 0x1.ef3p-2, 0x1.f8fp-2, 0x1.011p-1, 0x1.0568p-1, 0x1.099p-1, 0x1.0d88p-1, 0x1.116p-1, 0x1.1518p-1, 0x1.18b8p-1, 0x1.1c48p-1, 0x1.1fb8p-1, 0x1.22f8p-1, 0x1.25f8p-1, 0x1.28c8p-1, 0x1.2b5p-1, 0x1.2d98p-1, 0x1.2fa8p-1, 0x1.31a8p-1, 0x1.33ap-1, 0x1.3598p-1, 0x1.379p-1, 0x1.399p-1, 0x1.3b88p-1, 0x1.3d78p-1, 0x1.3f7p-1, 0x1.418p-1, 0x1.43a8p-1, 0x1.45f8p-1, 0x1.487p-1, 0x1.4af8p-1, 0x1.4d88p-1, 0x1.501p-1, 0x1.52ap-1, 0x1.551p-1, 0x1.576p-1, 0x1.59a8p-1, 0x1.5bd8p-1, 0x1.5dd8p-1, 0x1.5fbp-1, 0x1.616p-1, 0x1.62e8p-1, 0x1.643p-1, 0x1.653p-1, 0x1.66p-1, 0x1.66ap-1, 0x1.6718p-1, 0x1.6778p-1, 0x1.67e8p-1, 0x1.6858p-1, 0x1.68c8p-1, 0x1.6968p-1, 0x1.6a3p-1, 0x1.6ae8p-1, 0x1.6b88p-1, 0x1.6c3p-1, 0x1.6cdp-1, 0x1.6d48p-1, 0x1.6dbp-1, 0x1.6e28p-1, 0x1.6e98p-1, 0x1.6ee8p-1, 0x1.6f38p-1, 0x1.6fa8p-1, 0x1.7008p-1, 0x1.7068p-1, 0x1.71p-1, 0x1.71ep-1, 0x1.72dp-1, 0x1.73ep-1, 0x1.7538p-1, 0x1.76dp-1, 0x1.785p-1, 0x1.79dp-1, 0x1.7b9p-1, 0x1.7d5p-1, 0x1.7ecp-1, 0x1.803p-1, @@ -930,7 +930,7 @@ const float CRendBin_HOA2_HRIR_coeff_re_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][ 0x1.a8p-8, 0x1.c4p-8, 0x1.d4p-8, 0x1.34p-7, 0x1.6ap-7, 0x1.2ep-7, 0x1.16p-7, 0x1.a6p-7, 0x1.07p-6, 0x1.a2p-7, 0x1.a4p-7, 0x1.9ap-6, 0x1.1cp-5, 0x1.9p-6, 0x1.72p-7, 0x1.e5p-6, 0x1.3a4p-4, 0x1.c4p-4, 0x1.bb8p-4, 0x1.88p-4, 0x1.9c4p-4, 0x1.d2cp-4, 0x1.cdp-4, 0x1.8ep-4, 0x1.648p-4, 0x1.79p-4, 0x1.b74p-4, 0x1.fecp-4, 0x1.1acp-3, 0x1.26cp-3, 0x1.2aep-3, 0x1.2eep-3, 0x1.174p-3, 0x1.53p-4, -0x1.2bp-6, -0x1.e74p-4, -0x1.36ep-3, -0x1.b98p-4, -0x1.c48p-5, -0x1.b68p-5, -0x1.28p-4, -0x1.8a8p-5, -0x1.e8p-9, -0x1.3p-6, -0x1.ffp-5, 0x1.bep-6, 0x1.3fbp-2, 0x1.2dap-1} } }; -const float CRendBin_HOA2_HRIR_coeff_im_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_HOA2_HRIR_coeff_im_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.1e5p-2, -0x1.6f78p-1, -0x1.c158p-1, -0x1.8ccp-1, -0x1.11fp-1, -0x1.148p-2, -0x1.59p-6, 0x1.adep-3, 0x1.a72p-2, 0x1.206p-1, 0x1.4648p-1, 0x1.424p-1, 0x1.1908p-1, 0x1.a8dp-2, 0x1.00dp-2, 0x1.44p-4, -0x1.5acp-4, -0x1.dbep-3, -0x1.717p-2, -0x1.de5p-2, -0x1.186p-1, -0x1.332p-1, -0x1.408p-1, -0x1.43cp-1, -0x1.3f98p-1, -0x1.344p-1, -0x1.211p-1, -0x1.06fp-1, -0x1.d1p-2, -0x1.908p-2, -0x1.4fp-2, -0x1.0e2p-2, -0x1.9fap-3, -0x1.2aep-3, -0x1.7cp-4, -0x1.6p-5, 0x1.c8p-9, 0x1.7c8p-5, 0x1.62p-4, 0x1.fe4p-4, 0x1.4b6p-3, 0x1.96ep-3, 0x1.e16p-3, 0x1.152p-2, 0x1.385p-2, 0x1.5a4p-2, 0x1.7acp-2, 0x1.99cp-2, 0x1.b75p-2, 0x1.d35p-2, 0x1.ed9p-2, 0x1.02ep-1, 0x1.0dep-1, 0x1.17dp-1, 0x1.20bp-1, 0x1.288p-1, 0x1.2f68p-1, 0x1.35ap-1, 0x1.3b58p-1, 0x1.40ap-1, 0x1.4578p-1, 0x1.49f8p-1, 0x1.4e28p-1, 0x1.5208p-1, 0x1.558p-1, 0x1.58ap-1, 0x1.5b88p-1, 0x1.5e4p-1, 0x1.60b8p-1, 0x1.631p-1, 0x1.656p-1, 0x1.67bp-1, 0x1.69ep-1, 0x1.6cp-1, 0x1.6e2p-1, 0x1.7038p-1, 0x1.722p-1, 0x1.73d8p-1, 0x1.7588p-1, 0x1.7708p-1, 0x1.782p-1, 0x1.78ap-1, 0x1.78cp-1, 0x1.78a8p-1, 0x1.783p-1, 0x1.7728p-1, 0x1.7598p-1, 0x1.73d8p-1, 0x1.7208p-1, 0x1.6ff8p-1, 0x1.6d58p-1, 0x1.6a3p-1, 0x1.66ep-1, 0x1.63a8p-1, 0x1.608p-1, 0x1.5d4p-1, 0x1.5ap-1, 0x1.571p-1, 0x1.54dp-1, 0x1.5338p-1, 0x1.51f8p-1, 0x1.50e8p-1, 0x1.5008p-1, 0x1.4f8p-1, 0x1.4f6p-1, 0x1.4f7p-1, 0x1.4f48p-1, 0x1.4ec8p-1, 0x1.4df8p-1, 0x1.4cfp-1, 0x1.4bap-1, 0x1.49f8p-1, 0x1.47e8p-1, 0x1.456p-1, 0x1.427p-1, 0x1.3f38p-1, 0x1.3bd8p-1, 0x1.387p-1, 0x1.35p-1, 0x1.31ap-1, 0x1.2e38p-1, 0x1.2ad8p-1, 0x1.277p-1, 0x1.241p-1, 0x1.20ap-1, 0x1.1d18p-1, 0x1.197p-1, 0x1.15cp-1, 0x1.121p-1, 0x1.0e6p-1, 0x1.0ad8p-1, 0x1.078p-1, 0x1.046p-1, 0x1.016p-1, 0x1.fd1p-2, 0x1.f7ap-2, 0x1.f25p-2, 0x1.ed1p-2, 0x1.e8p-2, 0x1.e34p-2, 0x1.deap-2, 0x1.da2p-2, 0x1.d5bp-2, 0x1.d11p-2, 0x1.cc2p-2, 0x1.c6ep-2, 0x1.c18p-2, 0x1.bbbp-2, 0x1.b5ap-2, 0x1.af6p-2, 0x1.a9p-2, 0x1.a26p-2, 0x1.9b7p-2, 0x1.948p-2, 0x1.8d7p-2, 0x1.863p-2, 0x1.7eep-2, 0x1.77cp-2, 0x1.70ep-2, 0x1.6a3p-2, 0x1.63fp-2, 0x1.5e4p-2, 0x1.58ep-2, 0x1.53cp-2, 0x1.4fp-2, 0x1.4a8p-2, 0x1.45dp-2, 0x1.40fp-2, 0x1.3c2p-2, 0x1.377p-2, 0x1.32bp-2, 0x1.2dfp-2, 0x1.298p-2, 0x1.254p-2, 0x1.21p-2, 0x1.1cep-2, 0x1.193p-2, 0x1.15bp-2, 0x1.124p-2, 0x1.0f5p-2, 0x1.0cdp-2, 0x1.0a5p-2, 0x1.079p-2, 0x1.051p-2, 0x1.029p-2, 0x1.ffp-3, 0x1.f8p-3, 0x1.f12p-3, 0x1.e9ep-3, 0x1.e1p-3, 0x1.d7ap-3, 0x1.cf2p-3, @@ -1016,7 +1016,7 @@ const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINA const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz = 0; const float CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA2_HRIR_coeff_re_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_HOA2_HRIR_coeff_re_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.d098p-1, 0x1.2cd8p-1, 0x1.e5cp-4, -0x1.2ffp-2, -0x1.1d2p-1, -0x1.595p-1, -0x1.65c8p-1, -0x1.4e6p-1, -0x1.12fp-1, -0x1.6d9p-2, -0x1.1b6p-3, 0x1.5d8p-4, 0x1.22fp-2, 0x1.bf7p-2, 0x1.1158p-1, 0x1.26ep-1, 0x1.24d8p-1, 0x1.109p-1, 0x1.dc1p-2, 0x1.801p-2, 0x1.12fp-2, 0x1.3aap-3, 0x1.44p-5, -0x1.18p-4, -0x1.5cep-3, -0x1.122p-2, -0x1.6ecp-2, -0x1.bf5p-2, -0x1.0088p-1, -0x1.1a68p-1, -0x1.2e5p-1, -0x1.3cd8p-1, -0x1.46ap-1, -0x1.4cc8p-1, -0x1.5068p-1, -0x1.51f8p-1, -0x1.51ep-1, -0x1.509p-1, -0x1.4eb8p-1, -0x1.4cap-1, -0x1.4a38p-1, -0x1.473p-1, -0x1.434p-1, -0x1.3e48p-1, -0x1.385p-1, -0x1.3178p-1, -0x1.29c8p-1, -0x1.2158p-1, -0x1.1838p-1, -0x1.0e6p-1, -0x1.03dp-1, -0x1.f16p-2, -0x1.da5p-2, -0x1.c2dp-2, -0x1.ab3p-2, -0x1.93bp-2, -0x1.7ccp-2, -0x1.66ap-2, -0x1.513p-2, -0x1.3c3p-2, -0x1.27bp-2, -0x1.13bp-2, -0x1.001p-2, -0x1.d92p-3, -0x1.b2ep-3, -0x1.8dap-3, -0x1.696p-3, -0x1.45cp-3, -0x1.23p-3, -0x1.012p-3, -0x1.c04p-4, -0x1.7e4p-4, -0x1.3c4p-4, -0x1.f6p-5, -0x1.73p-5, -0x1.dbp-6, -0x1.98p-7, 0x1.1p-8, 0x1.57p-6, 0x1.3a8p-5, 0x1.cd8p-5, 0x1.308p-4, 0x1.78cp-4, 0x1.c08p-4, 0x1.048p-3, 0x1.286p-3, 0x1.4aap-3, 0x1.6b4p-3, 0x1.8bp-3, 0x1.aaep-3, 0x1.cap-3, 0x1.e7p-3, 0x1.008p-2, 0x1.0c7p-2, 0x1.17cp-2, 0x1.227p-2, 0x1.2bep-2, 0x1.33fp-2, 0x1.3b5p-2, 0x1.42cp-2, 0x1.4aap-2, 0x1.52fp-2, 0x1.5b4p-2, 0x1.63dp-2, 0x1.6d1p-2, 0x1.777p-2, 0x1.831p-2, 0x1.8f5p-2, 0x1.9bep-2, 0x1.a8bp-2, 0x1.b5ep-2, 0x1.c35p-2, 0x1.d0ep-2, 0x1.de5p-2, 0x1.eb3p-2, 0x1.f76p-2, 0x1.0178p-1, 0x1.06fp-1, 0x1.0c3p-1, 0x1.114p-1, 0x1.163p-1, 0x1.1b08p-1, 0x1.1fdp-1, 0x1.249p-1, 0x1.295p-1, 0x1.2e1p-1, 0x1.32b8p-1, 0x1.374p-1, 0x1.3bb8p-1, 0x1.4008p-1, 0x1.444p-1, 0x1.4868p-1, 0x1.4cbp-1, 0x1.5118p-1, 0x1.55ap-1, 0x1.5a5p-1, 0x1.5f38p-1, 0x1.6438p-1, 0x1.6958p-1, 0x1.6e9p-1, 0x1.7408p-1, 0x1.79a8p-1, 0x1.7f78p-1, 0x1.8578p-1, 0x1.8b88p-1, 0x1.9188p-1, 0x1.9778p-1, 0x1.9d38p-1, 0x1.a2cp-1, 0x1.a7e8p-1, 0x1.accp-1, 0x1.b138p-1, 0x1.b538p-1, 0x1.b8bp-1, 0x1.bba8p-1, 0x1.be3p-1, 0x1.c038p-1, 0x1.c1b8p-1, 0x1.c2cp-1, 0x1.c348p-1}, @@ -1072,7 +1072,7 @@ const float CRendBin_HOA2_HRIR_coeff_re_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][ 0x1.59p-5, 0x1.008p-5, 0x1.03p-6, -0x1.8p-9, -0x1.95p-6, -0x1.9cp-5, -0x1.454p-4, -0x1.c1cp-4, -0x1.1bp-3, -0x1.4dp-3, -0x1.76cp-3, -0x1.99ep-3, -0x1.b5ep-3, -0x1.c86p-3, -0x1.cf2p-3, -0x1.cb2p-3, -0x1.bf4p-3, -0x1.af4p-3, -0x1.9d4p-3, -0x1.892p-3, -0x1.718p-3, -0x1.56ep-3, -0x1.3b4p-3, -0x1.21cp-3, -0x1.0c2p-3, -0x1.f4p-4, -0x1.d2p-4, -0x1.ac4p-4, -0x1.7ecp-4, -0x1.4ccp-4, -0x1.1acp-4, -0x1.d68p-5, -0x1.7a8p-5, -0x1.1f8p-5, -0x1.85p-6, -0x1.8p-7, 0x1.4p-10, 0x1.e4p-7, 0x1.d3p-6, 0x1.5ap-5, 0x1.ca8p-5, 0x1.1c8p-4, 0x1.52p-4, 0x1.868p-4, 0x1.b94p-4, 0x1.e9p-4, 0x1.09ap-3, 0x1.1b6p-3, 0x1.29p-3, 0x1.31ap-3, 0x1.35p-3, 0x1.334p-3, 0x1.2d2p-3, 0x1.238p-3, 0x1.17p-3, 0x1.088p-3, 0x1.f04p-4, 0x1.cdcp-4, 0x1.ab8p-4, 0x1.8b4p-4, 0x1.6d4p-4, 0x1.54p-4, 0x1.42p-4, 0x1.39p-4} } }; -const float CRendBin_HOA2_HRIR_coeff_im_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_HOA2_HRIR_coeff_im_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.1eap-2, -0x1.7p-1, -0x1.c24p-1, -0x1.8e08p-1, -0x1.1398p-1, -0x1.186p-2, -0x1.a1p-6, 0x1.a3cp-3, 0x1.a1ap-2, 0x1.1d68p-1, 0x1.431p-1, 0x1.3ecp-1, 0x1.153p-1, 0x1.a06p-2, 0x1.ef4p-3, 0x1.1cp-4, -0x1.85cp-4, -0x1.f32p-3, -0x1.7ddp-2, -0x1.eb6p-2, -0x1.1f4p-1, -0x1.3a5p-1, -0x1.47f8p-1, -0x1.4b88p-1, -0x1.47a8p-1, -0x1.3ca8p-1, -0x1.29c8p-1, -0x1.0ff8p-1, -0x1.e3cp-2, -0x1.a4p-2, -0x1.634p-2, -0x1.232p-2, -0x1.cb2p-3, -0x1.57ep-3, -0x1.d9p-4, -0x1.1p-4, -0x1.52p-6, 0x1.63p-6, 0x1.f4p-5, 0x1.938p-4, 0x1.14cp-3, 0x1.5fp-3, 0x1.a86p-3, 0x1.f02p-3, 0x1.1abp-2, 0x1.3c1p-2, 0x1.5cp-2, 0x1.7a7p-2, 0x1.975p-2, 0x1.b2bp-2, 0x1.cc5p-2, 0x1.e3dp-2, 0x1.f91p-2, 0x1.061p-1, 0x1.0e9p-1, 0x1.16p-1, 0x1.1c78p-1, 0x1.2248p-1, 0x1.279p-1, 0x1.2c7p-1, 0x1.30d8p-1, 0x1.34e8p-1, 0x1.38bp-1, 0x1.3c28p-1, 0x1.3f38p-1, 0x1.41f8p-1, 0x1.448p-1, 0x1.46dp-1, 0x1.48e8p-1, 0x1.4aep-1, 0x1.4cd8p-1, 0x1.4edp-1, 0x1.50bp-1, 0x1.527p-1, 0x1.5438p-1, 0x1.55f8p-1, 0x1.578p-1, 0x1.58d8p-1, 0x1.5a2p-1, 0x1.5b4p-1, 0x1.5bep-1, 0x1.5bfp-1, 0x1.5bap-1, 0x1.5b1p-1, 0x1.5a18p-1, 0x1.5888p-1, 0x1.568p-1, 0x1.5438p-1, 0x1.51e8p-1, 0x1.4f5p-1, 0x1.4c28p-1, 0x1.488p-1, 0x1.44a8p-1, 0x1.40f8p-1, 0x1.3d6p-1, 0x1.39a8p-1, 0x1.35fp-1, 0x1.3298p-1, 0x1.2fe8p-1, 0x1.2dd8p-1, 0x1.2c28p-1, 0x1.2aa8p-1, 0x1.295p-1, 0x1.2858p-1, 0x1.27cp-1, 0x1.2748p-1, 0x1.26ap-1, 0x1.25ap-1, 0x1.244p-1, 0x1.22ap-1, 0x1.20cp-1, 0x1.1e78p-1, 0x1.1bc8p-1, 0x1.1898p-1, 0x1.14f8p-1, 0x1.111p-1, 0x1.0d08p-1, 0x1.08fp-1, 0x1.04d8p-1, 0x1.00c8p-1, 0x1.f98p-2, 0x1.f18p-2, 0x1.e98p-2, 0x1.e19p-2, 0x1.d99p-2, 0x1.d15p-2, 0x1.c8fp-2, 0x1.c07p-2, 0x1.b7ep-2, 0x1.af4p-2, 0x1.a6dp-2, 0x1.9eap-2, 0x1.96bp-2, 0x1.8edp-2, 0x1.86fp-2, 0x1.7fp-2, 0x1.76dp-2, 0x1.6e4p-2, 0x1.657p-2, 0x1.5c6p-2, 0x1.52fp-2, 0x1.49p-2, 0x1.3e6p-2, 0x1.33p-2, 0x1.268p-2, 0x1.191p-2, 0x1.0a9p-2, 0x1.f64p-3, 0x1.d52p-3, 0x1.b24p-3, 0x1.8dep-3, 0x1.67cp-3, 0x1.402p-3, 0x1.176p-3, 0x1.dbcp-4, 0x1.878p-4, 0x1.31cp-4, 0x1.b6p-5, 0x1.078p-5, 0x1.6p-7}, @@ -1140,7 +1140,7 @@ const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINA const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz = 0; const float CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA2_HRIR_coeff_re_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_HOA2_HRIR_coeff_re_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { 0x1.b798p-1, 0x1.13ep-1, 0x1.1ep-4, -0x1.61fp-2, -0x1.3628p-1, -0x1.725p-1, -0x1.7ea8p-1, -0x1.6718p-1, -0x1.2b6p-1, -0x1.9dep-2, -0x1.7acp-3, 0x1.41p-5, 0x1.e82p-3, 0x1.90fp-2, 0x1.f49p-2, 0x1.1018p-1, 0x1.0e6p-1, 0x1.f4fp-2, 0x1.b0bp-2, 0x1.559p-2, 0x1.d28p-3, 0x1.d1cp-4, 0x1.cp-12, -0x1.b5p-4, -0x1.a98p-3, -0x1.377p-2, -0x1.93p-2, -0x1.e25p-2, -0x1.1158p-1, -0x1.2a8p-1, -0x1.3dbp-1, -0x1.4b8p-1, -0x1.549p-1, -0x1.59f8p-1, -0x1.5cc8p-1, -0x1.5d8p-1, -0x1.5c78p-1, -0x1.5a2p-1, -0x1.5728p-1, -0x1.53d8p-1, -0x1.5028p-1, -0x1.4bcp-1, -0x1.466p-1, -0x1.3ffp-1, -0x1.3888p-1, -0x1.3038p-1, -0x1.271p-1, -0x1.1d18p-1, -0x1.126p-1, -0x1.06dp-1, -0x1.f4dp-2, -0x1.da7p-2, -0x1.bedp-2, -0x1.a27p-2, -0x1.856p-2, -0x1.682p-2, -0x1.4b2p-2, -0x1.2ebp-2, -0x1.129p-2, -0x1.ed2p-3, -0x1.b5p-3, -0x1.7c6p-3, -0x1.428p-3, -0x1.06p-3, -0x1.8d4p-4, -0x1.078p-4, -0x1.e5p-6, 0x1.ecp-8, 0x1.808p-5, 0x1.6a4p-4, 0x1.0dap-3, 0x1.68ap-3, 0x1.c42p-3, 0x1.0ebp-2, 0x1.38dp-2, 0x1.5f1p-2, 0x1.7fep-2, 0x1.99ep-2, 0x1.abep-2, 0x1.b5p-2}, { 0x1.b798p-1, 0x1.13ep-1, 0x1.1ep-4, -0x1.61fp-2, -0x1.3628p-1, -0x1.725p-1, -0x1.7ea8p-1, -0x1.6718p-1, -0x1.2b6p-1, -0x1.9dep-2, -0x1.7acp-3, 0x1.41p-5, 0x1.e82p-3, 0x1.90fp-2, 0x1.f49p-2, 0x1.1018p-1, 0x1.0e6p-1, 0x1.f4fp-2, 0x1.b0bp-2, 0x1.559p-2, 0x1.d28p-3, 0x1.d1cp-4, 0x1.cp-12, -0x1.b5p-4, -0x1.a98p-3, -0x1.377p-2, -0x1.93p-2, -0x1.e25p-2, -0x1.1158p-1, -0x1.2a8p-1, -0x1.3dbp-1, -0x1.4b8p-1, -0x1.549p-1, -0x1.59f8p-1, -0x1.5cc8p-1, -0x1.5d8p-1, -0x1.5c78p-1, -0x1.5a2p-1, -0x1.5728p-1, -0x1.53d8p-1, -0x1.5028p-1, -0x1.4bcp-1, -0x1.466p-1, -0x1.3ffp-1, -0x1.3888p-1, -0x1.3038p-1, -0x1.271p-1, -0x1.1d18p-1, -0x1.126p-1, -0x1.06dp-1, -0x1.f4dp-2, -0x1.da7p-2, -0x1.bedp-2, -0x1.a27p-2, -0x1.856p-2, -0x1.682p-2, -0x1.4b2p-2, -0x1.2ebp-2, -0x1.129p-2, -0x1.ed2p-3, -0x1.b5p-3, -0x1.7c6p-3, -0x1.428p-3, -0x1.06p-3, -0x1.8d4p-4, -0x1.078p-4, -0x1.e5p-6, 0x1.ecp-8, 0x1.808p-5, 0x1.6a4p-4, 0x1.0dap-3, 0x1.68ap-3, 0x1.c42p-3, 0x1.0ebp-2, 0x1.38dp-2, 0x1.5f1p-2, 0x1.7fep-2, 0x1.99ep-2, 0x1.abep-2, 0x1.b5p-2} @@ -1178,7 +1178,7 @@ const float CRendBin_HOA2_HRIR_coeff_re_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][ { 0x0p+0, 0x1.2bcp-4, 0x1.a84p-4, 0x1.b8p-7, -0x1.38ap-3, -0x1.355p-2, -0x1.7f6p-2, -0x1.539p-2, -0x1.34p-3, 0x1.084p-3, 0x1.973p-2, 0x1.235p-1, 0x1.49d8p-1, 0x1.52e8p-1, 0x1.3f48p-1, 0x1.053p-1, 0x1.5d3p-2, 0x1.5cep-3, 0x1.01p-5, -0x1.5b4p-4, -0x1.95ap-3, -0x1.3e4p-2, -0x1.a5p-2, -0x1.f4ap-2, -0x1.15f8p-1, -0x1.2938p-1, -0x1.385p-1, -0x1.4448p-1, -0x1.4a9p-1, -0x1.4918p-1, -0x1.404p-1, -0x1.30f8p-1, -0x1.1b7p-1, -0x1.fffp-2, -0x1.bfap-2, -0x1.78cp-2, -0x1.2dbp-2, -0x1.c1ap-3, -0x1.2a2p-3, -0x1.34cp-4, -0x1.76p-7, 0x1.6fp-5, 0x1.81cp-4, 0x1.1c8p-3, 0x1.7p-3, 0x1.b8cp-3, 0x1.f4p-3, 0x1.112p-2, 0x1.22dp-2, 0x1.309p-2, 0x1.3c9p-2, 0x1.485p-2, 0x1.538p-2, 0x1.5cdp-2, 0x1.632p-2, 0x1.662p-2, 0x1.65cp-2, 0x1.61fp-2, 0x1.5bp-2, 0x1.517p-2, 0x1.461p-2, 0x1.394p-2, 0x1.2b4p-2, 0x1.1cp-2, 0x1.0bap-2, 0x1.f4ep-3, 0x1.d0cp-3, 0x1.aacp-3, 0x1.83ap-3, 0x1.5d2p-3, 0x1.37ap-3, 0x1.132p-3, 0x1.e0cp-4, 0x1.a34p-4, 0x1.6e8p-4, 0x1.41cp-4, 0x1.1ccp-4, 0x1.024p-4, 0x1.e7p-5, 0x1.db8p-5} } }; -const float CRendBin_HOA2_HRIR_coeff_im_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_HOA2_HRIR_coeff_im_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { -0x1.1fbp-2, -0x1.719p-1, -0x1.c4d8p-1, -0x1.91bp-1, -0x1.1838p-1, -0x1.238p-2, -0x1.378p-5, 0x1.866p-3, 0x1.911p-2, 0x1.1418p-1, 0x1.38a8p-1, 0x1.333p-1, 0x1.088p-1, 0x1.84ep-2, 0x1.b42p-3, 0x1.3b8p-5, -0x1.06p-3, -0x1.1d2p-2, -0x1.a38p-2, -0x1.09ap-1, -0x1.345p-1, -0x1.508p-1, -0x1.5f5p-1, -0x1.63f8p-1, -0x1.613p-1, -0x1.5738p-1, -0x1.457p-1, -0x1.2cbp-1, -0x1.0fb8p-1, -0x1.e2p-2, -0x1.a3ap-2, -0x1.65ep-2, -0x1.2acp-2, -0x1.e72p-3, -0x1.808p-3, -0x1.20ap-3, -0x1.8ecp-4, -0x1.d6p-5, -0x1.4dp-6, 0x1.e4p-7, 0x1.908p-5, 0x1.51cp-4, 0x1.d9p-4, 0x1.2ep-3, 0x1.6dp-3, 0x1.a94p-3, 0x1.e2ap-3, 0x1.0c9p-2, 0x1.267p-2, 0x1.3edp-2, 0x1.558p-2, 0x1.6a1p-2, 0x1.7c5p-2, 0x1.8c4p-2, 0x1.99fp-2, 0x1.a53p-2, 0x1.ae5p-2, 0x1.b5fp-2, 0x1.bc7p-2, 0x1.c21p-2, 0x1.c6ep-2, 0x1.cb3p-2, 0x1.cf3p-2, 0x1.d29p-2, 0x1.d51p-2, 0x1.d66p-2, 0x1.d62p-2, 0x1.d3bp-2, 0x1.ce2p-2, 0x1.c4ap-2, 0x1.b69p-2, 0x1.a2fp-2, 0x1.88ep-2, 0x1.67fp-2, 0x1.4p-2, 0x1.113p-2, 0x1.b8p-3, 0x1.42cp-3, 0x1.8ap-4, 0x1.09p-5}, { -0x1.1fbp-2, -0x1.719p-1, -0x1.c4d8p-1, -0x1.91bp-1, -0x1.1838p-1, -0x1.238p-2, -0x1.378p-5, 0x1.866p-3, 0x1.911p-2, 0x1.1418p-1, 0x1.38a8p-1, 0x1.333p-1, 0x1.088p-1, 0x1.84ep-2, 0x1.b42p-3, 0x1.3b8p-5, -0x1.06p-3, -0x1.1d2p-2, -0x1.a38p-2, -0x1.09ap-1, -0x1.345p-1, -0x1.508p-1, -0x1.5f5p-1, -0x1.63f8p-1, -0x1.613p-1, -0x1.5738p-1, -0x1.457p-1, -0x1.2cbp-1, -0x1.0fb8p-1, -0x1.e2p-2, -0x1.a3ap-2, -0x1.65ep-2, -0x1.2acp-2, -0x1.e72p-3, -0x1.808p-3, -0x1.20ap-3, -0x1.8ecp-4, -0x1.d6p-5, -0x1.4dp-6, 0x1.e4p-7, 0x1.908p-5, 0x1.51cp-4, 0x1.d9p-4, 0x1.2ep-3, 0x1.6dp-3, 0x1.a94p-3, 0x1.e2ap-3, 0x1.0c9p-2, 0x1.267p-2, 0x1.3edp-2, 0x1.558p-2, 0x1.6a1p-2, 0x1.7c5p-2, 0x1.8c4p-2, 0x1.99fp-2, 0x1.a53p-2, 0x1.ae5p-2, 0x1.b5fp-2, 0x1.bc7p-2, 0x1.c21p-2, 0x1.c6ep-2, 0x1.cb3p-2, 0x1.cf3p-2, 0x1.d29p-2, 0x1.d51p-2, 0x1.d66p-2, 0x1.d62p-2, 0x1.d3bp-2, 0x1.ce2p-2, 0x1.c4ap-2, 0x1.b69p-2, 0x1.a2fp-2, 0x1.88ep-2, 0x1.67fp-2, 0x1.4p-2, 0x1.113p-2, 0x1.b8p-3, 0x1.42cp-3, 0x1.8ap-4, 0x1.09p-5} @@ -1234,7 +1234,7 @@ const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINA const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz = 0; const float CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA3_HRIR_coeff_re_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_HOA3_HRIR_coeff_re_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.f37p-1, 0x1.a5ap-1, 0x1.285p-1, 0x1.3eep-2, 0x1.248p-4, -0x1.e08p-4, -0x1.103p-2, -0x1.a03p-2, -0x1.12ep-1, -0x1.3508p-1, -0x1.235p-1, -0x1.c8cp-2, -0x1.db2p-3, 0x1.938p-4, 0x1.c8cp-2, 0x1.1408p-1, 0x1.c18p-3, -0x1.057p-2, -0x1.98ap-2, -0x1.53p-5, 0x1.e3ap-2, 0x1.63p-1, 0x1.1108p-1, 0x1.c12p-3, -0x1.e38p-5, -0x1.2a4p-2, -0x1.02fp-1, -0x1.5718p-1, -0x1.82f8p-1, -0x1.94e8p-1, -0x1.9e2p-1, -0x1.9d4p-1, -0x1.8e18p-1, -0x1.77a8p-1, -0x1.6178p-1, -0x1.4a48p-1, -0x1.3038p-1, -0x1.1628p-1, -0x1.fc4p-2, -0x1.cd7p-2, -0x1.9ebp-2, -0x1.728p-2, -0x1.48p-2, -0x1.1c7p-2, -0x1.e2ep-3, -0x1.932p-3, -0x1.46cp-3, -0x1.f3cp-4, -0x1.604p-4, -0x1.b3p-5, -0x1.6p-6, 0x1.5p-7, 0x1.4dp-5, 0x1.19cp-4, 0x1.884p-4, 0x1.f3p-4, 0x1.2ap-3, 0x1.55ap-3, 0x1.7f2p-3, 0x1.a66p-3, 0x1.c98p-3, 0x1.eap-3, 0x1.052p-2, 0x1.149p-2, 0x1.227p-2, 0x1.2f8p-2, 0x1.3c9p-2, 0x1.491p-2, 0x1.549p-2, 0x1.5fcp-2, 0x1.6b3p-2, 0x1.766p-2, 0x1.812p-2, 0x1.8bfp-2, 0x1.972p-2, 0x1.a25p-2, 0x1.ad5p-2, 0x1.b87p-2, 0x1.c39p-2, 0x1.cecp-2, 0x1.dap-2, 0x1.e5p-2, 0x1.eefp-2, 0x1.f81p-2, 0x1.0098p-1, 0x1.04f8p-1, 0x1.08a8p-1, 0x1.0bbp-1, 0x1.0e9p-1, 0x1.117p-1, 0x1.13c8p-1, 0x1.1548p-1, 0x1.1628p-1, 0x1.16bp-1, 0x1.1708p-1, 0x1.1738p-1, 0x1.1708p-1, 0x1.166p-1, 0x1.1588p-1, 0x1.1528p-1, 0x1.156p-1, 0x1.15d8p-1, 0x1.164p-1, 0x1.16c8p-1, 0x1.17bp-1, 0x1.194p-1, 0x1.1b7p-1, 0x1.1e08p-1, 0x1.20bp-1, 0x1.2338p-1, 0x1.25e8p-1, 0x1.2908p-1, 0x1.2c88p-1, 0x1.302p-1, 0x1.33ap-1, 0x1.36d8p-1, 0x1.39bp-1, 0x1.3c58p-1, 0x1.3f08p-1, 0x1.41b8p-1, 0x1.444p-1, 0x1.4678p-1, 0x1.4878p-1, 0x1.4a3p-1, 0x1.4bcp-1, 0x1.4d3p-1, 0x1.4e9p-1, 0x1.4fa8p-1, 0x1.5068p-1, 0x1.50ep-1, 0x1.511p-1, 0x1.511p-1, 0x1.5108p-1, 0x1.5108p-1, 0x1.5118p-1, 0x1.512p-1, 0x1.5128p-1, 0x1.5138p-1, 0x1.516p-1, 0x1.51ap-1, 0x1.523p-1, 0x1.5328p-1, 0x1.547p-1, 0x1.56p-1, 0x1.57c8p-1, 0x1.59cp-1, 0x1.5bc8p-1, 0x1.5de8p-1, 0x1.601p-1, 0x1.6238p-1, 0x1.6448p-1, 0x1.663p-1, 0x1.67ep-1, 0x1.695p-1, 0x1.6a7p-1, 0x1.6b5p-1, 0x1.6bfp-1, 0x1.6c5p-1, 0x1.6c88p-1, 0x1.6c98p-1, 0x1.6c88p-1, 0x1.6c7p-1, 0x1.6c5p-1, 0x1.6c48p-1, 0x1.6c58p-1, 0x1.6c9p-1, 0x1.6cf8p-1, 0x1.6d68p-1, 0x1.6dc8p-1, 0x1.6e2p-1, 0x1.6e78p-1, 0x1.6ebp-1, 0x1.6ec8p-1, 0x1.6eep-1, 0x1.6efp-1, 0x1.6ee8p-1, 0x1.6ed8p-1, 0x1.6efp-1, 0x1.6f18p-1, 0x1.6f48p-1, 0x1.6fb8p-1, 0x1.707p-1, 0x1.7158p-1, 0x1.725p-1, 0x1.739p-1, 0x1.7518p-1, 0x1.769p-1, 0x1.78p-1, 0x1.79bp-1, 0x1.7b7p-1, 0x1.7cd8p-1, 0x1.7e38p-1, @@ -1364,7 +1364,7 @@ const float CRendBin_HOA3_HRIR_coeff_re_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][ -0x1.c78p-5, -0x1.044p-4, -0x1.1bp-4, -0x1.2dcp-4, -0x1.4fcp-4, -0x1.768p-4, -0x1.83p-4, -0x1.854p-4, -0x1.ab4p-4, -0x1.dacp-4, -0x1.cacp-4, -0x1.a04p-4, -0x1.d84p-4, -0x1.288p-3, -0x1.13cp-3, -0x1.168p-4, -0x1.6p-7, -0x1.58p-6, -0x1.f98p-5, -0x1.188p-4, -0x1.e5p-5, -0x1.728p-4, -0x1.148p-3, -0x1.b5p-4, -0x1.54p-8, 0x1.108p-4, 0x1.a3p-5, 0x1.38p-7, 0x1.86p-7, 0x1.57p-5, 0x1.c78p-5, 0x1.f88p-5, 0x1.414p-4, 0x1.308p-4, 0x1.1fp-6, -0x1.938p-5, -0x1.b5p-5, 0x1.acp-8, 0x1.018p-4, 0x1.32cp-4, 0x1.114p-4, 0x1.1f8p-4, 0x1.488p-4, 0x1.58cp-4, 0x1.938p-4, 0x1.2f4p-3, 0x1.cbp-3, 0x1.212p-2} } }; -const float CRendBin_HOA3_HRIR_coeff_im_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]={ +const float CRendBin_HOA3_HRIR_coeff_im_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.6a4p-3, -0x1.efcp-2, -0x1.5cfp-1, -0x1.8508p-1, -0x1.7c9p-1, -0x1.57e8p-1, -0x1.2abp-1, -0x1.e9dp-2, -0x1.468p-2, -0x1.864p-4, 0x1.26p-3, 0x1.6a9p-2, 0x1.0b78p-1, 0x1.25b8p-1, 0x1.78p-2, -0x1.414p-4, -0x1.bcep-2, -0x1.602p-2, 0x1.fep-4, 0x1.f1ep-2, 0x1.7dcp-2, -0x1.7cp-4, -0x1.0cdp-1, -0x1.71ep-1, -0x1.8228p-1, -0x1.72ep-1, -0x1.468p-1, -0x1.f0dp-2, -0x1.406p-2, -0x1.4fep-3, -0x1.088p-5, 0x1.9p-4, 0x1.b84p-3, 0x1.3adp-2, 0x1.882p-2, 0x1.cdep-2, 0x1.0498p-1, 0x1.1bcp-1, 0x1.2f18p-1, 0x1.4078p-1, 0x1.4f08p-1, 0x1.5b2p-1, 0x1.664p-1, 0x1.6ffp-1, 0x1.76f8p-1, 0x1.7c38p-1, 0x1.81p-1, 0x1.84ap-1, 0x1.865p-1, 0x1.872p-1, 0x1.87e8p-1, 0x1.87e8p-1, 0x1.8688p-1, 0x1.8488p-1, 0x1.824p-1, 0x1.7f1p-1, 0x1.7b18p-1, 0x1.7728p-1, 0x1.7358p-1, 0x1.6f28p-1, 0x1.6ae8p-1, 0x1.6718p-1, 0x1.638p-1, 0x1.5f98p-1, 0x1.5bbp-1, 0x1.584p-1, 0x1.54f8p-1, 0x1.5188p-1, 0x1.4e4p-1, 0x1.4b6p-1, 0x1.48ap-1, 0x1.45c8p-1, 0x1.4318p-1, 0x1.4098p-1, 0x1.3e08p-1, 0x1.3b58p-1, 0x1.3898p-1, 0x1.35cp-1, 0x1.32cp-1, 0x1.2f98p-1, 0x1.2c18p-1, 0x1.2818p-1, 0x1.23cp-1, 0x1.1f78p-1, 0x1.1b28p-1, 0x1.1658p-1, 0x1.1138p-1, 0x1.0c48p-1, 0x1.07a8p-1, 0x1.02d8p-1, 0x1.fb5p-2, 0x1.f1p-2, 0x1.e79p-2, 0x1.df2p-2, 0x1.d79p-2, 0x1.d07p-2, 0x1.c9cp-2, 0x1.c43p-2, 0x1.c07p-2, 0x1.be5p-2, 0x1.bccp-2, 0x1.bbp-2, 0x1.b9ap-2, 0x1.b92p-2, 0x1.b99p-2, 0x1.ba5p-2, 0x1.baep-2, 0x1.baap-2, 0x1.b99p-2, 0x1.b85p-2, 0x1.b76p-2, 0x1.b66p-2, 0x1.b48p-2, 0x1.b19p-2, 0x1.adbp-2, 0x1.a91p-2, 0x1.a43p-2, 0x1.9f7p-2, 0x1.9abp-2, 0x1.958p-2, 0x1.8fcp-2, 0x1.89cp-2, 0x1.83ap-2, 0x1.7d9p-2, 0x1.779p-2, 0x1.71bp-2, 0x1.6bbp-2, 0x1.657p-2, 0x1.5f3p-2, 0x1.595p-2, 0x1.53ep-2, 0x1.4fp-2, 0x1.4adp-2, 0x1.472p-2, 0x1.43cp-2, 0x1.40ap-2, 0x1.3ep-2, 0x1.3bcp-2, 0x1.39ep-2, 0x1.38ap-2, 0x1.37fp-2, 0x1.375p-2, 0x1.36ap-2, 0x1.35ap-2, 0x1.346p-2, 0x1.329p-2, 0x1.306p-2, 0x1.2dcp-2, 0x1.2aap-2, 0x1.26fp-2, 0x1.22bp-2, 0x1.1dfp-2, 0x1.18dp-2, 0x1.136p-2, 0x1.0dep-2, 0x1.086p-2, 0x1.02fp-2, 0x1.fb8p-3, 0x1.f1cp-3, 0x1.e8ap-3, 0x1.e02p-3, 0x1.d8ap-3, 0x1.d2p-3, 0x1.ccp-3, 0x1.c6ap-3, 0x1.c1ap-3, 0x1.bc8p-3, 0x1.b6ep-3, 0x1.b1p-3, 0x1.ab2p-3, 0x1.a52p-3, 0x1.9f2p-3, 0x1.998p-3, 0x1.944p-3, 0x1.8f4p-3, 0x1.8a8p-3, 0x1.86ep-3, 0x1.83ep-3, 0x1.81p-3, 0x1.7eep-3, 0x1.7dap-3, 0x1.7c6p-3, 0x1.7a8p-3, 0x1.78cp-3, 0x1.77p-3, 0x1.744p-3, 0x1.706p-3, 0x1.6c8p-3, 0x1.684p-3, 0x1.626p-3, 0x1.5bap-3, 0x1.55cp-3, @@ -1506,7 +1506,7 @@ const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINA const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz = 0; const float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA3_HRIR_coeff_re_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_HOA3_HRIR_coeff_re_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {0x1.e1e8p-1, 0x1.9418p-1, 0x1.16c8p-1, 0x1.1bdp-2, 0x1.3p-5, -0x1.36ap-3, -0x1.338p-2, -0x1.c3bp-2, -0x1.24bp-1, -0x1.46fp-1, -0x1.354p-1, -0x1.ec8p-2, -0x1.112p-2, 0x1.07p-4, 0x1.a61p-2, 0x1.02c8p-1, 0x1.7bcp-3, -0x1.28dp-2, -0x1.bc1p-2, -0x1.35p-4, 0x1.c15p-2, 0x1.51f8p-1, 0x1.fffp-2, 0x1.7cap-3, -0x1.7acp-4, -0x1.4c8p-2, -0x1.14p-1, -0x1.681p-1, -0x1.93ep-1, -0x1.a5cp-1, -0x1.aeep-1, -0x1.adf8p-1, -0x1.9ecp-1, -0x1.885p-1, -0x1.721p-1, -0x1.5aep-1, -0x1.40c8p-1, -0x1.26b8p-1, -0x1.0ea8p-1, -0x1.ee6p-2, -0x1.bf9p-2, -0x1.934p-2, -0x1.689p-2, -0x1.3cdp-2, -0x1.119p-2, -0x1.d2ep-3, -0x1.86p-3, -0x1.388p-3, -0x1.dc4p-4, -0x1.544p-4, -0x1.a3p-5, -0x1.38p-6, 0x1.7ep-7, 0x1.48p-5, 0x1.14p-4, 0x1.7fcp-4, 0x1.e1cp-4, 0x1.1dp-3, 0x1.472p-3, 0x1.6ecp-3, 0x1.926p-3, 0x1.b36p-3, 0x1.d4p-3, 0x1.f34p-3, 0x1.07dp-2, 0x1.151p-2, 0x1.226p-2, 0x1.2f3p-2, 0x1.3bp-2, 0x1.467p-2, 0x1.523p-2, 0x1.5dbp-2, 0x1.68dp-2, 0x1.741p-2, 0x1.7fbp-2, 0x1.8b4p-2, 0x1.96dp-2, 0x1.a26p-2, 0x1.aep-2, 0x1.b9cp-2, 0x1.c59p-2, 0x1.d11p-2, 0x1.db8p-2, 0x1.e53p-2, 0x1.eeep-2, 0x1.f82p-2, 0x1.0008p-1, 0x1.0358p-1, 0x1.068p-1, 0x1.0998p-1, 0x1.0c38p-1, 0x1.0ep-1, 0x1.0f18p-1, 0x1.0fep-1, 0x1.108p-1, 0x1.10f8p-1, 0x1.1118p-1, 0x1.10c8p-1, 0x1.1048p-1, 0x1.104p-1, 0x1.10d8p-1, 0x1.11bp-1, 0x1.1288p-1, 0x1.1378p-1, 0x1.14d8p-1, 0x1.16ep-1, 0x1.199p-1, 0x1.1ca8p-1, 0x1.1fd8p-1, 0x1.22fp-1, 0x1.263p-1, 0x1.29ep-1, 0x1.2df8p-1, 0x1.323p-1, 0x1.3648p-1, 0x1.3a2p-1, 0x1.3d98p-1, 0x1.40ep-1, 0x1.443p-1, 0x1.4788p-1, 0x1.4acp-1, 0x1.4db8p-1, 0x1.5068p-1, 0x1.52fp-1, 0x1.5558p-1, 0x1.57b8p-1, 0x1.5a08p-1, 0x1.5c38p-1, 0x1.5e2p-1, 0x1.5fdp-1, 0x1.6158p-1, 0x1.62d8p-1, 0x1.646p-1, 0x1.661p-1, 0x1.67e8p-1, 0x1.69d8p-1, 0x1.6bep-1, 0x1.6e08p-1, 0x1.7058p-1, 0x1.72fp-1, 0x1.75e8p-1, 0x1.7948p-1, 0x1.7d08p-1, 0x1.8108p-1, 0x1.8538p-1, 0x1.899p-1, 0x1.8df8p-1, 0x1.925p-1, 0x1.9688p-1, 0x1.9a9p-1, 0x1.9e48p-1, 0x1.a1ap-1, 0x1.a488p-1, 0x1.a7p-1, 0x1.a9p-1, 0x1.aa98p-1, 0x1.abep-1, 0x1.acdp-1, 0x1.ad78p-1, 0x1.adcp-1}, @@ -1604,7 +1604,7 @@ const float CRendBin_HOA3_HRIR_coeff_re_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][ -0x1.64p-6, -0x1.81p-6, -0x1.b7p-6, -0x1.fdp-6, -0x1.31p-5, -0x1.7ap-5, -0x1.d58p-5, -0x1.19p-4, -0x1.3ep-4, -0x1.54cp-4, -0x1.5dcp-4, -0x1.5ep-4, -0x1.598p-4, -0x1.504p-4, -0x1.3fp-4, -0x1.234p-4, -0x1.fc8p-5, -0x1.a8p-5, -0x1.52p-5, -0x1.ffp-6, -0x1.64p-6, -0x1.96p-7, -0x1.7p-9, 0x1.dcp-8, 0x1.23p-6, 0x1.cfp-6, 0x1.3ep-5, 0x1.958p-5, 0x1.fp-5, 0x1.254p-4, 0x1.51p-4, 0x1.78cp-4, 0x1.9b4p-4, 0x1.b7cp-4, 0x1.cecp-4, 0x1.e1cp-4, 0x1.f2p-4, 0x1.008p-3, 0x1.07ep-3, 0x1.0fap-3, 0x1.18cp-3, 0x1.23ap-3, 0x1.30cp-3, 0x1.408p-3, 0x1.532p-3, 0x1.68ap-3, 0x1.7fep-3, 0x1.98p-3, 0x1.b02p-3, 0x1.c6cp-3, 0x1.da8p-3, 0x1.ea4p-3, 0x1.f6p-3, 0x1.fdcp-3, 0x1.00fp-2, 0x1.014p-2, 0x1.004p-2, 0x1.fcap-3, 0x1.f78p-3, 0x1.f1ap-3, 0x1.eb8p-3, 0x1.e6p-3, 0x1.e1ep-3, 0x1.dfap-3} } }; -const float CRendBin_HOA3_HRIR_coeff_im_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]={ +const float CRendBin_HOA3_HRIR_coeff_im_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { {-0x1.6acp-3, -0x1.f08p-2, -0x1.5d98p-1, -0x1.86p-1, -0x1.7dc8p-1, -0x1.597p-1, -0x1.2c7p-1, -0x1.eddp-2, -0x1.4aep-2, -0x1.994p-4, 0x1.1c2p-3, 0x1.656p-2, 0x1.08c8p-1, 0x1.22ep-1, 0x1.71bp-2, -0x1.5e8p-4, -0x1.c51p-2, -0x1.68ap-2, 0x1.dc8p-4, 0x1.e98p-2, 0x1.74cp-2, -0x1.a38p-4, -0x1.1228p-1, -0x1.7778p-1, -0x1.87fp-1, -0x1.78e8p-1, -0x1.4cb8p-1, -0x1.fdbp-2, -0x1.4dcp-2, -0x1.6bap-3, -0x1.7cp-5, 0x1.54p-4, 0x1.992p-3, 0x1.2abp-2, 0x1.778p-2, 0x1.bccp-2, 0x1.f7ap-2, 0x1.12b8p-1, 0x1.25ep-1, 0x1.3708p-1, 0x1.456p-1, 0x1.5148p-1, 0x1.5c38p-1, 0x1.65b8p-1, 0x1.6c9p-1, 0x1.71ap-1, 0x1.763p-1, 0x1.7998p-1, 0x1.7b08p-1, 0x1.7b98p-1, 0x1.7c2p-1, 0x1.7bd8p-1, 0x1.7a3p-1, 0x1.77e8p-1, 0x1.755p-1, 0x1.71d8p-1, 0x1.6d9p-1, 0x1.695p-1, 0x1.653p-1, 0x1.60b8p-1, 0x1.5c28p-1, 0x1.581p-1, 0x1.5428p-1, 0x1.4ff8p-1, 0x1.4bc8p-1, 0x1.481p-1, 0x1.4488p-1, 0x1.40dp-1, 0x1.3d48p-1, 0x1.3a2p-1, 0x1.3728p-1, 0x1.341p-1, 0x1.312p-1, 0x1.2e6p-1, 0x1.2b9p-1, 0x1.28ap-1, 0x1.2598p-1, 0x1.2278p-1, 0x1.1f3p-1, 0x1.1bcp-1, 0x1.17fp-1, 0x1.1398p-1, 0x1.0efp-1, 0x1.0a5p-1, 0x1.05a8p-1, 0x1.008p-1, 0x1.f6p-2, 0x1.eb7p-2, 0x1.e17p-2, 0x1.d71p-2, 0x1.ccp-2, 0x1.c0fp-2, 0x1.b6dp-2, 0x1.adcp-2, 0x1.a58p-2, 0x1.9dcp-2, 0x1.967p-2, 0x1.904p-2, 0x1.8bep-2, 0x1.892p-2, 0x1.86fp-2, 0x1.84ap-2, 0x1.829p-2, 0x1.817p-2, 0x1.813p-2, 0x1.814p-2, 0x1.812p-2, 0x1.802p-2, 0x1.7e5p-2, 0x1.7c5p-2, 0x1.7a9p-2, 0x1.78bp-2, 0x1.76p-2, 0x1.723p-2, 0x1.6d5p-2, 0x1.67dp-2, 0x1.61fp-2, 0x1.5c4p-2, 0x1.569p-2, 0x1.508p-2, 0x1.49ep-2, 0x1.43p-2, 0x1.3cp-2, 0x1.352p-2, 0x1.2e6p-2, 0x1.27cp-2, 0x1.20fp-2, 0x1.19fp-2, 0x1.12fp-2, 0x1.0c3p-2, 0x1.05fp-2, 0x1.001p-2, 0x1.f58p-3, 0x1.eb8p-3, 0x1.e1ep-3, 0x1.d84p-3, 0x1.cfp-3, 0x1.c62p-3, 0x1.bdap-3, 0x1.b58p-3, 0x1.ad8p-3, 0x1.a4ep-3, 0x1.9bp-3, 0x1.8fcp-3, 0x1.82ep-3, 0x1.744p-3, 0x1.638p-3, 0x1.50cp-3, 0x1.3cp-3, 0x1.258p-3, 0x1.0dp-3, 0x1.e5cp-4, 0x1.af8p-4, 0x1.774p-4, 0x1.3e4p-4, 0x1.04cp-4, 0x1.968p-5, 0x1.23p-5, 0x1.5dp-6, 0x1.dp-8}, @@ -1714,7 +1714,7 @@ const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINA const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz = 0; const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0},{0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}}; const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float CRendBin_HOA3_HRIR_coeff_re_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_HOA3_HRIR_coeff_re_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { 0x1.c8d8p-1, 0x1.7b1p-1, 0x1.fb9p-2, 0x1.d3ap-3, -0x1.8p-7, -0x1.9a8p-3, -0x1.656p-2, -0x1.f56p-2, -0x1.3d68p-1, -0x1.5f6p-1, -0x1.4d6p-1, -0x1.0e1p-1, -0x1.404p-2, 0x1.2ep-6, 0x1.774p-2, 0x1.d73p-2, 0x1.20ep-3, -0x1.554p-2, -0x1.e7dp-2, -0x1.e3p-4, 0x1.965p-2, 0x1.3cfp-1, 0x1.d6cp-2, 0x1.2b8p-3, -0x1.0d4p-3, -0x1.738p-2, -0x1.2708p-1, -0x1.7a9p-1, -0x1.a5cp-1, -0x1.b6e8p-1, -0x1.bf68p-1, -0x1.bdep-1, -0x1.ae08p-1, -0x1.96e8p-1, -0x1.8p-1, -0x1.681p-1, -0x1.4d2p-1, -0x1.3218p-1, -0x1.19p-1, -0x1.0068p-1, -0x1.cf9p-2, -0x1.a0dp-2, -0x1.73bp-2, -0x1.458p-2, -0x1.17cp-2, -0x1.da6p-3, -0x1.888p-3, -0x1.35ep-3, -0x1.cbcp-4, -0x1.38p-4, -0x1.4f8p-5, -0x1.5cp-8, 0x1.e1p-6, 0x1.fcp-5, 0x1.81p-4, 0x1.006p-3, 0x1.3bep-3, 0x1.72ep-3, 0x1.a86p-3, 0x1.dc2p-3, 0x1.066p-2, 0x1.1ep-2, 0x1.366p-2, 0x1.4f4p-2, 0x1.682p-2, 0x1.81ep-2, 0x1.9dcp-2, 0x1.bb3p-2, 0x1.d9dp-2, 0x1.fa3p-2, 0x1.0e3p-1, 0x1.1fbp-1, 0x1.313p-1, 0x1.427p-1, 0x1.52ep-1, 0x1.61cp-1, 0x1.6e88p-1, 0x1.78c8p-1, 0x1.7ffp-1, 0x1.8388p-1}, { 0x1.c8d8p-1, 0x1.7b1p-1, 0x1.fb9p-2, 0x1.d3ap-3, -0x1.8p-7, -0x1.9a8p-3, -0x1.656p-2, -0x1.f56p-2, -0x1.3d68p-1, -0x1.5f6p-1, -0x1.4d6p-1, -0x1.0e1p-1, -0x1.404p-2, 0x1.2ep-6, 0x1.774p-2, 0x1.d73p-2, 0x1.20ep-3, -0x1.554p-2, -0x1.e7dp-2, -0x1.e3p-4, 0x1.965p-2, 0x1.3cfp-1, 0x1.d6cp-2, 0x1.2b8p-3, -0x1.0d4p-3, -0x1.738p-2, -0x1.2708p-1, -0x1.7a9p-1, -0x1.a5cp-1, -0x1.b6e8p-1, -0x1.bf68p-1, -0x1.bdep-1, -0x1.ae08p-1, -0x1.96e8p-1, -0x1.8p-1, -0x1.681p-1, -0x1.4d2p-1, -0x1.3218p-1, -0x1.19p-1, -0x1.0068p-1, -0x1.cf9p-2, -0x1.a0dp-2, -0x1.73bp-2, -0x1.458p-2, -0x1.17cp-2, -0x1.da6p-3, -0x1.888p-3, -0x1.35ep-3, -0x1.cbcp-4, -0x1.38p-4, -0x1.4f8p-5, -0x1.5cp-8, 0x1.e1p-6, 0x1.fcp-5, 0x1.81p-4, 0x1.006p-3, 0x1.3bep-3, 0x1.72ep-3, 0x1.a86p-3, 0x1.dc2p-3, 0x1.066p-2, 0x1.1ep-2, 0x1.366p-2, 0x1.4f4p-2, 0x1.682p-2, 0x1.81ep-2, 0x1.9dcp-2, 0x1.bb3p-2, 0x1.d9dp-2, 0x1.fa3p-2, 0x1.0e3p-1, 0x1.1fbp-1, 0x1.313p-1, 0x1.427p-1, 0x1.52ep-1, 0x1.61cp-1, 0x1.6e88p-1, 0x1.78c8p-1, 0x1.7ffp-1, 0x1.8388p-1} @@ -1780,7 +1780,7 @@ const float CRendBin_HOA3_HRIR_coeff_re_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][ { -0x1.d8p-7, -0x1.cp-7, -0x1.9ep-7, -0x1.8p-7, -0x1.b6p-7, -0x1.49p-6, -0x1.b8p-6, -0x1.3ep-6, 0x1.04p-8, 0x1.44p-7, -0x1.44p-5, -0x1.d7cp-4, -0x1.e24p-4, 0x1.dp-9, 0x1.30ep-3, 0x1.3cep-3, -0x1.04p-8, -0x1.512p-3, -0x1.524p-3, -0x1.d5p-6, 0x1.708p-4, 0x1.88cp-4, 0x1.ep-6, -0x1.cep-6, -0x1.83p-5, -0x1.49p-5, -0x1.03p-6, 0x1.6dp-6, 0x1.f2p-5, 0x1.5acp-4, 0x1.78p-4, 0x1.6bcp-4, 0x1.49p-4, 0x1.20cp-4, 0x1.09cp-4, 0x1.068p-4, 0x1.f6p-5, 0x1.9a8p-5, 0x1.fp-6, 0x1.48p-8, -0x1.73p-6, -0x1.92p-5, -0x1.1fcp-4, -0x1.59p-4, -0x1.78p-4, -0x1.818p-4, -0x1.7bp-4, -0x1.6d4p-4, -0x1.614p-4, -0x1.5a8p-4, -0x1.58cp-4, -0x1.5d8p-4, -0x1.694p-4, -0x1.784p-4, -0x1.858p-4, -0x1.8ep-4, -0x1.9p-4, -0x1.8b8p-4, -0x1.834p-4, -0x1.7cp-4, -0x1.784p-4, -0x1.798p-4, -0x1.814p-4, -0x1.908p-4, -0x1.a58p-4, -0x1.bbcp-4, -0x1.d14p-4, -0x1.e6p-4, -0x1.f84p-4, -0x1.034p-3, -0x1.084p-3, -0x1.0b8p-3, -0x1.0cap-3, -0x1.0aap-3, -0x1.064p-3, -0x1.018p-3, -0x1.fb4p-4, -0x1.f3cp-4, -0x1.eb4p-4, -0x1.e4cp-4} } }; -const float CRendBin_HOA3_HRIR_coeff_im_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]={ +const float CRendBin_HOA3_HRIR_coeff_im_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={ { { -0x1.6cap-3, -0x1.f35p-2, -0x1.5ffp-1, -0x1.895p-1, -0x1.8208p-1, -0x1.5e98p-1, -0x1.3278p-1, -0x1.fb8p-2, -0x1.5a3p-2, -0x1.ddp-4, 0x1.edp-4, 0x1.509p-2, 0x1.fa9p-2, 0x1.1648p-1, 0x1.56ap-2, -0x1.d08p-4, -0x1.e33p-2, -0x1.88fp-2, 0x1.51cp-4, 0x1.c4bp-2, 0x1.4e3p-2, -0x1.22ap-3, -0x1.277p-1, -0x1.8ddp-1, -0x1.9f48p-1, -0x1.912p-1, -0x1.65ep-1, -0x1.18f8p-1, -0x1.83fp-2, -0x1.dc2p-3, -0x1.a8p-4, 0x1.85p-6, 0x1.1b8p-3, 0x1.d38p-3, 0x1.347p-2, 0x1.77bp-2, 0x1.b09p-2, 0x1.dc6p-2, 0x1.0048p-1, 0x1.1058p-1, 0x1.1d8p-1, 0x1.2818p-1, 0x1.31bp-1, 0x1.39dp-1, 0x1.3f38p-1, 0x1.42d8p-1, 0x1.4608p-1, 0x1.4818p-1, 0x1.4838p-1, 0x1.4788p-1, 0x1.46d8p-1, 0x1.455p-1, 0x1.426p-1, 0x1.3eb8p-1, 0x1.3aa8p-1, 0x1.3598p-1, 0x1.2fap-1, 0x1.29bp-1, 0x1.23dp-1, 0x1.1d9p-1, 0x1.175p-1, 0x1.11ap-1, 0x1.0c38p-1, 0x1.0678p-1, 0x1.00b8p-1, 0x1.f66p-2, 0x1.eabp-2, 0x1.dd3p-2, 0x1.cep-2, 0x1.bcdp-2, 0x1.a84p-2, 0x1.8f7p-2, 0x1.722p-2, 0x1.5p-2, 0x1.285p-2, 0x1.f68p-3, 0x1.92cp-3, 0x1.26ap-3, 0x1.67p-4, 0x1.e2p-6}, { -0x1.6cap-3, -0x1.f35p-2, -0x1.5ffp-1, -0x1.895p-1, -0x1.8208p-1, -0x1.5e98p-1, -0x1.3278p-1, -0x1.fb8p-2, -0x1.5a3p-2, -0x1.ddp-4, 0x1.edp-4, 0x1.509p-2, 0x1.fa9p-2, 0x1.1648p-1, 0x1.56ap-2, -0x1.d08p-4, -0x1.e33p-2, -0x1.88fp-2, 0x1.51cp-4, 0x1.c4bp-2, 0x1.4e3p-2, -0x1.22ap-3, -0x1.277p-1, -0x1.8ddp-1, -0x1.9f48p-1, -0x1.912p-1, -0x1.65ep-1, -0x1.18f8p-1, -0x1.83fp-2, -0x1.dc2p-3, -0x1.a8p-4, 0x1.85p-6, 0x1.1b8p-3, 0x1.d38p-3, 0x1.347p-2, 0x1.77bp-2, 0x1.b09p-2, 0x1.dc6p-2, 0x1.0048p-1, 0x1.1058p-1, 0x1.1d8p-1, 0x1.2818p-1, 0x1.31bp-1, 0x1.39dp-1, 0x1.3f38p-1, 0x1.42d8p-1, 0x1.4608p-1, 0x1.4818p-1, 0x1.4838p-1, 0x1.4788p-1, 0x1.46d8p-1, 0x1.455p-1, 0x1.426p-1, 0x1.3eb8p-1, 0x1.3aa8p-1, 0x1.3598p-1, 0x1.2fap-1, 0x1.29bp-1, 0x1.23dp-1, 0x1.1d9p-1, 0x1.175p-1, 0x1.11ap-1, 0x1.0c38p-1, 0x1.0678p-1, 0x1.00b8p-1, 0x1.f66p-2, 0x1.eabp-2, 0x1.dd3p-2, 0x1.cep-2, 0x1.bcdp-2, 0x1.a84p-2, 0x1.8f7p-2, 0x1.722p-2, 0x1.5p-2, 0x1.285p-2, 0x1.f68p-3, 0x1.92cp-3, 0x1.26ap-3, 0x1.67p-4, 0x1.e2p-6} @@ -7265,6 +7265,7 @@ const float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0, 0x0p+0}; + /* Sample Rate = 32000 */ const float defaultHRIR_coherence_32kHz[LR_IAC_LENGTH_NR_FC] = @@ -7360,6 +7361,7 @@ const float defaultHRIR_right_avg_power_32kHz[LR_IAC_LENGTH_NR_FC] = 0x1.5a38p-1, 0x1.598p-1, 0x1.58dp-1, 0x1.5858p-1, 0x1.5808p-1, 0x1.57c8p-1, 0x1.5768p-1, 0x1.56ep-1, 0x1.564p-1, 0x1.55b8p-1, 0x1.557p-1, 0x1.557p-1, 0x1.559p-1, 0x1.55ap-1}; + /* Sample Rate = 16000 */ const float defaultHRIR_coherence_16kHz[LR_IAC_LENGTH_NR_FC_16KHZ] = diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index f9f080dc1d7657dfd7dc4775b07ed76827937949..ee7a456329a40ea37bf069879d902363b295d628 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -51,7 +51,7 @@ /********************** CRendBin_Combined_HRIR **********************/ -extern float CRendBin_Combined_HRIR_latency_s; +extern const float CRendBin_Combined_HRIR_latency_s; /* Sample Rate = 48000 */ @@ -99,7 +99,7 @@ extern const float *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANN /********************** CRendBin_FOA_HRIR **********************/ -extern float CRendBin_FOA_HRIR_latency_s; +extern const float CRendBin_FOA_HRIR_latency_s; /* Sample Rate = 48000 */ @@ -243,7 +243,7 @@ extern const float *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS] /********************** CRendBin_Combined_BRIR **********************/ -extern float CRendBin_Combined_BRIR_latency_s; +extern const float CRendBin_Combined_BRIR_latency_s; /* Sample Rate = 48000 */ diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index f24ff2ca3fef3645dd8ca245c89225ee5a2330b5..eaa1dcad36c0fe3d611bf91b85fe657afa4b34df 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -1157,7 +1157,11 @@ typedef struct * Crend structures *------------------------------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +typedef struct ivas_hrtf_crend_structure +#else typedef struct ivas_hrtfs_structure +#endif { const float *pOut_to_bin_re[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; const float *pOut_to_bin_im[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; @@ -1181,8 +1185,12 @@ typedef struct ivas_hrtfs_structure float *pOut_to_bin_diffuse_im_dyn[BINAURAL_CHANNELS]; uint16_t *pIndex_frequency_max_dyn[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS]; uint16_t *pIndex_frequency_max_diffuse_dyn[BINAURAL_CHANNELS]; -} HRTFS_DATA, *HRTFS_HANDLE; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +} HRTFS_DATA, *HRTFS_HANDLE, HRTFS_CREND_DATA, *HRTFS_CREND_HANDLE; // VE: all instance of HRTFS_DATAand *HRTFS_HANDLE should be renamed to HRTFS_CREND_DATA and *HRTFS_CREND_HANDLE +#else +} HRTFS_DATA, *HRTFS_HANDLE; +#endif /* Main Crend structure */ typedef struct ivas_crend_state_t @@ -1244,6 +1252,7 @@ typedef struct ivas_binaural_rendering_struct * HRTF structures - hrtfs from binary files *------------------------------------------------------------------------------------------*/ +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM typedef struct ivas_hrtfs_crend_structure { HRTFS_DATA *hHRTF_hrir_combined; @@ -1254,6 +1263,7 @@ typedef struct ivas_hrtfs_crend_structure } HRTFS_CREND, *HRTFS_CREND_HANDLE; +#endif /* Fastconv binaural data structure */ typedef struct ivas_hrtfs_fastconv_struct { diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 7cb6c6725759d047230dc50d295e66410914e0df..e9a13a9aa0e7ab41ea4ab7c24812823b34bba373 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -1367,7 +1367,11 @@ static ivas_error setRendInputActiveIsm( } else if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, 1, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -2139,8 +2143,13 @@ static ivas_error initMcBinauralRendering( else if ( !useTDRend && inputMc->crendWrapper == NULL ) { /* open CREND */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, + outSampleRate, 1, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -2538,7 +2547,11 @@ static ivas_error updateSbaPanGains( } else { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, 1, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -2550,7 +2563,11 @@ static ivas_error updateSbaPanGains( return error; } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, 1, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#else if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper != NULL ? rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ) != IVAS_ERR_OK ) +#endif { return error; } diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index f8816b75e9c0506bc092df544433bff01a0d2b81..ac74c6c49a61c1136d99c47aa31d71346e27ca08 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -292,7 +292,7 @@ static BINAURAL_INPUT_AUDIO_CONFIG audio_cfg_2_binaural_cfg( /*-------------------------------------------------------------------* * LoadBSplineBinaryITD() * - * Loads the B Spline HR filter model ITD data from file. + * Loads the B Spline HR filter model ITD data from file for TD renderer --------------------------------------------------------------------*/ static ivas_error LoadBSplineBinaryITD( @@ -447,7 +447,7 @@ static ivas_error LoadBSplineBinaryITD( /*-------------------------------------------------------------------* * LoadBSplineBinary() * - * Loads the B Spline HR filter model data from file. + * Loads the B Spline HR filter model data from file for TD renderer --------------------------------------------------------------------*/ static ivas_error LoadBSplineBinary( @@ -735,7 +735,7 @@ static ivas_error LoadBSplineBinary( /*-------------------------------------------------------------------* * load_reverb_from_binary() * - * Loads reverb data from file. + * Loads reverb data from file for TD and Crend renderers --------------------------------------------------------------------*/ static ivas_error load_reverb_from_binary( @@ -863,7 +863,7 @@ static ivas_error load_reverb_from_binary( /*---------------------------------------------------------------------* * load_reverb_binary() * - * Load HRTF binary data into the HRTF handle + * Load HRTF binary data into the HRTF handle for TD and Crend renderers *---------------------------------------------------------------------*/ ivas_error load_reverb_binary( @@ -886,7 +886,7 @@ ivas_error load_reverb_binary( /*-------------------------------------------------------------------* * TDREND_MIX_LoadHRTF() * - * Load HRTF model or table from file + * Load HRTF model or table from file for TD renderer --------------------------------------------------------------------*/ static ivas_error TDREND_MIX_LoadHRTF( @@ -1004,7 +1004,7 @@ static ivas_error TDREND_MIX_LoadHRTF( /*---------------------------------------------------------------------* * load_HRTF_binary() * - * Load HRTF binary data into the HRTF handle + * Load HRTF binary data into the HRTF handle for TD renderer *---------------------------------------------------------------------*/ ivas_error load_HRTF_binary( @@ -1026,7 +1026,7 @@ ivas_error load_HRTF_binary( /*---------------------------------------------------------------------* * destroy_td_hrtf() * - * Deallocated memory allocated by load_HRTF_binary + * Deallocated memory allocated by load_HRTF_binary for TD renderer *---------------------------------------------------------------------*/ void destroy_td_hrtf( @@ -1094,12 +1094,16 @@ void destroy_td_hrtf( /*---------------------------------------------------------------------* - * create_HRTF_from_rawdata() + * create_Crend_HRTF_from_rawdata() * * Create HRTF from the raw data (to the HRTF CRend handle) *---------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +static ivas_error create_Crend_HRTF_from_rawdata( +#else static ivas_error create_HRTF_from_rawdata( +#endif HRTFS_HANDLE *hHRTF, /* i/o: HRTF CRend handle */ char *hrtf_data /* i : pointer to binary file */ ) @@ -1107,12 +1111,17 @@ static ivas_error create_HRTF_from_rawdata( int16_t i, j, k; int16_t max_num_iterations_diffuse; uint32_t max_total_num_fsamp_per_iteration, max_total_num_fsamp_per_iteration_diff; +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + uint32_t mem_size, mem_size_buf, l; +#else uint32_t mem_size, l; +#endif char *hrtf_data_rptr; float *pOut_to_bin_wptr; ivas_error error; Word16 factorQ; +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM if ( *hHRTF == NULL ) { if ( ( ( *hHRTF ) = (HRTFS_HANDLE) malloc( sizeof( HRTFS_DATA ) ) ) == NULL ) @@ -1129,6 +1138,7 @@ static ivas_error create_HRTF_from_rawdata( { return IVAS_ERR_INTERNAL; } +#endif if ( hrtf_data == NULL ) { @@ -1171,17 +1181,28 @@ static ivas_error create_HRTF_from_rawdata( } } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + mem_size = ( *hHRTF )->max_num_iterations * sizeof( uint16_t ); + +#endif /* pIndex_frequency_max */ for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_uint16( &( *hHRTF )->pIndex_frequency_max_dyn[i][j], mem_size ) ) != IVAS_ERR_OK ) + { + return error; + } +#else mem_size = ( *hHRTF )->max_num_iterations * sizeof( uint16_t ); ( *hHRTF )->pIndex_frequency_max_dyn[i][j] = (uint16_t *) malloc( mem_size ); if ( ( *hHRTF )->pIndex_frequency_max_dyn[i][j] == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for pIndex_frequency_max" ); } +#endif memcpy( ( *hHRTF )->pIndex_frequency_max_dyn[i][j], hrtf_data_rptr, mem_size ); ( *hHRTF )->pIndex_frequency_max[i][j] = ( *hHRTF )->pIndex_frequency_max_dyn[i][j]; hrtf_data_rptr += mem_size; @@ -1205,11 +1226,18 @@ static ivas_error create_HRTF_from_rawdata( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { mem_size = ( *hHRTF )->num_iterations_diffuse[j] * sizeof( uint16_t ); +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_uint16( &( *hHRTF )->pIndex_frequency_max_diffuse_dyn[j], mem_size ) ) != IVAS_ERR_OK ) + { + return error; + } +#else ( *hHRTF )->pIndex_frequency_max_diffuse_dyn[j] = (uint16_t *) malloc( mem_size ); if ( ( *hHRTF )->pIndex_frequency_max_diffuse_dyn[j] == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for pIndex_frequency_max_diffuse" ); } +#endif memcpy( ( *hHRTF )->pIndex_frequency_max_diffuse_dyn[j], hrtf_data_rptr, mem_size ); ( *hHRTF )->pIndex_frequency_max_diffuse[j] = ( *hHRTF )->pIndex_frequency_max_diffuse_dyn[j]; hrtf_data_rptr += mem_size; @@ -1243,11 +1271,22 @@ static ivas_error create_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + mem_size_buf = max_total_num_fsamp_per_iteration * sizeof( float ); + +#endif /* coeff_re (the size depends on pIndex_frequency_max) */ for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_float( &( *hHRTF )->pOut_to_bin_re_dyn[i][j], mem_size_buf ) ) != IVAS_ERR_OK ) + { + return error; + } + memset( ( *hHRTF )->pOut_to_bin_re_dyn[i][j], 0x00, mem_size_buf ); +#else mem_size = max_total_num_fsamp_per_iteration * sizeof( float ); ( *hHRTF )->pOut_to_bin_re_dyn[i][j] = (float *) malloc( mem_size ); if ( ( *hHRTF )->pOut_to_bin_re_dyn[i][j] == NULL ) @@ -1255,6 +1294,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for Out_to_bin_re" ); } memset( ( *hHRTF )->pOut_to_bin_re_dyn[i][j], 0x00, mem_size ); +#endif ( *hHRTF )->pOut_to_bin_re[i][j] = ( *hHRTF )->pOut_to_bin_re_dyn[i][j]; pOut_to_bin_wptr = ( *hHRTF )->pOut_to_bin_re_dyn[i][j]; @@ -1272,11 +1312,19 @@ static ivas_error create_HRTF_from_rawdata( } } + /* coeff_im (the size depends on pIndex_frequency_max) */ for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_float( &( *hHRTF )->pOut_to_bin_im_dyn[i][j], mem_size_buf ) ) != IVAS_ERR_OK ) + { + return error; + } + memset( ( *hHRTF )->pOut_to_bin_im_dyn[i][j], 0x00, mem_size_buf ); +#else mem_size = max_total_num_fsamp_per_iteration * sizeof( float ); ( *hHRTF )->pOut_to_bin_im_dyn[i][j] = (float *) malloc( mem_size ); if ( ( *hHRTF )->pOut_to_bin_im_dyn[i][j] == NULL ) @@ -1284,6 +1332,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for Out_to_bin_im" ); } memset( ( *hHRTF )->pOut_to_bin_im_dyn[i][j], 0x00, mem_size ); +#endif ( *hHRTF )->pOut_to_bin_im[i][j] = ( *hHRTF )->pOut_to_bin_im_dyn[i][j]; pOut_to_bin_wptr = ( *hHRTF )->pOut_to_bin_im_dyn[i][j]; @@ -1305,6 +1354,10 @@ static ivas_error create_HRTF_from_rawdata( max_total_num_fsamp_per_iteration_diff = *( (uint32_t *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( uint32_t ); +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + mem_size_buf = max_total_num_fsamp_per_iteration_diff * sizeof( float ); + +#endif if ( max_total_num_fsamp_per_iteration_diff != 0 ) { /* factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); */ @@ -1312,6 +1365,13 @@ static ivas_error create_HRTF_from_rawdata( /* coeff_diffuse_re : The size depends on pIndex_frequency_max_diffuse */ for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_float( &( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j], mem_size_buf ) ) != IVAS_ERR_OK ) + { + return error; + } + memset( ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j], 0x00, mem_size_buf ); +#else mem_size = max_total_num_fsamp_per_iteration_diff * sizeof( float ); ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j] = (float *) malloc( mem_size ); if ( ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j] == NULL ) @@ -1319,6 +1379,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for pOut_to_bin_diffuse_re" ); } memset( ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j], 0x00, mem_size ); +#endif ( *hHRTF )->pOut_to_bin_diffuse_re[j] = ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j]; pOut_to_bin_wptr = ( *hHRTF )->pOut_to_bin_diffuse_re_dyn[j]; @@ -1339,6 +1400,13 @@ static ivas_error create_HRTF_from_rawdata( /* coeff_diffuse_im : The size depends on pIndex_frequency_max_diffuse */ for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( error = ivas_HRTF_CRend_binary_open_buffers_float( &( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j], mem_size_buf ) ) != IVAS_ERR_OK ) + { + return error; + } + memset( ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j], 0x00, mem_size_buf ); +#else mem_size = max_total_num_fsamp_per_iteration_diff * sizeof( float ); ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j] = (float *) malloc( mem_size ); if ( ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j] == NULL ) @@ -1346,6 +1414,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for pOut_to_bin_diffuse_im" ); } memset( ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j], 0x00, mem_size ); +#endif ( *hHRTF )->pOut_to_bin_diffuse_im[j] = ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j]; pOut_to_bin_wptr = ( *hHRTF )->pOut_to_bin_diffuse_im_dyn[j]; @@ -2231,24 +2300,44 @@ ivas_error load_parambin_HRTF_from_binary( /*---------------------------------------------------------------------* - * create_SetOfHRTF_from_binary() + * load_Crend_HRTF_from_binary() * - * Create the HRTF data set from the binary file + * Create the Crend HRTF data set from the binary file *---------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error load_Crend_HRTF_from_binary( + IVAS_DEC_HRTF_CREND_HANDLE hHrtfCrend, /* i/o: HRTF CRend handle */ + 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 output_Fs /* i : Output sampling frequency */ +) +#else ivas_error create_SetOfHRTF_from_binary( IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF, /* i/o: HRTF CRend handle */ const hrtfFileReader *hrtfReader, /* i : pointer to hrtfFileReader handle */ - int32_t output_Fs ) /* i : Output sampling frequency */ + const int32_t output_Fs /* i : Output sampling frequency */ +) +#endif { FILE *f_hrtf; int32_t hrtf_data_size_max; char *hrtf_data; ivas_hrtfs_header_t hrtf_header; +#ifndef FIX_1227_Crend_HRTF_LOADING_OPTIM HRTFS_DATA **hHRTF; +#endif ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; +#ifdef FIX_1226_FASTCONV_HRTF_LOADING_OPTIM + bool load = false; + BINAURAL_INPUT_AUDIO_CONFIG hrtf_set_binaural_cfg; + + /* convert audio config. to HRTF binaural config */ + hrtf_set_binaural_cfg = audio_cfg_2_binaural_cfg( hrtf_set_audio_cfg ); +#endif if ( hrtfReader == NULL || hrtfReader->file == NULL ) { @@ -2279,7 +2368,14 @@ ivas_error create_SetOfHRTF_from_binary( /* Read & load */ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( hHrtfCrend == NULL ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Crend HRTF binary handle not allocated!\n" ); + } +#else memset( hSetOfHRTF, 0x00, sizeof( HRTFS_CREND ) ); +#endif for ( hrtf_id = 0; hrtf_id < hrtfs_file_header.nb_hrtf; hrtf_id++ ) { @@ -2289,7 +2385,21 @@ ivas_error create_SetOfHRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV && /* HRIRs */ + ( OutputConfig == IVAS_AUDIO_CONFIG_BINAURAL || OutputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) || + ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM && /* BRIRs */ + OutputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || + ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV && ( OutputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || OutputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) ) + { + load = ( (BINAURAL_INPUT_AUDIO_CONFIG) hrtf_header.input_cfg == hrtf_set_binaural_cfg ) ? true : false; + } + + if ( load ) + { +#else hHRTF = NULL; + if ( hrtf_header.frequency == output_Fs ) { if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) @@ -2319,13 +2429,33 @@ ivas_error create_SetOfHRTF_from_binary( } } } +#endif + + if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + } + +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM + if ( hrtf_header.frequency != output_Fs ) + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } + + if ( ( create_Crend_HRTF_from_rawdata( &hHrtfCrend, hrtf_data ) ) != IVAS_ERR_OK ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); + } - if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) + break; /* read just one set */ + } + else { - free( hrtf_data ); - return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + fseek( f_hrtf, hrtf_header.data_size, SEEK_CUR ); } - +#else if ( hHRTF != NULL ) { if ( ( create_HRTF_from_rawdata( hHRTF, hrtf_data ) ) != IVAS_ERR_OK ) @@ -2334,6 +2464,7 @@ ivas_error create_SetOfHRTF_from_binary( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } } +#endif } free( hrtf_data ); @@ -2342,6 +2473,62 @@ ivas_error create_SetOfHRTF_from_binary( } +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +/*---------------------------------------------------------------------* + * destroy_crend_hrtf() + * + * Destroy the Crend HRTF data set + *---------------------------------------------------------------------*/ + +void destroy_crend_hrtf( + IVAS_DEC_HRTF_CREND_HANDLE *hHrtfCrend /* i/o: Crend HRTF handle */ +) +{ + uint16_t i, j; + + if ( *hHrtfCrend != NULL && hHrtfCrend != NULL ) + { + for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + { + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + if ( ( *hHrtfCrend )->pIndex_frequency_max[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pIndex_frequency_max_dyn[i][j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_re[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_re_dyn[i][j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_im[i][j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_im_dyn[i][j] ); + } + } + } + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + if ( ( *hHrtfCrend )->pIndex_frequency_max_diffuse[j] != NULL ) + { + free( ( *hHrtfCrend )->pIndex_frequency_max_diffuse_dyn[j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_diffuse_re[j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_diffuse_re_dyn[j] ); + } + if ( ( *hHrtfCrend )->pOut_to_bin_diffuse_im[j] != NULL ) + { + free( ( *hHrtfCrend )->pOut_to_bin_diffuse_im_dyn[j] ); + } + } + + free( *hHrtfCrend ); + *hHrtfCrend = NULL; + } + + return; +} +#else /*---------------------------------------------------------------------* * destroy_HRTF() * @@ -2401,7 +2588,7 @@ static void destroy_HRTF( /*---------------------------------------------------------------------* * destroy_SetOfHRTF() * - * Destroy the HRTF data set. + * Destroy the HRTF data set for Crend renderer *---------------------------------------------------------------------*/ void destroy_SetOfHRTF( @@ -2421,6 +2608,7 @@ void destroy_SetOfHRTF( return; } +#endif /*---------------------------------------------------------------------* diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index c8507f49005b21aa60d11646954ccb2776b5d9ca..db9b29f65e7ba6f4375d5fbfc55fd0e8a4109791 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -102,17 +102,38 @@ ivas_error load_reverb_binary( const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ); /*---------------------------------------------------------------------* - * create_SetOfHRTF_from_binary() + * load_Crend_HRTF_from_binary() * - * Create the HRTF data set from the binary file + * Create the Crend HRTF data set from the binary file *---------------------------------------------------------------------*/ +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +ivas_error load_Crend_HRTF_from_binary( + IVAS_DEC_HRTF_CREND_HANDLE hHrtfCrend, /* i/o: HRTF CRend handle */ + 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 output_Fs /* i : Output sampling frequency */ +); +#else ivas_error create_SetOfHRTF_from_binary( IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF, /* i/o: Set of HRTF CRend handle */ const hrtfFileReader *hrtfReader, /* i : pointer to hrtfFileReader handle */ - int32_t output_Fs /* i : Output sampling frequency */ + const int32_t output_Fs /* i : Output sampling frequency */ ); +#endif +#ifdef FIX_1227_Crend_HRTF_LOADING_OPTIM +/*---------------------------------------------------------------------* + * destroy_crend_hrtf() + * + * Destroy the Crend HRTF data set + *---------------------------------------------------------------------*/ + +void destroy_crend_hrtf( + IVAS_DEC_HRTF_CREND_HANDLE *hHrtfCrend /* i/o: Crend HRTF handle */ +); +#else /*---------------------------------------------------------------------* * destroy_SetOfHRTF() * @@ -122,7 +143,7 @@ ivas_error create_SetOfHRTF_from_binary( void destroy_SetOfHRTF( IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ); - +#endif /*---------------------------------------------------------------------* * load_fastconv_HRTF_from_binary() diff --git a/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c b/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c index 6b614f80c8202a4bde22eca64ba20b1656c3928a..c9a5d6df5c42e86a6b0c9f3c751bb92fff54d669 100644 --- a/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +++ b/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c @@ -73,6 +73,21 @@ const HRTF_READER_RENDERER_TYPE rend_types[IVAS_NB_RENDERER_TYPE] = { HRTF_READER_RENDERER_BINAURAL_REVERB_ALL }; +#ifdef FIX_1226_FASTCONV_HRTF_LOADING_OPTIM +typedef enum +{ + BINAURAL_INPUT_AUDIO_CONFIG_INVALID, + BINAURAL_INPUT_AUDIO_CONFIG_COMBINED, /* 5_1, 5_1_2, 5_1_4, 7_1, 7_1_4 */ + BINAURAL_INPUT_AUDIO_CONFIG_HOA3, /* HOA3 */ + BINAURAL_INPUT_AUDIO_CONFIG_HOA2, /* HOA2 */ + BINAURAL_INPUT_AUDIO_CONFIG_FOA, /* FOA */ + BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED /* Not used */ + +} BINAURAL_INPUT_AUDIO_CONFIG; + +#endif + + const BINAURAL_INPUT_AUDIO_CONFIG input_cfgs[IVAS_NB_AUDIO_CONFIG] = { BINAURAL_INPUT_AUDIO_CONFIG_COMBINED, BINAURAL_INPUT_AUDIO_CONFIG_HOA3, @@ -1930,7 +1945,7 @@ int16_t check_hrtf_data( HRTF_READER_RENDERER_TYPE rend_type, BINAURAL_INPUT_AUD hrtf_data_in_rptr = hrtf_data_in; -// latency_s + // latency_s if ( ( *( tabs_ptrs.latency_s ) - ( *( (int32_t *) ( hrtf_data_in_rptr ) ) ) * powf( 2.f, -31.f ) ) > 1e-9f ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad latency_s!\n\n" ); @@ -2037,7 +2052,7 @@ 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 + // max_total_num_fsamp_per_iteration if ( tabs_dims.max_total_num_fsamp_per_iteration != *( (uint32_t *) ( hrtf_data_in_rptr ) ) ) { fprintf( stderr, "check_hrtf_data of binary file failed: bad max_total_num_fsamp_per_iteration!\n\n" ); diff --git a/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c b/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c index 5c64af8f6d359ac4a00de39eae28d1cee37a89c4..3a706b2fdf183f46d94ca57f0a5e3f56198ca363 100644 --- a/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c +++ b/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c @@ -68,14 +68,14 @@ * Constants *------------------------------------------------------------------------------------------*/ -#define MAX_DIFF_ANGLE 10 /* angle in degree */ -#define DEFAULT_SAMPLERATE 48000 /* Hz */ -#define LAST_SAMPLERATE 16000 /* Hz */ -#define TEMPLTATE_C_ROM_FILE_NAME "ivas_license_header.template" -#define ROM_FILE_NAME "ivas_rom_binaural_crend_head" -#define FORMAT_FLOAT "%a" -#define FORMAT_FLOAT_REVERB "%a" -#define FORMAT_FLOAT_LATENCY "%a" +#define MAX_DIFF_ANGLE 10 /* angle in degree */ +#define DEFAULT_SAMPLERATE 48000 /* Hz */ +#define LAST_SAMPLERATE 16000 /* Hz */ +#define TEMPLTATE_C_ROM_FILE_NAME "ivas_license_header.template" +#define ROM_FILE_NAME "ivas_rom_binaural_crend_head" +#define FORMAT_FLOAT "%a" +#define FORMAT_FLOAT_REVERB "%a" +#define FORMAT_FLOAT_LATENCY "%a" #define NUM_SAMPLES_PER_LINES 96 #define NUM_SAMPLES_PER_LINES_REVERB 9 #define DECLARATION_NAME "CRendBin" @@ -2338,7 +2338,22 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int } /* float *pOut_to_bin[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/ - fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else + { + fprintf( fp, "\nconst float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + } for ( i = 0; i < hrtf->max_num_ir - 1; i++ ) { fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT ); @@ -2354,7 +2369,22 @@ void update_c_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int fprintf( fp, "\n%s}", TAB_WITH_SPACE_OR_NOT ); fprintf( fp, "\n};" ); - fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else + { + fprintf( fp, "\nconst float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%d]={", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + } for ( i = 0; i < hrtf->max_num_ir - 1; i++ ) { fprintf( fp, "\n%s{\n", TAB_WITH_SPACE_OR_NOT ); @@ -2553,9 +2583,26 @@ void update_h_file( HRTFS_DATA *hrtf, struct ivas_layout_config lscfg, const int } /* float *pOut_to_bin[MAX_INTERN_CHANNELS][BINAURAL_CHANNELS];*/ - fprintf( fp, "\nextern const float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); - fprintf( fp, "\nextern const float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); - + if ( samplerate == 48000 && maxTotalNumFreqSampPerIterations == L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nextern const float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + fprintf( fp, "\nextern const float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME48k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 32000 && maxTotalNumFreqSampPerIterations == L_FRAME32k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nextern const float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + fprintf( fp, "\nextern const float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME32k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else if ( samplerate == 16000 && maxTotalNumFreqSampPerIterations == L_FRAME16k / MAX_PARAM_SPATIAL_SUBFRAMES ) + { + fprintf( fp, "\nextern const float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + fprintf( fp, "\nextern const float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][L_FRAME16k/MAX_PARAM_SPATIAL_SUBFRAMES];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name ); + } + else + { + fprintf( fp, "\nextern const float %s_%s_coeff_re_%2dkHz[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + fprintf( fp, "\nextern const float %s_%s_coeff_im_%2dkHz[%s][BINAURAL_CHANNELS][%u];", DECLARATION_NAME, lscfg.name, samplerate / 1000, lscfg.output_config_num_channel_name, maxTotalNumFreqSampPerIterations ); + } /* float *pOut_to_bin_diffuse_re_dyn[BINAURAL_CHANNELS];*/ if ( hrtf->pOut_to_bin_diffuse_re_dyn[0] == NULL ) {