diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index c31fa83049eba0dd5e6d233d578db23cf63b914b..fbe82c07a2215cf533fe3db3bdf5205a9cdad87a 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1530,6 +1530,9 @@ typedef enum #define MAX_ANGULAR_STEP_INV ( 1.0f / MAX_ANGULAR_STEP ) #define MAX_INTERPOLATION_STEPS 12 +#define RESAMPLE_FACTOR_16_48 ( 16.0f / 48.0f ) +#define RESAMPLE_FACTOR_32_48 ( 32.0f / 48.0f ) + /* ----- Enums - TD Renderer ----- */ typedef enum diff --git a/lib_com/options.h b/lib_com/options.h index edd27064d4221b7e6a93906047c1abffea1eea83..7189648051020b61af7becc9da5419551e10476b 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -170,6 +170,7 @@ #define FIX_1123_TDREN_16BIT_ROM #define FIX_1123_FASTCONV_16BIT_ROM /* FhG: issue 1123: update FastConv ROM tables and scripts to generate 16 bit tables instead of float */ #define FIX_1123_PARAMBIN_16BIT_ROM /* FhG,Nok: issue 1123: update ParamBin ROM tables and scripts to generate 16 bit tables instead of float */ +#define FIX_RETURN /* VA: fix location of function returns */ #endif #define FIX_BASOP_812_NAN_COHSNR /* FhG: BASOP issue 812: fix nan values in sparse frames for cohSNR value in ITD estimation*/ diff --git a/lib_dec/ivas_binRenderer_internal.c b/lib_dec/ivas_binRenderer_internal.c index e97355811385b33ca0f084eaa968099ba6eacc16..f38caf6a167c6cac34abe3437e4a3eb015a79a7b 100644 --- a/lib_dec/ivas_binRenderer_internal.c +++ b/lib_dec/ivas_binRenderer_internal.c @@ -720,7 +720,7 @@ ivas_error ivas_allocate_binaural_hrtf( } #ifdef FIX_1123_FASTCONV_16BIT_ROM - if ( ( ( renderer_type == RENDERER_BINAURAL_FASTCONV ) && ( bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) ) || ( ( renderer_type == RENDERER_BINAURAL_FASTCONV ) && ( input_config != IVAS_AUDIO_CONFIG_INVALID ) ) ) + if ( ( renderer_type == RENDERER_BINAURAL_FASTCONV && bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) || ( renderer_type == RENDERER_BINAURAL_FASTCONV && input_config != IVAS_AUDIO_CONFIG_INVALID ) ) #else if ( renderer_type == RENDERER_BINAURAL_FASTCONV || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif @@ -766,7 +766,7 @@ ivas_error ivas_allocate_binaural_hrtf( } #ifdef FIX_1123_FASTCONV_16BIT_ROM - if ( ( ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) && ( bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) ) || ( ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) && ( input_config != IVAS_AUDIO_CONFIG_INVALID ) ) ) + if ( ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) || ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_config != IVAS_AUDIO_CONFIG_INVALID ) ) #else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) #endif @@ -816,7 +816,7 @@ ivas_error ivas_allocate_binaural_hrtf( /*-------------------------------------------------------------------------* - * ivas_binaural_HRTF_open() + * ivas_binaural_hrtf_open() * * *-------------------------------------------------------------------------*/ @@ -829,13 +829,17 @@ static ivas_error ivas_binaural_hrtf_open( { #ifdef FIX_1123_FASTCONV_16BIT_ROM int16_t i, j, k; - float scaleFactor = 1.f; - float scaleFactorSBA = 1.f; + float scaleFactor, scaleFactorSBA; #else int16_t i, j; #endif ivas_error error; +#ifdef FIX_1123_FASTCONV_16BIT_ROM + scaleFactor = 1.f; + scaleFactorSBA = 1.f; +#endif + if ( hHrtfFastConv != NULL && *hHrtfFastConv != NULL ) { /* Tables already loaded from file */ @@ -856,7 +860,7 @@ static ivas_error ivas_binaural_hrtf_open( if ( input_config == IVAS_AUDIO_CONFIG_BINAURAL || renderer_type == RENDERER_BINAURAL_FASTCONV ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - HrtfFastConv->FASTCONV_HRIR_latency_s = (float) FASTCONV_HRIR_latency_s * powf( 2.f, -1.f * (float) FASTCONV_FOA_latency_s_factorQ ); + HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s * powf( 2.f, -1.f * FASTCONV_FOA_latency_s_factorQ ); #else HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s; #endif @@ -864,7 +868,7 @@ static ivas_error ivas_binaural_hrtf_open( if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - HrtfFastConv->FASTCONV_HOA2_latency_s = (float) FASTCONV_HOA2_latency_s * powf( 2.f, -1.f * (float) FASTCONV_HOA2_latency_s_factorQ ); + HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s * powf( 2.f, -1.f * FASTCONV_HOA2_latency_s_factorQ ); #else HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s; #endif @@ -872,7 +876,7 @@ static ivas_error ivas_binaural_hrtf_open( if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - HrtfFastConv->FASTCONV_HOA3_latency_s = (float) FASTCONV_HOA3_latency_s * powf( 2.f, -1.f * (float) FASTCONV_HOA3_latency_s_factorQ ); + HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s * powf( 2.f, -1.f * FASTCONV_HOA3_latency_s_factorQ ); #else HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s; #endif @@ -880,7 +884,7 @@ static ivas_error ivas_binaural_hrtf_open( if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - HrtfFastConv->FASTCONV_FOA_latency_s = (float) FASTCONV_FOA_latency_s * powf( 2.f, -1.f * (float) FASTCONV_HRIR_latency_s_factorQ ); + HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s * powf( 2.f, -1.f * FASTCONV_HRIR_latency_s_factorQ ); #else HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s; #endif @@ -888,7 +892,7 @@ static ivas_error ivas_binaural_hrtf_open( if ( input_config == IVAS_AUDIO_CONFIG_BINAURAL || renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - HrtfFastConv->FASTCONV_BRIR_latency_s = (float) FASTCONV_BRIR_latency_s * powf( 2.f, -1.f * (float) FASTCONV_BRIR_latency_s_factorQ ); + HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s * powf( 2.f, -1.f * FASTCONV_BRIR_latency_s_factorQ ); #else HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; #endif @@ -897,23 +901,23 @@ static ivas_error ivas_binaural_hrtf_open( #ifdef FIX_1123_FASTCONV_16BIT_ROM if ( renderer_type == RENDERER_BINAURAL_FASTCONV ) { - scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); + scaleFactor = powf( 2.f, -1.f * FASTCONV_HRIR_factorQ ); } else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { - scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); + scaleFactor = powf( 2.f, -1.f * FASTCONV_BRIR_factorQ ); } if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { - scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); + scaleFactorSBA = powf( 2.f, -1.f * FASTCONV_HRIR_HOA3_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { - scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); + scaleFactorSBA = powf( 2.f, -1.f * FASTCONV_HRIR_HOA2_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { - scaleFactorSBA = powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); + scaleFactorSBA = powf( 2.f, -1.f * FASTCONV_HRIR_FOA_factorQ ); } #else HrtfFastConv->allocate_init_flag = 1; @@ -927,6 +931,7 @@ static ivas_error ivas_binaural_hrtf_open( { return error; } + for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { if ( renderer_type == RENDERER_BINAURAL_FASTCONV ) @@ -936,10 +941,10 @@ static ivas_error ivas_binaural_hrtf_open( #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < HrtfFastConv->ntaps_hrir; k++ ) { - HrtfFastConv->leftHRIRReal[i][j][k] = (float) leftHRIRReal[i][j][k] * scaleFactor; - HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * scaleFactor; - HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * scaleFactor; - HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * scaleFactor; + HrtfFastConv->leftHRIRReal[i][j][k] = leftHRIRReal[i][j][k] * scaleFactor; + HrtfFastConv->leftHRIRImag[i][j][k] = leftHRIRImag[i][j][k] * scaleFactor; + HrtfFastConv->rightHRIRReal[i][j][k] = rightHRIRReal[i][j][k] * scaleFactor; + HrtfFastConv->rightHRIRImag[i][j][k] = rightHRIRImag[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; @@ -956,10 +961,10 @@ static ivas_error ivas_binaural_hrtf_open( #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < HrtfFastConv->ntaps_brir; k++ ) { - HrtfFastConv->leftBRIRReal[i][j][k] = (float) leftBRIRReal[i][j][k] * scaleFactor; - HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * scaleFactor; - HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * scaleFactor; - HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * scaleFactor; + HrtfFastConv->leftBRIRReal[i][j][k] = leftBRIRReal[i][j][k] * scaleFactor; + HrtfFastConv->leftBRIRImag[i][j][k] = leftBRIRImag[i][j][k] * scaleFactor; + HrtfFastConv->rightBRIRReal[i][j][k] = rightBRIRReal[i][j][k] * scaleFactor; + HrtfFastConv->rightBRIRImag[i][j][k] = rightBRIRImag[i][j][k] * scaleFactor; } #else HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; @@ -969,6 +974,7 @@ static ivas_error ivas_binaural_hrtf_open( #endif } } + if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { for ( j = 0; j < HOA3_CHANNELS; j++ ) @@ -976,10 +982,10 @@ static ivas_error ivas_binaural_hrtf_open( #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < HrtfFastConv->ntaps_hrir_hoa3; k++ ) { - HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * scaleFactorSBA; - HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = leftHRIRReal_HOA3[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = leftHRIRImag_HOA3[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = rightHRIRReal_HOA3[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = rightHRIRImag_HOA3[i][j][k] * scaleFactorSBA; } #else HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; @@ -990,19 +996,20 @@ static ivas_error ivas_binaural_hrtf_open( } } #ifdef FIX_1123_FASTCONV_16BIT_ROM - else + else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) +#else + if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) #endif - if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { for ( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < HrtfFastConv->ntaps_hrir_hoa2; k++ ) { - HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * scaleFactorSBA; - HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = leftHRIRReal_HOA2[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = leftHRIRImag_HOA2[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = rightHRIRReal_HOA2[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = rightHRIRImag_HOA2[i][j][k] * scaleFactorSBA; } #else HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; @@ -1013,19 +1020,20 @@ static ivas_error ivas_binaural_hrtf_open( } } #ifdef FIX_1123_FASTCONV_16BIT_ROM - else + else if ( input_config == IVAS_AUDIO_CONFIG_FOA ) +#else + if ( input_config == IVAS_AUDIO_CONFIG_FOA ) #endif - if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { for ( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM for ( k = 0; k < HrtfFastConv->ntaps_hrir_foa; k++ ) { - HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * scaleFactorSBA; - HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * scaleFactorSBA; - HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRReal_FOA[i][j][k] = leftHRIRReal_FOA[i][j][k] * scaleFactorSBA; + HrtfFastConv->leftHRIRImag_FOA[i][j][k] = leftHRIRImag_FOA[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRReal_FOA[i][j][k] = rightHRIRReal_FOA[i][j][k] * scaleFactorSBA; + HrtfFastConv->rightHRIRImag_FOA[i][j][k] = rightHRIRImag_FOA[i][j][k] * scaleFactorSBA; } #else HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; @@ -1036,16 +1044,18 @@ static ivas_error ivas_binaural_hrtf_open( } } } + #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); + scaleFactor = powf( 2.f, -1.f * fastconvReverberationTimes_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { - HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * scaleFactor; + HrtfFastConv->fastconvReverberationTimes[i] = fastconvReverberationTimes[i] * scaleFactor; } - scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); + + scaleFactor = powf( 2.f, -1.f * fastconvReverberationEneCorrections_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { - HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * scaleFactor; + HrtfFastConv->fastconvReverberationEneCorrections[i] = fastconvReverberationEneCorrections[i] * scaleFactor; } #else mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); @@ -1053,9 +1063,14 @@ static ivas_error ivas_binaural_hrtf_open( #endif *hHrtfFastConv = HrtfFastConv; - } +#ifdef FIX_RETURN + return IVAS_ERR_OK; +#endif + } +#ifndef FIX_RETURN return IVAS_ERR_OK; +#endif } diff --git a/lib_rend/ivas_crend.c b/lib_rend/ivas_crend.c index d63522566e8435eaa559291270f32d4192a1cc5d..0a811f541ad9aaf409b0c75d57278a53ca0f49b3 100644 --- a/lib_rend/ivas_crend.c +++ b/lib_rend/ivas_crend.c @@ -146,6 +146,7 @@ static void ivas_hrtf_close( #ifdef FIX_1123_CREND_16BIT_ROM int16_t i, j; #endif + if ( hHrtf == NULL || *hHrtf == NULL ) { return; @@ -161,19 +162,23 @@ static void ivas_hrtf_close( if ( ( *hHrtf )->pOut_to_bin_re[j][i] != NULL ) { free( ( *hHrtf )->pOut_to_bin_re[j][i] ); + ( *hHrtf )->pOut_to_bin_re[j][i] = NULL; } if ( ( *hHrtf )->pOut_to_bin_im[j][i] != NULL ) { free( ( *hHrtf )->pOut_to_bin_im[j][i] ); + ( *hHrtf )->pOut_to_bin_im[j][i] = NULL; } } if ( ( *hHrtf )->pOut_to_bin_diffuse_re[i] != NULL ) { free( ( *hHrtf )->pOut_to_bin_diffuse_re[i] ); + ( *hHrtf )->pOut_to_bin_diffuse_re[i] = NULL; } if ( ( *hHrtf )->pOut_to_bin_diffuse_im[i] != NULL ) { free( ( *hHrtf )->pOut_to_bin_diffuse_im[i] ); + ( *hHrtf )->pOut_to_bin_diffuse_im[i] = NULL; } } } @@ -261,7 +266,7 @@ static ivas_error ivas_rend_initCrend( if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; #endif @@ -271,7 +276,7 @@ static ivas_error ivas_rend_initCrend( else { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s; #endif @@ -298,8 +303,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_diffuse_re[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[j][k] * factorQ; - hHrtf->pOut_to_bin_diffuse_im[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_re[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_im[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[j][k] * factorQ; } #else hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[j]; @@ -325,7 +330,7 @@ static ivas_error ivas_rend_initCrend( if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; #endif @@ -335,7 +340,7 @@ static ivas_error ivas_rend_initCrend( else { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s; #endif @@ -362,8 +367,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_diffuse_re[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[j][k] * factorQ; - hHrtf->pOut_to_bin_diffuse_im[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_re[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_im[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[j][k] * factorQ; } #else hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[j]; @@ -389,7 +394,7 @@ static ivas_error ivas_rend_initCrend( if ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_BRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; #endif @@ -400,7 +405,7 @@ static ivas_error ivas_rend_initCrend( else { #ifdef FIX_1123_CREND_16BIT_ROM - hHrtf->latency_s = (float) CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); + hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s_fx * powf( 2.f, -1.f * CRendBin_Combined_HRIR_latency_s_Q_fx ); #else hHrtf->latency_s = CRendBin_Combined_HRIR_latency_s; #endif @@ -427,8 +432,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_diffuse_re[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[j][k] * factorQ; - hHrtf->pOut_to_bin_diffuse_im[j][k] = (float) CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_re[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[j][k] * factorQ; + hHrtf->pOut_to_bin_diffuse_im[j][k] = CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[j][k] * factorQ; } #else hHrtf->pOut_to_bin_diffuse_re[j] = CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[j]; @@ -503,8 +508,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_re_48kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_im_48kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_BRIR_coeff_re_48kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_BRIR_coeff_im_48kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_48kHz[tmp][j]; @@ -529,8 +534,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_HRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_re_48kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_im_48kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_HRIR_coeff_re_48kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_HRIR_coeff_im_48kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_48kHz[tmp][j]; @@ -561,8 +566,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_re_32kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_im_32kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_BRIR_coeff_re_32kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_BRIR_coeff_im_32kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_32kHz[tmp][j]; @@ -587,8 +592,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_HRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_re_32kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_im_32kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_HRIR_coeff_re_32kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_HRIR_coeff_im_32kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_32kHz[tmp][j]; @@ -619,8 +624,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_BRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_re_16kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_BRIR_coeff_im_16kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_BRIR_coeff_re_16kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_BRIR_coeff_im_16kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_BRIR_coeff_re_16kHz[tmp][j]; @@ -645,8 +650,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_Combined_HRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_re_16kHz_fx[tmp][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_Combined_HRIR_coeff_im_16kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_Combined_HRIR_coeff_re_16kHz_fx[tmp][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_Combined_HRIR_coeff_im_16kHz_fx[tmp][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_Combined_HRIR_coeff_re_16kHz[tmp][j]; @@ -691,8 +696,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA3_HRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_48kHz[i][j]; @@ -734,8 +739,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA3_HRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_32kHz[i][j]; @@ -778,8 +783,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA3_HRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA3_HRIR_coeff_re_16kHz[i][j]; @@ -829,8 +834,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA2_HRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_48kHz[i][j]; @@ -872,8 +877,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA2_HRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_32kHz[i][j]; @@ -916,8 +921,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_HOA2_HRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_HOA2_HRIR_coeff_re_16kHz[i][j]; @@ -967,8 +972,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_FOA_HRIR_coeff_Q_48kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_FOA_HRIR_coeff_re_48kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_FOA_HRIR_coeff_im_48kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_48kHz[i][j]; @@ -1010,8 +1015,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_FOA_HRIR_coeff_Q_32kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_FOA_HRIR_coeff_re_32kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_FOA_HRIR_coeff_im_32kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_32kHz[i][j]; @@ -1054,8 +1059,8 @@ static ivas_error ivas_rend_initCrend( factorQ = powf( 2.f, -1.f * CRendBin_FOA_HRIR_coeff_Q_16kHz_fx ); for ( k = 0; k < sizeRom; k++ ) { - hHrtf->pOut_to_bin_re[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; - hHrtf->pOut_to_bin_im[i][j][k] = (float) CRendBin_FOA_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_re[i][j][k] = CRendBin_FOA_HRIR_coeff_re_16kHz_fx[i][j][k] * factorQ; + hHrtf->pOut_to_bin_im[i][j][k] = CRendBin_FOA_HRIR_coeff_im_16kHz_fx[i][j][k] * factorQ; } #else hHrtf->pOut_to_bin_re[i][j] = CRendBin_FOA_HRIR_coeff_re_16kHz[i][j]; @@ -2020,7 +2025,6 @@ static ivas_error ivas_rend_crendConvolver( } } - i = 0; #ifdef FIX_CREND_SIMPLIFY_CODE if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { @@ -2038,6 +2042,8 @@ static ivas_error ivas_rend_crendConvolver( } } #endif + + i = 0; for ( idx_in = 0; idx_in < nchan_in; idx_in++ ) { pIn = &pcm_in[idx_in][i_ts * subframe_length]; @@ -2080,6 +2086,7 @@ static ivas_error ivas_rend_crendConvolver( } } } + #ifdef FIX_CREND_SIMPLIFY_CODE pFreq_filt_re = &hCrend->freq_buffer_re[i][offset]; pFreq_filt_im = &hCrend->freq_buffer_im[i][offset]; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index b2aef0b3546ff6523d404ae51ccfc3d54c6a98c3..9c0b1c8374b6c143c6d51f2ed1530e56b52408eb 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -378,6 +378,7 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( #else int16_t i, j; #endif + if ( hHrtfParambin != NULL && *hHrtfParambin != NULL ) { /* Tables already loaded from file */ @@ -389,11 +390,13 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( HRTFS_PARAMBIN *hrtfParambin; #ifdef FIX_1123_PARAMBIN_16BIT_ROM float shCoef_scale, rt_scale, rene_scale, early_scale; - shCoef_scale = powf( 2.f, -1.f * (float) hrtfShCoeffs_factorQ ); - rt_scale = powf( 2.f, -1.f * (float) parametricReverberationTimes_factorQ ); - rene_scale = powf( 2.f, -1.f * (float) parametricReverberationEneCorrections_factorQ ); - early_scale = powf( 2.f, -1.f * (float) parametricEarlyPartEneCorrection_factorQ ); + + shCoef_scale = powf( 2.f, -1.f * hrtfShCoeffs_factorQ ); + rt_scale = powf( 2.f, -1.f * parametricReverberationTimes_factorQ ); + rene_scale = powf( 2.f, -1.f * parametricReverberationEneCorrections_factorQ ); + early_scale = powf( 2.f, -1.f * parametricEarlyPartEneCorrection_factorQ ); #endif + if ( ( hrtfParambin = (HRTFS_PARAMBIN *) malloc( sizeof( HRTFS_PARAMBIN ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for parametric binauralizer HRTF tables" ); @@ -406,8 +409,8 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( #ifdef FIX_1123_PARAMBIN_16BIT_ROM for ( k = 0; k < HRTF_NUM_BINS; k++ ) { - hrtfParambin->hrtfShCoeffsRe[i][j][k] = (float) hrtfShCoeffsRe[i][j][k] * shCoef_scale; - hrtfParambin->hrtfShCoeffsIm[i][j][k] = (float) hrtfShCoeffsIm[i][j][k] * shCoef_scale; + hrtfParambin->hrtfShCoeffsRe[i][j][k] = hrtfShCoeffsRe[i][j][k] * shCoef_scale; + hrtfParambin->hrtfShCoeffsIm[i][j][k] = hrtfShCoeffsIm[i][j][k] * shCoef_scale; } #else mvr2r( hrtfShCoeffsRe[i][j], hrtfParambin->hrtfShCoeffsRe[i][j], HRTF_NUM_BINS ); @@ -419,9 +422,9 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( #ifdef FIX_1123_PARAMBIN_16BIT_ROM for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { - hrtfParambin->parametricReverberationTimes[i] = (float) parametricReverberationTimes[i] * rt_scale; - hrtfParambin->parametricReverberationEneCorrections[i] = (float) parametricReverberationEneCorrections[i] * rene_scale; - hrtfParambin->parametricEarlyPartEneCorrection[i] = (float) parametricEarlyPartEneCorrection[i] * early_scale; + hrtfParambin->parametricReverberationTimes[i] = parametricReverberationTimes[i] * rt_scale; + hrtfParambin->parametricReverberationEneCorrections[i] = parametricReverberationEneCorrections[i] * rene_scale; + hrtfParambin->parametricEarlyPartEneCorrection[i] = parametricEarlyPartEneCorrection[i] * early_scale; } #else mvr2r( parametricReverberationTimes, hrtfParambin->parametricReverberationTimes, CLDFB_NO_CHANNELS_MAX ); @@ -430,9 +433,14 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( #endif *hHrtfParambin = hrtfParambin; - } +#ifdef FIX_RETURN + return IVAS_ERR_OK; +#endif + } +#ifndef FIX_RETURN return IVAS_ERR_OK; +#endif } diff --git a/lib_rend/ivas_hrtf.c b/lib_rend/ivas_hrtf.c index 95b88a0cd6f2bdc2847cb8fcb3ef6c5fa25b9760..2eba94957b961ce48958d003031ad90a5553f454 100644 --- a/lib_rend/ivas_hrtf.c +++ b/lib_rend/ivas_hrtf.c @@ -259,7 +259,7 @@ void ivas_HRTF_statistics_close( ivas_error ivas_HRTF_statistics_init( HRTFS_STATISTICS_HANDLE *hHrtfStatistics, - int32_t sampleRate ) + const int32_t sampleRate ) { HRTFS_STATISTICS *HrtfStatistics; @@ -301,6 +301,5 @@ ivas_error ivas_HRTF_statistics_init( *hHrtfStatistics = HrtfStatistics; - return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_objectRenderer_hrFilt.c b/lib_rend/ivas_objectRenderer_hrFilt.c index 9279ee15d950c9a18e0d993e0aa71419654b7065..456dbc640ced78d3b037ccbb63dc28630ea22e1e 100644 --- a/lib_rend/ivas_objectRenderer_hrFilt.c +++ b/lib_rend/ivas_objectRenderer_hrFilt.c @@ -529,6 +529,7 @@ void BSplineModelEvalDealloc( #ifdef FIX_1123_TDREN_16BIT_ROM model->azimBsShape = NULL; #endif + for ( i = 0; i < model->elevDim3; i++ ) { free( model->azimKSeq[i] ); @@ -540,6 +541,7 @@ void BSplineModelEvalDealloc( #ifdef FIX_1123_TDREN_16BIT_ROM model->azimKSeq = NULL; #endif + if ( modelEval != NULL ) { free( modelEval->hrfModL ); diff --git a/lib_rend/ivas_objectRenderer_mix.c b/lib_rend/ivas_objectRenderer_mix.c index cd9d3784fcd8095bb0b65620cc92d94c46e0de59..fa2ad5c892d387ba8836972678eb1c4a391acae7 100644 --- a/lib_rend/ivas_objectRenderer_mix.c +++ b/lib_rend/ivas_objectRenderer_mix.c @@ -45,16 +45,8 @@ #endif -/*-------------------------------------------------------------------* - * Local constants - *-------------------------------------------------------------------*/ - -#define RESAMPLE_FACTOR_16_48 ( 16.0f / 48.0f ) -#define RESAMPLE_FACTOR_32_48 ( 32.0f / 48.0f ) - - /*------------------------------------------------------------------------- - * Local functions + * Local functions declaration *-------------------------------------------------------------------------*/ static ivas_error DefaultBSplineModel( TDREND_HRFILT_FiltSet_t *HrFiltSet_p, const int32_t output_Fs ); @@ -217,6 +209,7 @@ void TDREND_MIX_Dealloc( hBinRendererTd->HrFiltSet_p->ModelParams.elevKSeq = NULL; hBinRendererTd->HrFiltSet_p->ModelParams.elevBsShape = NULL; #endif + free( hBinRendererTd->HrFiltSet_p ); hBinRendererTd->HrFiltSet_p = NULL; *hBinRendererTd->pHrFiltSet_p = NULL; @@ -344,8 +337,6 @@ ivas_error TDREND_MIX_AddSrc( TDREND_SRC_t *Src_p; ivas_error error; - error = IVAS_ERR_OK; - /* Get unique source index */ *SrcInd = hBinRendererTd->MaxSrcInd + 1; hBinRendererTd->MaxSrcInd++; @@ -382,7 +373,7 @@ ivas_error TDREND_MIX_AddSrc( } } - return error; + return IVAS_ERR_OK; } @@ -446,7 +437,6 @@ static ivas_error DefaultBSplineModel( model = &( HrFiltSet_p->ModelParams ); modelITD = &( HrFiltSet_p->ModelParamsITD ); - /* Set ROM flag for correct deallocation */ model->modelROM = TRUE; @@ -471,10 +461,10 @@ static ivas_error DefaultBSplineModel( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_elevKSeq_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_elevKSeq_Q ); for ( j = 0; j < model->elevDim3 - 2; j++ ) { - model->elevKSeq_dyn[j] = (float) defaultHRIR_rom_elevKSeq[j] * q_scale; + model->elevKSeq_dyn[j] = defaultHRIR_rom_elevKSeq[j] * q_scale; } model->elevKSeq = (const float *) model->elevKSeq_dyn; @@ -484,16 +474,17 @@ static ivas_error DefaultBSplineModel( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_elevBsShape_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_elevBsShape_Q ); for ( j = 0; j < size_rom_table; j++ ) { - model->elevBsShape_dyn[j] = (float) defaultHRIR_rom_elevBsShape[j] * q_scale; + model->elevBsShape_dyn[j] = defaultHRIR_rom_elevBsShape[j] * q_scale; } model->elevBsShape = (const float *) model->elevBsShape_dyn; #else model->elevKSeq = (const float *) defaultHRIR_rom_elevKSeq; model->elevBsShape = (const float *) defaultHRIR_rom_elevBsShape; #endif + if ( ( model->azimBsShape = (const float **) malloc( model->num_unique_azim_splines * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); @@ -509,13 +500,12 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_azimBsShape_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_azimBsShape_Q ); for ( j = 0; j < size_rom_table; j++ ) { - model->azimBsShape_dyn[0][j] = (float) defaultHRIR_rom_azimBsShape[j] * q_scale; + model->azimBsShape_dyn[0][j] = defaultHRIR_rom_azimBsShape[j] * q_scale; } model->azimBsShape[0] = (const float *) model->azimBsShape_dyn[0]; - #else model->azimBsShape[0] = (const float *) defaultHRIR_rom_azimBsShape; #endif @@ -524,12 +514,14 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } + for ( i = 0; i < model->elevDim3; i++ ) { if ( ( model->azimKSeq[i] = (float *) malloc( ( model->azimDim3[i] + 1 ) * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } + if ( model->azimShapeIdx[i] < 0 ) { azimSegSamples = 360.0f; @@ -538,6 +530,7 @@ static ivas_error DefaultBSplineModel( { azimSegSamples = defaultHRIR_rom_azimSegSamples[model->azimShapeIdx[i]]; } + assert( azimSegSamples == 360.0f / model->azimDim3[i] ); for ( j = 0; j < model->azimDim3[i] + 1; j++ ) { @@ -549,8 +542,8 @@ static ivas_error DefaultBSplineModel( { case 48000: #ifdef FIX_1123_TDREN_16BIT_ROM - q_scale_a = powf( 2.f, -1.f * (float) defaultHRIR_rom_Alpha48_Q ); - q_scale_e = powf( 2.f, -1.f * (float) defaultHRIR_rom_E48_Q ); + q_scale_a = powf( 2.f, -1.f * defaultHRIR_rom_Alpha48_Q ); + q_scale_e = powf( 2.f, -1.f * defaultHRIR_rom_E48_Q ); alphaL_ptr = defaultHRIR_rom_AlphaL48; alphaR_ptr = defaultHRIR_rom_AlphaR48; elL_ptr = defaultHRIR_rom_EL48; @@ -569,8 +562,8 @@ static ivas_error DefaultBSplineModel( break; case 32000: #ifdef FIX_1123_TDREN_16BIT_ROM - q_scale_a = powf( 2.f, -1.f * (float) defaultHRIR_rom_Alpha32_Q ); - q_scale_e = powf( 2.f, -1.f * (float) defaultHRIR_rom_E32_Q ); + q_scale_a = powf( 2.f, -1.f * defaultHRIR_rom_Alpha32_Q ); + q_scale_e = powf( 2.f, -1.f * defaultHRIR_rom_E32_Q ); alphaL_ptr = defaultHRIR_rom_AlphaL32; alphaR_ptr = defaultHRIR_rom_AlphaR32; elL_ptr = defaultHRIR_rom_EL32; @@ -589,8 +582,8 @@ static ivas_error DefaultBSplineModel( break; case 16000: #ifdef FIX_1123_TDREN_16BIT_ROM - q_scale_a = powf( 2.f, -1.f * (float) defaultHRIR_rom_Alpha16_Q ); - q_scale_e = powf( 2.f, -1.f * (float) defaultHRIR_rom_E16_Q ); + q_scale_a = powf( 2.f, -1.f * defaultHRIR_rom_Alpha16_Q ); + q_scale_e = powf( 2.f, -1.f * defaultHRIR_rom_E16_Q ); alphaL_ptr = defaultHRIR_rom_AlphaL16; alphaR_ptr = defaultHRIR_rom_AlphaR16; elL_ptr = defaultHRIR_rom_EL16; @@ -621,8 +614,8 @@ static ivas_error DefaultBSplineModel( } for ( j = 0; j < model->AlphaN * model->K; j++ ) { - model->AlphaL_dyn[j] = (float) alphaL_ptr[j] * q_scale_a; - model->AlphaR_dyn[j] = (float) alphaR_ptr[j] * q_scale_a; + model->AlphaL_dyn[j] = alphaL_ptr[j] * q_scale_a; + model->AlphaR_dyn[j] = alphaR_ptr[j] * q_scale_a; } model->AlphaL = (const float *) model->AlphaL_dyn; model->AlphaR = (const float *) model->AlphaR_dyn; @@ -632,6 +625,7 @@ static ivas_error DefaultBSplineModel( #ifndef FIX_1123_TDREN_16BIT_ROM HRTF_energy_sections_precalc( model ); #endif + if ( ( model->EL_dyn = (float *) malloc( HRTF_MODEL_N_SECTIONS * model->AlphaN * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); @@ -642,8 +636,8 @@ static ivas_error DefaultBSplineModel( } for ( j = 0; j < HRTF_MODEL_N_SECTIONS * model->AlphaN; j++ ) { - model->EL_dyn[j] = (float) elL_ptr[j] * q_scale_e; - model->ER_dyn[j] = (float) elR_ptr[j] * q_scale_e; + model->EL_dyn[j] = elL_ptr[j] * q_scale_e; + model->ER_dyn[j] = elR_ptr[j] * q_scale_e; } model->EL = (const float *) model->EL_dyn; @@ -662,10 +656,10 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_ITD_elevKSeq_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_ITD_elevKSeq_Q ); for ( j = 0; j < modelITD->elevDim3 - 2; j++ ) { - modelITD->elevKSeq_dyn[j] = (float) defaultHRIR_rom_ITD_elevKSeq[j] * q_scale; + modelITD->elevKSeq_dyn[j] = defaultHRIR_rom_ITD_elevKSeq[j] * q_scale; } modelITD->elevKSeq = (const float *) modelITD->elevKSeq_dyn; #else @@ -680,10 +674,10 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_ITD_azimKSeq_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_ITD_azimKSeq_Q ); for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ ) { - modelITD->azimKSeq_dyn[j] = (float) defaultHRIR_rom_ITD_azimKSeq[j] * q_scale; + modelITD->azimKSeq_dyn[j] = defaultHRIR_rom_ITD_azimKSeq[j] * q_scale; } modelITD->azimKSeq = (const float *) modelITD->azimKSeq_dyn; #else @@ -695,10 +689,10 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_ITD_W_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_ITD_W_Q ); for ( j = 0; j < size_rom_table; j++ ) { - modelITD->W_dyn[j] = (float) defaultHRIR_rom_ITD_W[j] * q_scale; + modelITD->W_dyn[j] = defaultHRIR_rom_ITD_W[j] * q_scale; } modelITD->W = (const float *) modelITD->W_dyn; @@ -707,10 +701,10 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_ITD_azimBsShape_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_ITD_azimBsShape_Q ); for ( j = 0; j < size_rom_table; j++ ) { - modelITD->azimBsShape_dyn[j] = (float) defaultHRIR_rom_ITD_azimBsShape[j] * q_scale; + modelITD->azimBsShape_dyn[j] = defaultHRIR_rom_ITD_azimBsShape[j] * q_scale; } modelITD->azimBsShape = (const float *) modelITD->azimBsShape_dyn; @@ -719,10 +713,10 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_ITD_elevBsShape_Q ); + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_ITD_elevBsShape_Q ); for ( j = 0; j < size_rom_table; j++ ) { - modelITD->elevBsShape_dyn[j] = (float) defaultHRIR_rom_ITD_elevBsShape[j] * q_scale; + modelITD->elevBsShape_dyn[j] = defaultHRIR_rom_ITD_elevBsShape[j] * q_scale; } modelITD->elevBsShape = (const float *) modelITD->elevBsShape_dyn; #else @@ -730,11 +724,12 @@ static ivas_error DefaultBSplineModel( modelITD->azimBsShape = (const float *) defaultHRIR_rom_ITD_azimBsShape; modelITD->elevBsShape = (const float *) defaultHRIR_rom_ITD_elevBsShape; #endif + HRTF_model_precalc( model ); #ifdef FIX_1123_TDREN_16BIT_ROM - q_scale = powf( 2.f, -1.f * (float) defaultHRIR_rom_latency_s_Q ); - HrFiltSet_p->latency_s = (float) defaultHRIR_rom_latency_s * q_scale; + q_scale = powf( 2.f, -1.f * defaultHRIR_rom_latency_s_Q ); + HrFiltSet_p->latency_s = defaultHRIR_rom_latency_s * q_scale; #else HrFiltSet_p->latency_s = defaultHRIR_rom_latency_s; #endif diff --git a/lib_rend/ivas_objectRenderer_sources.c b/lib_rend/ivas_objectRenderer_sources.c index 0633995e30637ba96694f0412814bffab09ed0f5..0dd1ba482761931ba4dc90351207233b659f1539 100644 --- a/lib_rend/ivas_objectRenderer_sources.c +++ b/lib_rend/ivas_objectRenderer_sources.c @@ -636,8 +636,6 @@ ivas_error TDREND_SRC_Alloc( ivas_error error; TDREND_SRC_t *Src_p; - error = IVAS_ERR_OK; - *Src_pp = NULL; /* Allocate the TDREND_SRC_t variable */ @@ -660,7 +658,7 @@ ivas_error TDREND_SRC_Alloc( *Src_pp = Src_p; - return error; + return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_prot_rend.h b/lib_rend/ivas_prot_rend.h index 6e27b0d29b1581db8e9966cdf457a4937f7aad1b..a42f893c6e7284f62b9050909d37e4f15651e376 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -585,7 +585,7 @@ void ivas_HRTF_CRend_binary_close( ivas_error ivas_HRTF_statistics_init( HRTFS_STATISTICS_HANDLE *hHrtfStatistics, /* i/o: HRTF statistics structure */ - int32_t sampleRate /* i : Sample rate */ + const int32_t sampleRate /* i : Sample rate */ ); void ivas_HRTF_statistics_close( diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index dfc02119c1e1eb870dfb8e0cb2395b6e959bf177..124b5e5767d73d5afbbcf68040e2877e250b3fe7 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -35,7 +35,6 @@ #include "prot.h" #include "ivas_prot_rend.h" #include "ivas_rom_rend.h" -#include "ivas_rom_TdBinauralRenderer.h" #ifdef DEBUGGING #include "debug.h" #endif @@ -105,10 +104,12 @@ ivas_error ivas_render_config_init_from_rom( ) { int16_t i; + if ( hRenderConfig == NULL || *hRenderConfig == NULL ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Unexpected null pointer while attempting to fill renderer configuration from ROM" ); } + #ifdef DEBUGGING ( *hRenderConfig )->renderer_type_override = IVAS_RENDER_TYPE_OVERRIDE_NONE; #endif diff --git a/lib_rend/ivas_rom_binauralRenderer.h b/lib_rend/ivas_rom_binauralRenderer.h index 9bc1e6af904a526488f8707b9530224907cf5dee..bd9d6aa17ced2c36e998c392d812eedd4c103af2 100644 --- a/lib_rend/ivas_rom_binauralRenderer.h +++ b/lib_rend/ivas_rom_binauralRenderer.h @@ -44,53 +44,53 @@ /* Binaural rendering data set based on HRIRs */ #ifdef FIX_1123_FASTCONV_16BIT_ROM -extern int16_t FASTCONV_HOA3_latency_s_factorQ; +extern const int16_t FASTCONV_HOA3_latency_s_factorQ; extern const int32_t FASTCONV_HOA3_latency_s; -extern int16_t FASTCONV_HRIR_HOA3_factorQ; -extern int16_t leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t FASTCONV_HRIR_HOA3_factorQ; +extern const int16_t leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t FASTCONV_HOA2_latency_s_factorQ; +extern const int16_t FASTCONV_HOA2_latency_s_factorQ; extern const int32_t FASTCONV_HOA2_latency_s; -extern int16_t FASTCONV_HRIR_HOA2_factorQ; -extern int16_t leftHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t leftHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t FASTCONV_HRIR_HOA2_factorQ; +extern const int16_t leftHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t leftHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t FASTCONV_FOA_latency_s_factorQ; +extern const int16_t FASTCONV_FOA_latency_s_factorQ; extern const int32_t FASTCONV_FOA_latency_s; -extern int16_t FASTCONV_HRIR_FOA_factorQ; -extern int16_t leftHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t leftHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t rightHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t FASTCONV_HRIR_FOA_factorQ; +extern const int16_t leftHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t leftHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern const int16_t rightHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; -extern int16_t FASTCONV_HRIR_latency_s_factorQ; +extern const int16_t FASTCONV_HRIR_latency_s_factorQ; extern const int32_t FASTCONV_HRIR_latency_s; -extern int16_t FASTCONV_HRIR_factorQ; -extern int16_t leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; -extern int16_t leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; -extern int16_t rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; -extern int16_t rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; +extern const int16_t FASTCONV_HRIR_factorQ; +extern const int16_t leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; +extern const int16_t leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; +extern const int16_t rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; +extern const int16_t rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; /* Binaural rendering data set based on BRIRs */ -extern int16_t FASTCONV_BRIR_latency_s_factorQ; +extern const int16_t FASTCONV_BRIR_latency_s_factorQ; extern const int32_t FASTCONV_BRIR_latency_s; -extern int16_t FASTCONV_BRIR_factorQ; -extern int16_t leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; -extern int16_t leftBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; -extern int16_t rightBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; -extern int16_t rightBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; +extern const int16_t FASTCONV_BRIR_factorQ; +extern const int16_t leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; +extern const int16_t leftBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; +extern const int16_t rightBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; +extern const int16_t rightBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; /* Reverberation parameters based on BRIRs for fastconv */ -extern int16_t fastconvReverberationTimes_factorQ; -extern int16_t fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX]; -extern int16_t fastconvReverberationEneCorrections_factorQ; -extern int16_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX]; +extern const int16_t fastconvReverberationTimes_factorQ; +extern const int16_t fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX]; +extern const int16_t fastconvReverberationEneCorrections_factorQ; +extern const int16_t fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX]; #else extern const float FASTCONV_HRIR_latency_s; @@ -134,9 +134,9 @@ extern float fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX]; /* Binaural rendering data set based on BRIRs, to be used in a combined manner * with the above binaural rendering data set based on HRIRs for parametric * renderer */ -extern int16_t hrtfShCoeffs_factorQ; -extern int16_t hrtfShCoeffsRe[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; -extern int16_t hrtfShCoeffsIm[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; +extern const int16_t hrtfShCoeffs_factorQ; +extern const int16_t hrtfShCoeffsRe[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; +extern const int16_t hrtfShCoeffsIm[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Binaural rendering data set based on BRIRs, to be used in a combined manner * with the above binaural rendering data set based on HRIRs for parametric diff --git a/lib_rend/ivas_rom_binaural_crend_head.c b/lib_rend/ivas_rom_binaural_crend_head.c index 3f320b1ace5d1e0252e2689a6b8609b3a8910890..c5eb4d509cbbf38fed5a2040cb77ec6fd34f8c25 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.c +++ b/lib_rend/ivas_rom_binaural_crend_head.c @@ -53,7 +53,9 @@ /********************** CRendBin_Combined_HRIR **********************/ +#ifndef FIX_1123_CREND_16BIT_ROM const float CRendBin_Combined_HRIR_latency_s = 0x1.5d8ap-16; +#endif #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_HRIR_latency_s_Q_fx = 31; const int32_t CRendBin_Combined_HRIR_latency_s_fx = 44741;/*Q-31*/ @@ -64,14 +66,14 @@ const int32_t CRendBin_Combined_HRIR_latency_s_fx = 44741;/*Q-31*/ const int16_t CRendBin_Combined_HRIR_max_num_iterations_48kHz = 1; const uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; 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}}; +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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_48kHz_fx = 0; const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -564,25 +566,25 @@ const int16_t CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURA }; #endif // FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const int16_t CRendBin_Combined_HRIR_max_num_iterations_32kHz = 1; const uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; 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}}; +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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_32kHz_fx = 0; const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -955,25 +957,25 @@ const int16_t CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURA }; #endif // FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const int16_t CRendBin_Combined_HRIR_max_num_iterations_16kHz = 1; const uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; 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}}; +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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_16kHz_fx = 0; const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { { 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}, @@ -1226,11 +1228,11 @@ const int16_t CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURA }; #endif // FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; -const int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; @@ -1247,14 +1249,14 @@ const int32_t CRendBin_FOA_HRIR_latency_s_fx = 2;/*Q-31*/ const int16_t CRendBin_FOA_HRIR_max_num_iterations_48kHz = 1; const uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_48kHz_fx = 0; const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -1398,22 +1400,22 @@ const int16_t CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNEL const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ const int16_t CRendBin_FOA_HRIR_max_num_iterations_32kHz = 1; const uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_32kHz_fx = 0; const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -1525,22 +1527,22 @@ const int16_t CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNEL const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const int16_t CRendBin_FOA_HRIR_max_num_iterations_16kHz = 1; const uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_16kHz_fx = 0; const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { { 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}, @@ -1620,8 +1622,8 @@ const int16_t CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNEL const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; @@ -1638,14 +1640,14 @@ const int32_t CRendBin_HOA2_HRIR_latency_s_fx = 44741;/*Q-31*/ const int16_t CRendBin_HOA2_HRIR_max_num_iterations_48kHz = 1; const uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_48kHz_fx = 0; const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -1946,8 +1948,8 @@ const int16_t CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANN }; #endif // FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; -const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; +int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM const float *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; const float *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; @@ -1957,14 +1959,14 @@ const float *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL, const int16_t CRendBin_HOA2_HRIR_max_num_iterations_32kHz = 1; const uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; +uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}},{{160},{160}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_32kHz_fx = 0; const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -2204,14 +2206,14 @@ const float *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL, const int16_t CRendBin_HOA2_HRIR_max_num_iterations_16kHz = 1; const uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_16kHz_fx = 0; const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { { 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}, @@ -2371,8 +2373,8 @@ const int16_t CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANN const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; @@ -2389,14 +2391,14 @@ const int32_t CRendBin_HOA3_HRIR_latency_s_fx = 44741;/*Q-31*/ const int16_t CRendBin_HOA3_HRIR_max_num_iterations_48kHz = 1; const uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; +uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}},{{240},{240}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_48kHz_fx = 0; const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -2924,8 +2926,8 @@ const int16_t CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANN const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 32000 */ @@ -2939,7 +2941,7 @@ const float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA3_ const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_32kHz_fx = 0; const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { {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, @@ -3339,22 +3341,22 @@ const int16_t CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANN const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]={NULL,NULL}; /* Sample Rate = 16000 */ const int16_t CRendBin_HOA3_HRIR_max_num_iterations_16kHz = 1; const uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]={{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1} }; const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {0, 0}; -const uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; +uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]={{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}},{{80},{80}}}; 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}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_16kHz_fx = 0; const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +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]={ { { 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}, @@ -3626,14 +3628,16 @@ const int16_t CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANN const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]={NULL,NULL}; #endif // FIX_1123_CREND_16BIT_ROM -const float *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; -const float *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; +float *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]={NULL,NULL}; /********************** CRendBin_Combined_BRIR **********************/ +#ifndef FIX_1123_CREND_16BIT_ROM const float CRendBin_Combined_BRIR_latency_s = 0x1.31d64p-13; +#endif #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_BRIR_latency_s_Q_fx = 31; const int32_t CRendBin_Combined_BRIR_latency_s_fx = 313177;/*Q-31*/ @@ -3644,14 +3648,14 @@ const int32_t CRendBin_Combined_BRIR_latency_s_fx = 313177;/*Q-31*/ const int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz = 22; const uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS] = {40, 40}; -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240},{116, 118, 117, 121, 112, 119, 121, 131, 134, 131, 137, 127, 134, 135, 134, 135, 129, 139, 135, 130, 128, 240}},{{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240},{122, 106, 121, 114, 121, 123, 119, 126, 123, 126, 127, 130, 128, 136, 132, 131, 129, 141, 137, 131, 129, 240}},{{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240},{118, 104, 116, 104, 123, 123, 122, 125, 130, 128, 132, 135, 131, 132, 131, 132, 135, 137, 144, 129, 129, 240}},{{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240},{102, 117, 116, 121, 117, 114, 115, 125, 126, 124, 125, 142, 133, 124, 129, 132, 134, 137, 143, 125, 125, 240}},{{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240},{116, 115, 117, 120, 121, 119, 125, 129, 123, 129, 124, 127, 128, 143, 133, 131, 136, 141, 158, 127, 131, 240}},{{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240},{112, 106, 118, 123, 115, 120, 129, 123, 130, 127, 130, 130, 131, 131, 131, 135, 134, 153, 138, 132, 127, 240}},{{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240},{107, 112, 111, 120, 115, 125, 122, 123, 132, 123, 133, 138, 125, 134, 130, 131, 135, 137, 136, 127, 121, 240}},{{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240},{111, 113, 132, 115, 121, 123, 121, 127, 135, 128, 129, 128, 133, 130, 133, 138, 134, 137, 152, 138, 124, 240}},{{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240},{114, 104, 114, 117, 125, 127, 123, 129, 123, 127, 144, 131, 138, 132, 129, 129, 132, 134, 136, 127, 121, 240}},{{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240},{100, 102, 112, 118, 115, 116, 118, 116, 121, 124, 125, 121, 125, 130, 127, 132, 133, 134, 134, 129, 132, 240}},{{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240},{106, 93, 103, 108, 124, 111, 114, 115, 120, 121, 119, 123, 131, 130, 132, 132, 132, 131, 140, 129, 131, 240}},{{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240},{108, 101, 115, 115, 115, 110, 121, 124, 124, 120, 122, 129, 124, 128, 125, 132, 135, 133, 138, 160, 119, 240}},{{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240},{112, 106, 114, 110, 128, 117, 120, 126, 124, 128, 126, 132, 129, 127, 133, 134, 136, 133, 154, 197, 129, 240}},{{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240},{102, 107, 111, 116, 116, 120, 118, 115, 120, 119, 128, 131, 131, 130, 128, 126, 126, 132, 145, 136, 133, 240}},{{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240},{111, 117, 106, 120, 123, 121, 125, 125, 130, 125, 123, 123, 127, 131, 125, 131, 135, 134, 148, 134, 132, 240}}}; const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz = 98; const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x1.cb2p-3, 0x1.d1dp-3, 0x1.ef4p-3, 0x1.a84p-3, 0x1.beap-3, 0x1.c89p-3, 0x1.db7p-3, 0x1.fc5p-3, 0x1.fe8p-3, 0x1.0bep-2, 0x1.f86p-3, 0x1.1dep-2, 0x1.249p-2, 0x1.0cd8p-2, 0x1.166p-2},{0x1.cb2p-3, 0x1.d1dp-3, 0x1.ef4p-3, 0x1.a84p-3, 0x1.beap-3, 0x1.c89p-3, 0x1.db7p-3, 0x1.fc5p-3, 0x1.fe8p-3, 0x1.0bep-2, 0x1.f86p-3, 0x1.1dep-2, 0x1.249p-2, 0x1.0cd8p-2, 0x1.166p-2}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz_fx = 15; const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8168, 8572, 8070, 9148, 9362, 8603, 8908},{7346, 7453, 7924, 6788, 7146, 7305, 7607, 8133, 8168, 8572, 8070, 9148, 9362, 8603, 8908}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98},{47, 47, 47, 47, 47, 47, 51, 51, 58, 58, 58, 65, 65, 65, 65, 65, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 91, 91, 93, 93, 93, 98}}; const float CRendBin_Combined_BRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]={ { {-0x1.2ap-7, 0x1.32p-7, -0x1.c8p-9, 0x0p+0, 0x1.1ep-7, -0x1.48p-8, 0x1.cp-9, -0x1.4p-11, 0x1.4p-10, -0x1.84p-8, -0x1.98p-7, -0x1.5p-9, 0x1.4p-8, -0x1.ap-9, 0x1.88p-9, 0x1.1cp-8, 0x1.ep-9, -0x1.68p-9, 0x1.1p-9, -0x1.f8p-8, -0x1.7p-10, 0x1p-9, 0x1.ap-9, -0x1p-12, -0x1.8p-13, 0x1p-10, 0x1.fp-10, -0x1.a4p-8, -0x1.6p-8, 0x1.28p-9, 0x1.24p-8, -0x1.2p-9, 0x1.3p-8, 0x1.24p-7, -0x1.88p-7, 0x1.cp-10, -0x1.78p-8, -0x1.f8p-9, 0x1.6p-9, -0x1.8p-10, 0x1.ep-8, -0x1.28p-9, 0x1.bp-8, 0x1.c8p-9, 0x1.1p-10, -0x1.cp-12, 0x1.dp-9, 0x1p-12, -0x1.8p-11, -0x1.e8p-9, 0x1.6p-7, -0x1.e8p-8, -0x1.28p-9, 0x1.fp-9, 0x1.1p-8, -0x1.8p-13, -0x1.ep-9, 0x1.1p-9, -0x1.08p-8, 0x1.14p-8, 0x1.ap-11, 0x1.9p-10, -0x1p-13, -0x1.7p-10, -0x1.6p-10, 0x1.7p-8, -0x1.d6p-7, 0x1.cp-9, -0x1.fp-10, -0x1.1p-7, -0x1.8p-10, 0x1.ccp-8, 0x1.b8p-9, 0x1.2p-8, -0x1.9cp-8, 0x1.4cp-8, -0x1.2p-9, 0x1.a8p-9, 0x1.fp-10, 0x1.48p-9, -0x1.6p-9, 0x1.2p-10, 0x1.e8p-9, -0x1.4p-9, -0x1.7p-8, 0x1.3p-9, -0x1.58p-8, 0x1.1p-10, 0x1.fp-9, 0x1p-14, -0x1.fp-10, -0x1.18p-9, 0x1p-10, 0x1.1p-9, -0x1.ep-11, 0x1.48p-9, @@ -7715,14 +7719,14 @@ const float CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS][288 const int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz = 22; const uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22}, {22, 22} }; const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS] = {40, 40}; -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 136, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 136, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 138, 132, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 138, 132, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 127, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 127, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 122, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 124, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 122, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 124, 160}},{{115, 115, 115, 119, 121, 119, 124, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 139, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 124, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 139, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 128, 123, 128, 125, 130, 129, 131, 131, 130, 134, 133, 148, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 128, 123, 128, 125, 130, 129, 131, 131, 130, 134, 133, 148, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 123, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 123, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 125, 131, 122, 127, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 125, 131, 122, 127, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 126, 136, 128, 126, 127, 132, 132, 129, 125, 121, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 126, 136, 128, 126, 127, 132, 132, 129, 125, 121, 160}},{{99, 100, 111, 117, 114, 113, 118, 116, 121, 123, 124, 121, 125, 130, 127, 132, 132, 129, 133, 128, 131, 160},{99, 100, 111, 117, 114, 113, 118, 116, 121, 123, 124, 121, 125, 130, 127, 132, 132, 129, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 135, 127, 129, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 135, 127, 129, 160}},{{105, 100, 112, 114, 115, 108, 116, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 138, 154, 116, 160},{105, 100, 112, 114, 115, 108, 116, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 138, 154, 116, 160}},{{110, 106, 113, 110, 122, 116, 118, 125, 123, 127, 125, 127, 128, 127, 133, 129, 132, 132, 142, 147, 127, 160},{110, 106, 113, 110, 122, 116, 118, 125, 123, 127, 125, 127, 128, 127, 133, 129, 132, 132, 142, 147, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 134, 126, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 134, 126, 160}},{{110, 117, 106, 118, 118, 115, 121, 124, 128, 125, 122, 121, 126, 130, 124, 130, 133, 131, 137, 133, 131, 160},{110, 117, 106, 118, 118, 115, 121, 124, 128, 125, 122, 121, 126, 130, 124, 130, 133, 131, 137, 133, 131, 160}}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]={{{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 136, 134, 129, 128, 160},{115, 117, 117, 120, 112, 118, 121, 130, 126, 130, 136, 127, 133, 135, 132, 133, 129, 136, 134, 129, 128, 160}},{{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 138, 132, 131, 128, 160},{121, 106, 119, 113, 120, 123, 114, 126, 123, 125, 127, 128, 127, 134, 132, 130, 129, 138, 132, 131, 128, 160}},{{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 127, 160},{113, 103, 116, 104, 123, 123, 122, 124, 130, 128, 132, 131, 131, 132, 130, 132, 130, 135, 137, 128, 127, 160}},{{102, 116, 116, 121, 116, 114, 115, 121, 125, 122, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 124, 160},{102, 116, 116, 121, 116, 114, 115, 121, 125, 122, 124, 130, 132, 122, 127, 131, 131, 135, 133, 124, 124, 160}},{{115, 115, 115, 119, 121, 119, 124, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 139, 146, 127, 131, 160},{115, 115, 115, 119, 121, 119, 124, 127, 123, 129, 122, 126, 128, 134, 130, 130, 131, 139, 146, 127, 131, 160}},{{112, 106, 118, 121, 115, 117, 128, 123, 128, 125, 130, 129, 131, 131, 130, 134, 133, 148, 130, 132, 126, 160},{112, 106, 118, 121, 115, 117, 128, 123, 128, 125, 130, 129, 131, 131, 130, 134, 133, 148, 130, 132, 126, 160}},{{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 123, 133, 130, 129, 134, 134, 135, 127, 120, 160},{107, 112, 110, 119, 114, 124, 121, 121, 132, 122, 131, 134, 123, 133, 130, 129, 134, 134, 135, 127, 120, 160}},{{110, 113, 123, 113, 121, 120, 120, 125, 131, 122, 127, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160},{110, 113, 123, 113, 121, 120, 120, 125, 131, 122, 127, 128, 132, 130, 132, 136, 133, 136, 135, 128, 124, 160}},{{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 126, 136, 128, 126, 127, 132, 132, 129, 125, 121, 160},{114, 101, 113, 113, 124, 126, 123, 128, 122, 127, 132, 126, 136, 128, 126, 127, 132, 132, 129, 125, 121, 160}},{{99, 100, 111, 117, 114, 113, 118, 116, 121, 123, 124, 121, 125, 130, 127, 132, 132, 129, 133, 128, 131, 160},{99, 100, 111, 117, 114, 113, 118, 116, 121, 123, 124, 121, 125, 130, 127, 132, 132, 129, 133, 128, 131, 160}},{{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 135, 127, 129, 160},{105, 93, 103, 108, 119, 110, 111, 114, 120, 121, 119, 122, 130, 128, 130, 131, 132, 131, 135, 127, 129, 160}},{{105, 100, 112, 114, 115, 108, 116, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 138, 154, 116, 160},{105, 100, 112, 114, 115, 108, 116, 120, 123, 117, 122, 129, 124, 128, 124, 132, 135, 131, 138, 154, 116, 160}},{{110, 106, 113, 110, 122, 116, 118, 125, 123, 127, 125, 127, 128, 127, 133, 129, 132, 132, 142, 147, 127, 160},{110, 106, 113, 110, 122, 116, 118, 125, 123, 127, 125, 127, 128, 127, 133, 129, 132, 132, 142, 147, 127, 160}},{{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 134, 126, 160},{102, 107, 110, 112, 115, 117, 117, 115, 120, 118, 127, 130, 130, 129, 126, 126, 125, 130, 141, 134, 126, 160}},{{110, 117, 106, 118, 118, 115, 121, 124, 128, 125, 122, 121, 126, 130, 124, 130, 133, 131, 137, 133, 131, 160},{110, 117, 106, 118, 118, 115, 121, 124, 128, 125, 122, 121, 126, 130, 124, 130, 133, 131, 137, 133, 131, 160}}}; const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz = 97; const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x1.cb2p-3, 0x1.d1dp-3, 0x1.ef4p-3, 0x1.a84p-3, 0x1.becp-3, 0x1.c8ap-3, 0x1.db7p-3, 0x1.fc4p-3, 0x1.fe7p-3, 0x1.0bep-2, 0x1.f88p-3, 0x1.1dd8p-2, 0x1.24a8p-2, 0x1.0cd8p-2, 0x1.1668p-2},{0x1.cb2p-3, 0x1.d1dp-3, 0x1.ef4p-3, 0x1.a84p-3, 0x1.becp-3, 0x1.c8ap-3, 0x1.db7p-3, 0x1.fc4p-3, 0x1.fe7p-3, 0x1.0bep-2, 0x1.f88p-3, 0x1.1dd8p-2, 0x1.24a8p-2, 0x1.0cd8p-2, 0x1.1668p-2}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz_fx = 15; const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7346, 7453, 7924, 6788, 7148, 7306, 7607, 8132, 8167, 8572, 8072, 9147, 9365, 8603, 8909},{7346, 7453, 7924, 6788, 7148, 7306, 7607, 8132, 8167, 8572, 8072, 9147, 9365, 8603, 8909}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 62, 62, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 62, 62, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]={{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 62, 62, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97},{47, 47, 47, 47, 47, 47, 50, 50, 56, 56, 56, 62, 62, 63, 63, 63, 72, 72, 72, 74, 74, 77, 77, 79, 81, 81, 81, 81, 87, 87, 87, 87, 87, 87, 93, 93, 93, 93, 93, 97}}; const float CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]={ { {-0x1.2ap-7, 0x1.32p-7, -0x1.c8p-9, 0x0p+0, 0x1.1ep-7, -0x1.48p-8, 0x1.cp-9, -0x1.6p-11, 0x1.4p-10, -0x1.88p-8, -0x1.98p-7, -0x1.5p-9, 0x1.4p-8, -0x1.ap-9, 0x1.88p-9, 0x1.1cp-8, 0x1.ep-9, -0x1.68p-9, 0x1.1p-9, -0x1.f8p-8, -0x1.7p-10, 0x1.fp-10, 0x1.ap-9, -0x1p-12, -0x1.8p-13, 0x1p-10, 0x1.fp-10, -0x1.a8p-8, -0x1.6p-8, 0x1.28p-9, 0x1.24p-8, -0x1.28p-9, 0x1.3p-8, 0x1.24p-7, -0x1.88p-7, 0x1.cp-10, -0x1.78p-8, -0x1p-8, 0x1.6p-9, -0x1.8p-10, 0x1.e4p-8, -0x1.28p-9, 0x1.b4p-8, 0x1.c8p-9, 0x1.2p-10, -0x1p-11, 0x1.dp-9, 0x1.8p-13, -0x1.8p-11, -0x1.e8p-9, 0x1.6p-7, -0x1.e8p-8, -0x1.28p-9, 0x1.fp-9, 0x1.1p-8, -0x1.8p-13, -0x1.ep-9, 0x1.1p-9, -0x1.08p-8, 0x1.1p-8, 0x1.ap-11, 0x1.9p-10, -0x1p-14, -0x1.7p-10, -0x1.6p-10, 0x1.6cp-8, -0x1.d6p-7, 0x1.b8p-9, -0x1.ep-10, -0x1.1p-7, -0x1.7p-10, 0x1.ccp-8, 0x1.cp-9, 0x1.1cp-8, -0x1.9cp-8, 0x1.4cp-8, -0x1.2p-9, 0x1.ap-9, 0x1p-9, 0x1.4p-9, -0x1.58p-9, 0x1.1p-10, 0x1.fp-9, -0x1.48p-9, -0x1.7p-8, 0x1.28p-9, -0x1.54p-8, 0x1p-10, 0x1.f8p-9, 0x0p+0, -0x1.fp-10, -0x1.2p-9, 0x1.1p-10, 0x1.08p-9, -0x1.cp-11, 0x1.4p-9, @@ -11626,14 +11630,14 @@ const float CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS][286 const int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz = 23; const uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]={{23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23}, {23, 23} }; const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS] = {40, 40}; -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]={{{77, 77, 77, 79, 77, 78, 79, 79, 79, 77, 78, 77, 78, 78, 77, 79, 79, 79, 79, 78, 79, 77, 80},{77, 77, 77, 79, 77, 78, 79, 79, 79, 77, 78, 77, 78, 78, 77, 79, 79, 79, 79, 78, 79, 77, 80}},{{78, 77, 78, 78, 79, 79, 78, 78, 79, 79, 77, 79, 78, 79, 76, 79, 78, 78, 76, 79, 79, 78, 80},{78, 77, 78, 78, 79, 79, 78, 78, 79, 79, 77, 79, 78, 79, 76, 79, 78, 78, 76, 79, 79, 78, 80}},{{77, 76, 74, 79, 74, 77, 77, 77, 76, 79, 77, 78, 76, 78, 76, 78, 79, 78, 79, 79, 78, 78, 80},{77, 76, 74, 79, 74, 77, 77, 77, 76, 79, 77, 78, 76, 78, 76, 78, 79, 78, 79, 79, 78, 78, 80}},{{76, 78, 78, 78, 78, 79, 76, 77, 79, 78, 77, 79, 79, 79, 78, 79, 78, 77, 78, 79, 78, 78, 80},{76, 78, 78, 78, 78, 79, 76, 77, 79, 78, 77, 79, 79, 79, 78, 79, 78, 77, 78, 79, 78, 78, 80}},{{78, 77, 77, 76, 79, 77, 79, 78, 76, 78, 78, 78, 79, 79, 78, 78, 79, 78, 78, 79, 78, 77, 80},{78, 77, 77, 76, 79, 77, 79, 78, 76, 78, 78, 78, 79, 79, 78, 78, 79, 78, 78, 79, 78, 77, 80}},{{78, 76, 78, 77, 78, 78, 78, 78, 79, 78, 79, 79, 78, 78, 78, 77, 79, 77, 78, 79, 78, 78, 80},{78, 76, 78, 77, 78, 78, 78, 78, 79, 78, 79, 79, 78, 78, 78, 77, 79, 77, 78, 79, 78, 78, 80}},{{78, 76, 75, 78, 76, 78, 79, 77, 79, 78, 77, 77, 79, 79, 78, 77, 78, 79, 78, 79, 76, 78, 80},{78, 76, 75, 78, 76, 78, 79, 77, 79, 78, 77, 77, 79, 79, 78, 77, 78, 79, 78, 79, 76, 78, 80}},{{78, 76, 78, 77, 75, 77, 77, 79, 79, 79, 78, 79, 78, 79, 79, 78, 78, 79, 79, 79, 79, 76, 80},{78, 76, 78, 77, 75, 77, 77, 79, 79, 79, 78, 79, 78, 79, 79, 78, 78, 79, 79, 79, 79, 76, 80}},{{78, 79, 78, 76, 77, 78, 77, 77, 78, 78, 79, 79, 76, 78, 78, 79, 79, 79, 78, 79, 78, 77, 80},{78, 79, 78, 76, 77, 78, 77, 77, 78, 78, 79, 79, 76, 78, 78, 79, 79, 79, 78, 79, 78, 77, 80}},{{75, 75, 78, 78, 78, 79, 78, 78, 78, 78, 78, 79, 76, 78, 78, 78, 79, 79, 78, 79, 79, 76, 80},{75, 75, 78, 78, 78, 79, 78, 78, 78, 78, 78, 79, 76, 78, 78, 78, 79, 79, 78, 79, 79, 76, 80}},{{76, 76, 77, 76, 79, 79, 76, 79, 76, 77, 79, 77, 79, 77, 78, 75, 78, 79, 78, 79, 78, 79, 80},{76, 76, 77, 76, 79, 79, 76, 79, 76, 77, 79, 77, 79, 77, 78, 75, 78, 79, 78, 79, 78, 79, 80}},{{76, 79, 76, 74, 78, 78, 77, 77, 78, 79, 78, 78, 77, 77, 79, 77, 79, 78, 79, 79, 77, 78, 80},{76, 79, 76, 74, 78, 78, 77, 77, 78, 79, 78, 78, 77, 77, 79, 77, 79, 78, 79, 79, 77, 78, 80}},{{76, 78, 79, 78, 76, 78, 78, 78, 77, 78, 74, 77, 79, 78, 78, 79, 79, 79, 79, 79, 77, 79, 80},{76, 78, 79, 78, 76, 78, 78, 78, 77, 78, 74, 77, 79, 78, 78, 79, 79, 79, 79, 79, 77, 79, 80}},{{75, 78, 78, 76, 78, 77, 78, 78, 77, 78, 78, 79, 79, 79, 75, 77, 79, 79, 79, 76, 79, 77, 80},{75, 78, 78, 76, 78, 77, 78, 78, 77, 78, 78, 79, 79, 79, 75, 77, 79, 79, 79, 76, 79, 77, 80}},{{78, 77, 77, 78, 76, 78, 78, 76, 78, 79, 79, 79, 79, 79, 76, 79, 79, 79, 79, 76, 78, 79, 80},{78, 77, 77, 78, 76, 78, 78, 76, 78, 79, 79, 79, 79, 79, 76, 79, 79, 79, 79, 76, 78, 79, 80}}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]={{{77, 77, 77, 79, 77, 78, 79, 79, 79, 77, 78, 77, 78, 78, 77, 79, 79, 79, 79, 78, 79, 77, 80},{77, 77, 77, 79, 77, 78, 79, 79, 79, 77, 78, 77, 78, 78, 77, 79, 79, 79, 79, 78, 79, 77, 80}},{{78, 77, 78, 78, 79, 79, 78, 78, 79, 79, 77, 79, 78, 79, 76, 79, 78, 78, 76, 79, 79, 78, 80},{78, 77, 78, 78, 79, 79, 78, 78, 79, 79, 77, 79, 78, 79, 76, 79, 78, 78, 76, 79, 79, 78, 80}},{{77, 76, 74, 79, 74, 77, 77, 77, 76, 79, 77, 78, 76, 78, 76, 78, 79, 78, 79, 79, 78, 78, 80},{77, 76, 74, 79, 74, 77, 77, 77, 76, 79, 77, 78, 76, 78, 76, 78, 79, 78, 79, 79, 78, 78, 80}},{{76, 78, 78, 78, 78, 79, 76, 77, 79, 78, 77, 79, 79, 79, 78, 79, 78, 77, 78, 79, 78, 78, 80},{76, 78, 78, 78, 78, 79, 76, 77, 79, 78, 77, 79, 79, 79, 78, 79, 78, 77, 78, 79, 78, 78, 80}},{{78, 77, 77, 76, 79, 77, 79, 78, 76, 78, 78, 78, 79, 79, 78, 78, 79, 78, 78, 79, 78, 77, 80},{78, 77, 77, 76, 79, 77, 79, 78, 76, 78, 78, 78, 79, 79, 78, 78, 79, 78, 78, 79, 78, 77, 80}},{{78, 76, 78, 77, 78, 78, 78, 78, 79, 78, 79, 79, 78, 78, 78, 77, 79, 77, 78, 79, 78, 78, 80},{78, 76, 78, 77, 78, 78, 78, 78, 79, 78, 79, 79, 78, 78, 78, 77, 79, 77, 78, 79, 78, 78, 80}},{{78, 76, 75, 78, 76, 78, 79, 77, 79, 78, 77, 77, 79, 79, 78, 77, 78, 79, 78, 79, 76, 78, 80},{78, 76, 75, 78, 76, 78, 79, 77, 79, 78, 77, 77, 79, 79, 78, 77, 78, 79, 78, 79, 76, 78, 80}},{{78, 76, 78, 77, 75, 77, 77, 79, 79, 79, 78, 79, 78, 79, 79, 78, 78, 79, 79, 79, 79, 76, 80},{78, 76, 78, 77, 75, 77, 77, 79, 79, 79, 78, 79, 78, 79, 79, 78, 78, 79, 79, 79, 79, 76, 80}},{{78, 79, 78, 76, 77, 78, 77, 77, 78, 78, 79, 79, 76, 78, 78, 79, 79, 79, 78, 79, 78, 77, 80},{78, 79, 78, 76, 77, 78, 77, 77, 78, 78, 79, 79, 76, 78, 78, 79, 79, 79, 78, 79, 78, 77, 80}},{{75, 75, 78, 78, 78, 79, 78, 78, 78, 78, 78, 79, 76, 78, 78, 78, 79, 79, 78, 79, 79, 76, 80},{75, 75, 78, 78, 78, 79, 78, 78, 78, 78, 78, 79, 76, 78, 78, 78, 79, 79, 78, 79, 79, 76, 80}},{{76, 76, 77, 76, 79, 79, 76, 79, 76, 77, 79, 77, 79, 77, 78, 75, 78, 79, 78, 79, 78, 79, 80},{76, 76, 77, 76, 79, 79, 76, 79, 76, 77, 79, 77, 79, 77, 78, 75, 78, 79, 78, 79, 78, 79, 80}},{{76, 79, 76, 74, 78, 78, 77, 77, 78, 79, 78, 78, 77, 77, 79, 77, 79, 78, 79, 79, 77, 78, 80},{76, 79, 76, 74, 78, 78, 77, 77, 78, 79, 78, 78, 77, 77, 79, 77, 79, 78, 79, 79, 77, 78, 80}},{{76, 78, 79, 78, 76, 78, 78, 78, 77, 78, 74, 77, 79, 78, 78, 79, 79, 79, 79, 79, 77, 79, 80},{76, 78, 79, 78, 76, 78, 78, 78, 77, 78, 74, 77, 79, 78, 78, 79, 79, 79, 79, 79, 77, 79, 80}},{{75, 78, 78, 76, 78, 77, 78, 78, 77, 78, 78, 79, 79, 79, 75, 77, 79, 79, 79, 76, 79, 77, 80},{75, 78, 78, 76, 78, 77, 78, 78, 77, 78, 78, 79, 79, 79, 75, 77, 79, 79, 79, 76, 79, 77, 80}},{{78, 77, 77, 78, 76, 78, 78, 76, 78, 79, 79, 79, 79, 79, 76, 79, 79, 79, 79, 76, 78, 79, 80},{78, 77, 77, 78, 76, 78, 78, 76, 78, 79, 79, 79, 79, 79, 76, 79, 79, 79, 79, 76, 78, 79, 80}}}; const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz = 77; const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{0x1.c86p-3, 0x1.cffp-3, 0x1.fe7p-3, 0x1.ab6p-3, 0x1.c24p-3, 0x1.c19p-3, 0x1.d84p-3, 0x1.fd3p-3, 0x1.015p-2, 0x1.0e38p-2, 0x1.f34p-3, 0x1.1ffp-2, 0x1.2188p-2, 0x1.0bfp-2, 0x1.17f8p-2},{0x1.c86p-3, 0x1.cffp-3, 0x1.fe7p-3, 0x1.ab6p-3, 0x1.c24p-3, 0x1.c19p-3, 0x1.d84p-3, 0x1.fd3p-3, 0x1.015p-2, 0x1.0e38p-2, 0x1.f34p-3, 0x1.1ffp-2, 0x1.2188p-2, 0x1.0bfp-2, 0x1.17f8p-2}}; #ifdef FIX_1123_CREND_16BIT_ROM const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_16kHz_fx = 15; const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]={{7302, 7423, 8167, 6838, 7204, 7193, 7556, 8147, 8234, 8647, 7988, 9214, 9265, 8574, 8959},{7302, 7423, 8167, 6838, 7204, 7193, 7556, 8147, 8234, 8647, 7988, 9214, 9265, 8574, 8959}}; #endif // FIX_1123_CREND_16BIT_ROM -const uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 54, 54, 59, 59, 59, 65, 65, 65, 65, 65, 65, 65, 65, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 54, 54, 59, 59, 59, 65, 65, 65, 65, 65, 65, 65, 65, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 77}}; +uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]={{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 54, 54, 59, 59, 59, 65, 65, 65, 65, 65, 65, 65, 65, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 77},{46, 46, 46, 46, 46, 46, 46, 49, 49, 53, 53, 53, 54, 54, 59, 59, 59, 65, 65, 65, 65, 65, 65, 65, 65, 71, 71, 71, 71, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 77}}; const float CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]={ { {0x1.62p-7, 0x1.6p-9, -0x1.14p-8, 0x1.8p-13, -0x1.18p-9, 0x1.6p-9, 0x1.64p-7, -0x1.ep-11, -0x1.d4p-8, -0x1.62p-7, 0x1.3p-10, -0x1.0ap-7, -0x1.3p-9, -0x1.4p-9, 0x1.ep-10, 0x1.78p-8, -0x1.1p-7, -0x1.0cp-8, -0x1.5p-9, 0x1.cp-12, -0x1.44p-8, -0x1.1cp-7, -0x1.b8p-9, -0x1.ep-8, -0x1p-8, 0x1.9p-10, -0x1.8p-12, -0x1.b8p-9, -0x1.6p-11, -0x1p-10, 0x1.ep-11, -0x1.fcp-8, -0x1p-9, 0x1.98p-9, 0x1.b4p-8, 0x1.b8p-9, -0x1p-10, -0x1p-10, 0x1.4p-12, -0x1.e4p-8, -0x1.48p-8, 0x1.ap-10, 0x1p-11, 0x1.fp-10, -0x1p-9, 0x1.ap-10, -0x1.ap-10, 0x1.78p-9, -0x1.9p-10, 0x1.64p-8, 0x1.6cp-8, -0x1.2p-11, -0x1p-13, 0x1.14p-8, 0x1.bp-10, -0x1.8p-12, 0x1.cp-12, -0x1.28p-7, -0x1.7p-8, -0x1.8p-10, 0x1.b8p-9, -0x1.fp-9, -0x1.02p-7, -0x1.4cp-8, -0x1.e8p-9, -0x1.74p-8, 0x1.cp-9, -0x1.52p-7, 0x1.98p-9, 0x1.48p-7, -0x1.5cp-8, -0x1.6p-9, -0x1.3cp-8, 0x1.24p-8, -0x1.fp-10, -0x1.8p-8, 0x1.cp-11, -0x1.2ep-7, 0x1.2ep-7, -0x1.dp-9, -0x1p-13, 0x1.1cp-7, -0x1.5p-8, 0x1.b8p-9, -0x1.ap-11, 0x1.3p-10, -0x1.9p-8, -0x1.9ap-7, -0x1.68p-9, 0x1.3cp-8, -0x1.b8p-9, 0x1.8p-9, 0x1.1p-8, 0x1.d8p-9, -0x1.8p-9, 0x1.1p-9, @@ -14265,7 +14269,7 @@ const float CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS][247 /* Sample Rate = 48000 */ -const float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC] = +float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC] = {0x1.fe84p-1, 0x1.e51p-1, 0x1.9934p-1, 0x1.2684p-1, 0x1.5718p-2, 0x1.1b5p-3, 0x1.04p-7, 0x0p+0, 0x0p+0, 0x0p+0, 0x1.15p-7, 0x1.34p-5, 0x1.6c8p-5, 0x1.594p-5, 0x1.57p-5, 0x1.468p-5, 0x1.e18p-6, 0x1.048p-6, 0x1.52p-7, 0x1.cdp-7, 0x1.48p-6, 0x1.918p-6, 0x1.ep-6, 0x1.128p-5, 0x1.11cp-5, 0x1.e58p-6, 0x1.be8p-6, @@ -14296,7 +14300,7 @@ const float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC] = 0x1.82p-8, 0x0p+0, 0x0p+0, 0x1.5cp-8, 0x1.04p-8, 0x0p+0, 0x0p+0, 0x1.cp-9, 0x1.0cp-9, 0x0p+0, 0x0p+0, 0x1.18p-9, 0x1p-12, 0x0p+0}; -const float defaultHRIR_left_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = +float defaultHRIR_left_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = {0x1.f648p-1, 0x1.f25cp-1, 0x1.eabcp-1, 0x1.e6b8p-1, 0x1.e7f4p-1, 0x1.e964p-1, 0x1.e6bcp-1, 0x1.e298p-1, 0x1.e33cp-1, 0x1.ea8p-1, 0x1.f33p-1, 0x1.f6d4p-1, 0x1.f45cp-1, 0x1.efbcp-1, 0x1.ec64p-1, 0x1.ea2cp-1, 0x1.e7a8p-1, 0x1.e544p-1, 0x1.e40cp-1, 0x1.e33p-1, 0x1.e09p-1, 0x1.dc24p-1, 0x1.d88cp-1, 0x1.d7a8p-1, 0x1.d824p-1, 0x1.d784p-1, 0x1.d594p-1, @@ -14327,7 +14331,7 @@ const float defaultHRIR_left_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}; -const float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = +float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = {0x1.f648p-1, 0x1.f25cp-1, 0x1.eacp-1, 0x1.e6b8p-1, 0x1.e7f4p-1, 0x1.e964p-1, 0x1.e6bcp-1, 0x1.e298p-1, 0x1.e33cp-1, 0x1.ea8p-1, 0x1.f33p-1, 0x1.f6d4p-1, 0x1.f45cp-1, 0x1.efbcp-1, 0x1.ec64p-1, 0x1.ea2cp-1, 0x1.e7a8p-1, 0x1.e544p-1, 0x1.e40cp-1, 0x1.e32cp-1, 0x1.e09p-1, 0x1.dc24p-1, 0x1.d88cp-1, 0x1.d7a8p-1, 0x1.d824p-1, 0x1.d784p-1, 0x1.d594p-1, diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index 403ebdfccb7062e1a2656bc270e3d4ae0d724307..43f2ad3f0ac47b8c1c118547bd651c89b3301935 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -51,277 +51,302 @@ /********************** CRendBin_Combined_HRIR **********************/ -extern float CRendBin_Combined_HRIR_latency_s; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_HRIR_latency_s; +#endif #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_latency_s_Q_fx; -extern int32_t CRendBin_Combined_HRIR_latency_s_fx; +extern const int16_t CRendBin_Combined_HRIR_latency_s_Q_fx; +extern const int32_t CRendBin_Combined_HRIR_latency_s_fx; #endif // FIX_1123_CREND_16BIT_ROM /* Sample Rate = 48000 */ -extern int16_t CRendBin_Combined_HRIR_max_num_iterations_48kHz; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_max_num_iterations_48kHz; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz; +extern const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_48kHz; extern float CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_48kHz_fx; -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_48kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern float CRendBin_Combined_HRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; -extern float CRendBin_Combined_HRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_HRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +extern const float CRendBin_Combined_HRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_coeff_Q_48kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_coeff_Q_48kHz_fx; #endif -extern int16_t CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t CRendBin_Combined_HRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t CRendBin_Combined_HRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][240]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM -extern float *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; -extern float *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; +#endif /* Sample Rate = 32000 */ -extern int16_t CRendBin_Combined_HRIR_max_num_iterations_32kHz; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_max_num_iterations_32kHz; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz; +extern const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_32kHz; extern float CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_32kHz_fx; -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_32kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern float CRendBin_Combined_HRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; -extern float CRendBin_Combined_HRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_HRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +extern const float CRendBin_Combined_HRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_coeff_Q_32kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_coeff_Q_32kHz_fx; #endif -extern int16_t CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t CRendBin_Combined_HRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t CRendBin_Combined_HRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][160]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM -extern float *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; -extern float *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; +#endif /* Sample Rate = 16000 */ -extern int16_t CRendBin_Combined_HRIR_max_num_iterations_16kHz; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_max_num_iterations_16kHz; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_HRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz; +extern const uint16_t CRendBin_Combined_HRIR_index_frequency_max_diffuse_16kHz; extern float CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_16kHz_fx; -extern int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_Q_16kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_Combined_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern float CRendBin_Combined_HRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; -extern float CRendBin_Combined_HRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_HRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +extern const float CRendBin_Combined_HRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_HRIR_coeff_Q_16kHz_fx; +extern const int16_t CRendBin_Combined_HRIR_coeff_Q_16kHz_fx; #endif -extern int16_t CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t CRendBin_Combined_HRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t CRendBin_Combined_HRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][80]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; extern int16_t *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM -extern float *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; -extern float *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; +extern const float *CRendBin_Combined_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; +#endif /********************** CRendBin_FOA_HRIR **********************/ -extern float CRendBin_FOA_HRIR_latency_s; +extern const float CRendBin_FOA_HRIR_latency_s; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_latency_s_Q_fx; -extern int32_t CRendBin_FOA_HRIR_latency_s_fx; +extern const int16_t CRendBin_FOA_HRIR_latency_s_Q_fx; +extern const int32_t CRendBin_FOA_HRIR_latency_s_fx; #endif // FIX_1123_CREND_16BIT_ROM /* Sample Rate = 48000 */ -extern int16_t CRendBin_FOA_HRIR_max_num_iterations_48kHz; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_max_num_iterations_48kHz; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz; -extern float CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_48kHz; +extern const float CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_48kHz_fx; -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_48kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern float CRendBin_FOA_HRIR_coeff_re_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]; -extern float CRendBin_FOA_HRIR_coeff_im_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_FOA_HRIR_coeff_re_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +extern const float CRendBin_FOA_HRIR_coeff_im_48kHz[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_coeff_Q_48kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_coeff_Q_48kHz_fx; #endif -extern int16_t CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_FOA_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; extern float *CRendBin_FOA_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ -extern int16_t CRendBin_FOA_HRIR_max_num_iterations_32kHz; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_max_num_iterations_32kHz; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz; -extern float CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_32kHz; +extern const float CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_32kHz_fx; -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_32kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern float CRendBin_FOA_HRIR_coeff_re_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]; -extern float CRendBin_FOA_HRIR_coeff_im_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_FOA_HRIR_coeff_re_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +extern const float CRendBin_FOA_HRIR_coeff_im_32kHz[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_coeff_Q_32kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_coeff_Q_32kHz_fx; #endif -extern int16_t CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_FOA_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; extern float *CRendBin_FOA_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; + /* Sample Rate = 16000 */ -extern int16_t CRendBin_FOA_HRIR_max_num_iterations_16kHz; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_max_num_iterations_16kHz; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_FOA_HRIR_pIndex_frequency_max_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz; -extern float CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const uint16_t CRendBin_FOA_HRIR_index_frequency_max_diffuse_16kHz; +extern const float CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][FOA_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_16kHz_fx; -extern int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_Q_16kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_FOA_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern float CRendBin_FOA_HRIR_coeff_re_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]; -extern float CRendBin_FOA_HRIR_coeff_im_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_FOA_HRIR_coeff_re_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +extern const float CRendBin_FOA_HRIR_coeff_im_16kHz[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_FOA_HRIR_coeff_Q_16kHz_fx; +extern const int16_t CRendBin_FOA_HRIR_coeff_Q_16kHz_fx; #endif -extern int16_t CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_FOA_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; extern float *CRendBin_FOA_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; - /********************** CRendBin_HOA2_HRIR **********************/ -extern float CRendBin_HOA2_HRIR_latency_s; +extern const float CRendBin_HOA2_HRIR_latency_s; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_latency_s_Q_fx; -extern int32_t CRendBin_HOA2_HRIR_latency_s_fx; +extern const int16_t CRendBin_HOA2_HRIR_latency_s_Q_fx; +extern const int32_t CRendBin_HOA2_HRIR_latency_s_fx; #endif // FIX_1123_CREND_16BIT_ROM /* Sample Rate = 48000 */ -extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_48kHz; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_max_num_iterations_48kHz; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz; -extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_48kHz; +extern const float CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_48kHz_fx; -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_48kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA2_HRIR_coeff_re_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; -extern float CRendBin_HOA2_HRIR_coeff_im_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA2_HRIR_coeff_re_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +extern const float CRendBin_HOA2_HRIR_coeff_im_48kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_coeff_Q_48kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_coeff_Q_48kHz_fx; #endif -extern int16_t CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA2_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA2_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ -extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_32kHz; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_max_num_iterations_32kHz; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz; -extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_32kHz; +extern const float CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_32kHz_fx; -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_32kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA2_HRIR_coeff_re_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; -extern float CRendBin_HOA2_HRIR_coeff_im_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA2_HRIR_coeff_re_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +extern const float CRendBin_HOA2_HRIR_coeff_im_32kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_coeff_Q_32kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_coeff_Q_32kHz_fx; #endif -extern int16_t CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA2_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA2_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ -extern int16_t CRendBin_HOA2_HRIR_max_num_iterations_16kHz; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_max_num_iterations_16kHz; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA2_HRIR_pIndex_frequency_max_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz; -extern float CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const uint16_t CRendBin_HOA2_HRIR_index_frequency_max_diffuse_16kHz; +extern const float CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA2_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_16kHz_fx; -extern int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_Q_16kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA2_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA2_HRIR_coeff_re_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; -extern float CRendBin_HOA2_HRIR_coeff_im_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA2_HRIR_coeff_re_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +extern const float CRendBin_HOA2_HRIR_coeff_im_16kHz[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA2_HRIR_coeff_Q_16kHz_fx; +extern const int16_t CRendBin_HOA2_HRIR_coeff_Q_16kHz_fx; #endif -extern int16_t CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA2_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA2_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; - /********************** CRendBin_HOA3_HRIR **********************/ extern float CRendBin_HOA3_HRIR_latency_s; @@ -332,175 +357,194 @@ extern int32_t CRendBin_HOA3_HRIR_latency_s_fx; /* Sample Rate = 48000 */ -extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_48kHz; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_max_num_iterations_48kHz; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz; +extern const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_48kHz; extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_48kHz_fx; -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_48kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA3_HRIR_coeff_re_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; -extern float CRendBin_HOA3_HRIR_coeff_im_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA3_HRIR_coeff_re_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +extern const float CRendBin_HOA3_HRIR_coeff_im_48kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_coeff_Q_48kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_coeff_Q_48kHz_fx; #endif -extern int16_t CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_re_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_im_48kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][240]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA3_HRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA3_HRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS]; /* Sample Rate = 32000 */ -extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_32kHz; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_max_num_iterations_32kHz; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; -extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz; -extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]; +extern const uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_32kHz; +extern const float CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_32kHz_fx; -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_32kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA3_HRIR_coeff_re_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; -extern float CRendBin_HOA3_HRIR_coeff_im_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA3_HRIR_coeff_re_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +extern const float CRendBin_HOA3_HRIR_coeff_im_32kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_coeff_Q_32kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_coeff_Q_32kHz_fx; #endif -extern int16_t CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_re_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_im_32kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][160]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA3_HRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA3_HRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS]; /* Sample Rate = 16000 */ -extern int16_t CRendBin_HOA3_HRIR_max_num_iterations_16kHz; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_max_num_iterations_16kHz; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_HOA3_HRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_HOA3_HRIR_pIndex_frequency_max_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][1]; extern uint16_t CRendBin_HOA3_HRIR_index_frequency_max_diffuse_16kHz; -extern float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]; +extern const float CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HOA3_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_16kHz_fx; -extern int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_Q_16kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t *CRendBin_HOA3_HRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS]; -extern float CRendBin_HOA3_HRIR_coeff_re_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; -extern float CRendBin_HOA3_HRIR_coeff_im_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_HOA3_HRIR_coeff_re_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +extern const float CRendBin_HOA3_HRIR_coeff_im_16kHz[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_HOA3_HRIR_coeff_Q_16kHz_fx; +extern const int16_t CRendBin_HOA3_HRIR_coeff_Q_16kHz_fx; #endif -extern int16_t CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; -extern int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS]; +extern const int16_t *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern float *CRendBin_HOA3_HRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS]; extern float *CRendBin_HOA3_HRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS]; - /********************** CRendBin_Combined_BRIR **********************/ -extern float CRendBin_Combined_BRIR_latency_s; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_latency_s; +#endif #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_latency_s_Q_fx; -extern int32_t CRendBin_Combined_BRIR_latency_s_fx; +extern const int16_t CRendBin_Combined_BRIR_latency_s_Q_fx; +extern const int32_t CRendBin_Combined_BRIR_latency_s_fx; #endif // FIX_1123_CREND_16BIT_ROM /* Sample Rate = 48000 */ -extern int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_max_num_iterations_48kHz; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; -extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; -extern float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_48kHz; +extern const float CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz_fx; -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_48kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[BINAURAL_CHANNELS][40]; -extern float CRendBin_Combined_BRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; -extern float CRendBin_Combined_BRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_re_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +extern const float CRendBin_Combined_BRIR_coeff_im_48kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_coeff_Q_48kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_coeff_Q_48kHz_fx; +#endif +extern const int16_t CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +extern const int16_t CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885]; +#endif // FIX_1123_CREND_16BIT_ROM +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS][2885]; +extern const float CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS][2885]; #endif -extern int16_t CRendBin_Combined_BRIR_coeff_re_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; -extern int16_t CRendBin_Combined_BRIR_coeff_im_48kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2955]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885]; -#endif // FIX_1123_CREND_16BIT_ROM -extern float CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz[BINAURAL_CHANNELS][2885]; -extern float CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz[BINAURAL_CHANNELS][2885]; /* Sample Rate = 32000 */ -extern int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_max_num_iterations_32kHz; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][22]; -extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; -extern float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_32kHz; +extern const float CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz_fx; -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_32kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[BINAURAL_CHANNELS][40]; -extern float CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; -extern float CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_re_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; +extern const float CRendBin_Combined_BRIR_coeff_im_32kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_coeff_Q_32kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_coeff_Q_32kHz_fx; +#endif +extern const int16_t CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; +extern const int16_t CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2868]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2868]; +#endif // FIX_1123_CREND_16BIT_ROM +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS][2868]; +extern const float CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS][2868]; #endif -extern int16_t CRendBin_Combined_BRIR_coeff_re_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; -extern int16_t CRendBin_Combined_BRIR_coeff_im_32kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][2818]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2868]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2868]; -#endif // FIX_1123_CREND_16BIT_ROM -extern float CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz[BINAURAL_CHANNELS][2868]; -extern float CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz[BINAURAL_CHANNELS][2868]; /* Sample Rate = 16000 */ -extern int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; -extern uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_max_num_iterations_16kHz; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[BINAURAL_CHANNELS]; extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][23]; -extern uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; -extern float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const uint16_t CRendBin_Combined_BRIR_index_frequency_max_diffuse_16kHz; +extern const float CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_16kHz_fx; -extern int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_Q_16kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; #endif // FIX_1123_CREND_16BIT_ROM extern uint16_t CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[BINAURAL_CHANNELS][40]; -extern float CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; -extern float CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_re_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; +extern const float CRendBin_Combined_BRIR_coeff_im_16kHz[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; +#endif #ifdef FIX_1123_CREND_16BIT_ROM #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t CRendBin_Combined_BRIR_coeff_Q_16kHz_fx; +extern const int16_t CRendBin_Combined_BRIR_coeff_Q_16kHz_fx; +#endif +extern const int16_t CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; +extern const int16_t CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2474]; +extern const int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2474]; +#endif // FIX_1123_CREND_16BIT_ROM +#ifndef FIX_1123_CREND_16BIT_ROM +extern const float CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS][2474]; +extern const float CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS][2474]; #endif -extern int16_t CRendBin_Combined_BRIR_coeff_re_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; -extern int16_t CRendBin_Combined_BRIR_coeff_im_16kHz_fx[HRTF_LS_CHANNELS][BINAURAL_CHANNELS][1799]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2474]; -extern int16_t CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2474]; -#endif // FIX_1123_CREND_16BIT_ROM -extern float CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz[BINAURAL_CHANNELS][2474]; -extern float CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz[BINAURAL_CHANNELS][2474]; /********************** default HRIR reverb rom tables **********************/ @@ -511,9 +555,9 @@ extern float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC]; extern float defaultHRIR_left_avg_power_48kHz[LR_IAC_LENGTH_NR_FC]; extern float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; -extern int16_t defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; -extern int16_t defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; #endif /* FIX_1123_CREND_16BIT_ROM */ /* Sample Rate = 32000 */ @@ -521,9 +565,9 @@ extern float defaultHRIR_coherence_32kHz[LR_IAC_LENGTH_NR_FC]; extern float defaultHRIR_left_avg_power_32kHz[LR_IAC_LENGTH_NR_FC]; extern float defaultHRIR_right_avg_power_32kHz[LR_IAC_LENGTH_NR_FC]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; -extern int16_t defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; -extern int16_t defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; +extern const int16_t defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; #endif /* FIX_1123_CREND_16BIT_ROM */ /* Sample Rate = 16000 */ @@ -531,9 +575,9 @@ extern float defaultHRIR_coherence_16kHz[LR_IAC_LENGTH_NR_FC_16KHZ]; extern float defaultHRIR_left_avg_power_16kHz[LR_IAC_LENGTH_NR_FC_16KHZ]; extern float defaultHRIR_right_avg_power_16kHz[LR_IAC_LENGTH_NR_FC_16KHZ]; #ifdef FIX_1123_CREND_16BIT_ROM -extern int16_t defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; -extern int16_t defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; -extern int16_t defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; +extern const int16_t defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; +extern const int16_t defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; +extern const int16_t defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; #endif /* FIX_1123_CREND_16BIT_ROM */ #endif /* _IVAS_ROM_BINAURAL_CREND_HEAD_ */ diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index 6174079d2ec6da6c43e22f45dd44650223d07d0e..bddcc39a452024c200aadc024a87b4e9585a1392 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -35,7 +35,7 @@ #ifdef FIX_POINT_HRTF_FILE_FORMAT #include #endif -#include "prot.h" +#include #include "ivas_prot_rend.h" #include "ivas_prot.h" @@ -58,19 +58,11 @@ typedef struct ivas_hrtfs_file_header_t } ivas_hrtfs_file_header_t; - -/*---------------------------------------------------------------------* - * Local constants - *---------------------------------------------------------------------*/ - -#define RESAMPLE_FACTOR_16_48 ( 16.0f / 48.0f ) -#define RESAMPLE_FACTOR_32_48 ( 32.0f / 48.0f ) - +#ifndef FIX_POINT_HRTF_FILE_FORMAT /*---------------------------------------------------------------------* * Local function declarations *---------------------------------------------------------------------*/ -#ifndef FIX_POINT_HRTF_FILE_FORMAT static void HRTF_energy_sections_precalc( ModelParams_t *model ); #endif @@ -147,6 +139,11 @@ static ivas_error read_and_check_hrtf_binary_file_header( { int32_t file_size; + if ( hrtf_file_header == NULL || f_hrtf == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + /* [Declaration of the binary file] */ /* File Identifier (8 bytes) */ /* Size of file in bytes (4 bytes) */ @@ -190,6 +187,11 @@ static ivas_error read_and_check_hrtf_binary_file_header( static ivas_error check_hrtf_binary_header( ivas_hrtfs_header_t *hrtf_header ) { + if ( hrtf_header == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + /* Check the renderer type */ if ( ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && @@ -230,11 +232,17 @@ static ivas_error read_hrtf_binary_header( ivas_hrtfs_header_t *hrtf_header, FILE *f_hrtf ) { + if ( hrtf_header == NULL || f_hrtf == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + /* HRTF Header */ - /* Renderer type (4 bytes) : See "HRTF_READER_RENDERER_TYPE" */ + /* Renderer type (4 bytes) : See "HRTF_READER_RENDERER_TYPE" */ /* Input configuration (4 bytes) : See "BINAURAL_INPUT_AUDIO_CONFIG" */ /* Sampling Frequency (4 bytes) */ /* Raw data size (4 bytes) */ + if ( ( fread( &( hrtf_header->rend_type ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->input_cfg ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->frequency ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) && ( fread( &( hrtf_header->data_size ), sizeof( int32_t ), 1, f_hrtf ) == 1 ) ) { return IVAS_ERR_OK; @@ -244,13 +252,14 @@ static ivas_error read_hrtf_binary_header( } #ifdef FIX_POINT_HRTF_FILE_FORMAT + /*-------------------------------------------------------------------* * LoadBSplineBinaryITD() * * Loads the B Spline HR filter model ITD data from file. --------------------------------------------------------------------*/ -static void LoadBSplineBinaryITD( +static ivas_error LoadBSplineBinaryITD( ModelParamsITD_t *modelITD, /* i/o: ITD model parameter structure */ FILE *f_hrtf /* i : HR filter data file handle */ ) @@ -259,58 +268,92 @@ static void LoadBSplineBinaryITD( int16_t *v_tmp16; int16_t j; float q_scale; + + if ( modelITD == NULL || f_hrtf == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + fread( &modelITD->elevDim3, sizeof( int16_t ), 1, f_hrtf ); modelITD->elevKSeq_dyn = (float *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( float ) ); v_tmp16 = (int16_t *) malloc( ( modelITD->elevDim3 - 2 ) * sizeof( int16_t ) ); + if ( modelITD->elevKSeq_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), modelITD->elevDim3 - 2, f_hrtf ); for ( j = 0; j < modelITD->elevDim3 - 2; j++ ) { - modelITD->elevKSeq_dyn[j] = (float) v_tmp16[j] * q_scale; + modelITD->elevKSeq_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); fread( &modelITD->azimDim3, sizeof( int16_t ), 1, f_hrtf ); modelITD->azimKSeq_dyn = (float *) malloc( ( ( modelITD->azimDim3 + 1 ) / 2 - 2 ) * sizeof( float ) ); /* basis functions are flipped around 180 deg, number of basis functions above/below is (N+1)/2 */ v_tmp16 = (int16_t *) malloc( ( ( modelITD->azimDim3 + 1 ) / 2 - 2 ) * sizeof( int16_t ) ); + if ( modelITD->azimKSeq_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), ( modelITD->azimDim3 + 1 ) / 2 - 2, f_hrtf ); for ( j = 0; j < ( modelITD->azimDim3 + 1 ) / 2 - 2; j++ ) { - modelITD->azimKSeq_dyn[j] = (float) v_tmp16[j] * q_scale; + modelITD->azimKSeq_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); fread( &tmp, sizeof( int16_t ), 1, f_hrtf ); modelITD->W_dyn = (float *) malloc( tmp * sizeof( float ) ); + if ( modelITD->W_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); v_tmp16 = (int16_t *) malloc( tmp * sizeof( int16_t ) ); + if ( v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( v_tmp16, sizeof( int16_t ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { - modelITD->W_dyn[j] = (float) v_tmp16[j] * q_scale; + modelITD->W_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); /* azimuth */ modelITD->azimBsLen_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( modelITD->azimBsLen_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( modelITD->azimBsLen_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); modelITD->azimBsStart_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( modelITD->azimBsStart_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( modelITD->azimBsStart_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); fread( &tmp, sizeof( int16_t ), 1, f_hrtf ); modelITD->azimBsShape_dyn = (float *) malloc( tmp * sizeof( float ) ); v_tmp16 = (int16_t *) malloc( tmp * sizeof( int16_t ) ); + if ( modelITD->azimBsShape_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { - modelITD->azimBsShape_dyn[j] = (float) v_tmp16[j] * q_scale; + modelITD->azimBsShape_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); @@ -318,20 +361,36 @@ static void LoadBSplineBinaryITD( /* elevation */ modelITD->elevBsLen_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( modelITD->elevBsLen_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( modelITD->elevBsLen_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); modelITD->elevBsStart_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( modelITD->elevBsStart_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( modelITD->elevBsStart_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); fread( &tmp, sizeof( int16_t ), 1, f_hrtf ); modelITD->elevBsShape_dyn = (float *) malloc( tmp * sizeof( float ) ); + if ( modelITD->elevBsShape_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } v_tmp16 = (int16_t *) malloc( tmp * sizeof( int16_t ) ); + if ( v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { - modelITD->elevBsShape_dyn[j] = (float) v_tmp16[j] * q_scale; + modelITD->elevBsShape_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); fread( &modelITD->elevSegSamples, sizeof( int16_t ), 1, f_hrtf ); @@ -346,7 +405,7 @@ static void LoadBSplineBinaryITD( modelITD->elevBsLen = modelITD->elevBsLen_dyn; modelITD->elevBsStart = modelITD->elevBsStart_dyn; - return; + return IVAS_ERR_OK; } #else /*-------------------------------------------------------------------* @@ -413,6 +472,7 @@ static void LoadBSplineBinaryITD( } #endif #ifdef FIX_POINT_HRTF_FILE_FORMAT + /*-------------------------------------------------------------------* * LoadBSplineBinary() * @@ -429,11 +489,17 @@ static ivas_error LoadBSplineBinary( int16_t *v_tmp16; int32_t j, tmp32; float q_scale; + ivas_error error; + + if ( HrFiltSet_p == NULL || f_hrtf == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( &tmp32, 1, sizeof( int32_t ), f_hrtf ); - HrFiltSet_p->latency_s = (float) tmp32 * q_scale; + HrFiltSet_p->latency_s = tmp32 * q_scale; model = &( HrFiltSet_p->ModelParams ); @@ -467,7 +533,7 @@ static ivas_error LoadBSplineBinary( } break; default: - return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "Error: HR filter file had an unsupported sampling rate (%d kHz)", tmp ); + return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "Error: HR filter file has an unsupported sampling rate (%d kHz)", tmp ); } fread( &model->K, sizeof( int16_t ), 1, f_hrtf ); @@ -475,18 +541,27 @@ static ivas_error LoadBSplineBinary( model->elevKSeq_dyn = (float *) malloc( ( model->elevDim3 - 2 ) * sizeof( float ) ); v_tmp16 = (int16_t *) malloc( ( model->elevDim3 - 2 ) * sizeof( int16_t ) ); + if ( model->elevKSeq_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), model->elevDim3 - 2, f_hrtf ); for ( j = 0; j < model->elevDim3 - 2; j++ ) { - model->elevKSeq_dyn[j] = (float) v_tmp16[j] * q_scale; + model->elevKSeq_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); model->azimDim3_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) ); model->azim_start_idx_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) ); model->azimKSeq = (float **) malloc( model->elevDim3 * sizeof( float * ) ); + if ( model->azimDim3_dyn == NULL || model->azim_start_idx_dyn == NULL || model->azimKSeq == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + for ( i = 0; i < model->elevDim3; i++ ) { fread( &model->azimDim3_dyn[i], sizeof( int16_t ), 1, f_hrtf ); @@ -494,12 +569,16 @@ static ivas_error LoadBSplineBinary( model->azimKSeq[i] = (float *) malloc( ( model->azimDim3_dyn[i] + 1 ) * sizeof( float ) ); v_tmp16 = (int16_t *) malloc( ( model->azimDim3_dyn[i] + 1 ) * sizeof( int16_t ) ); + if ( model->azimKSeq[i] == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), ( model->azimDim3_dyn[i] + 1 ), f_hrtf ); for ( j = 0; j < model->azimDim3_dyn[i] + 1; j++ ) { - model->azimKSeq[i][j] = (float) v_tmp16[j] * q_scale; + model->azimKSeq[i][j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); } @@ -508,20 +587,28 @@ static ivas_error LoadBSplineBinary( model->AlphaL_dyn = (float *) malloc( model->AlphaN * model->K * sizeof( float ) ); v_tmp16 = (int16_t *) malloc( model->AlphaN * model->K * sizeof( int16_t ) ); + if ( model->AlphaL_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { - model->AlphaL_dyn[j] = (float) v_tmp16[j] * q_scale; // Q14 + model->AlphaL_dyn[j] = v_tmp16[j] * q_scale; /* Q14 */ } model->AlphaR_dyn = (float *) malloc( model->AlphaN * model->K * sizeof( float ) ); + if ( model->AlphaR_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( v_tmp16, sizeof( int16_t ), model->AlphaN * model->K, f_hrtf ); for ( j = 0; j < model->AlphaN * model->K; j++ ) { - model->AlphaR_dyn[j] = (float) v_tmp16[j] * q_scale; // Q14 + model->AlphaR_dyn[j] = v_tmp16[j] * q_scale; /* Q14 */ } free( v_tmp16 ); @@ -531,64 +618,105 @@ static ivas_error LoadBSplineBinary( model->azimBsShape = (const float **) malloc( model->num_unique_azim_splines * sizeof( float * ) ); model->azimBsShape_dyn = (float **) malloc( model->num_unique_azim_splines * sizeof( float * ) ); model->azimSegSamples_dyn = (int16_t *) malloc( model->num_unique_azim_splines * sizeof( int16_t ) ); + if ( model->azimBsShape == NULL || model->azimBsShape_dyn == NULL || model->azimSegSamples_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } for ( i = 0; i < model->num_unique_azim_splines; i++ ) { fread( &tmp, sizeof( int16_t ), 1, f_hrtf ); model->azimBsShape_dyn[i] = (float *) malloc( tmp * sizeof( float ) ); + if ( model->azimBsShape_dyn[i] == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); v_tmp16 = (int16_t *) malloc( tmp * sizeof( int16_t ) ); + if ( v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + fread( v_tmp16, sizeof( int16_t ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { - model->azimBsShape_dyn[i][j] = (float) v_tmp16[j] * q_scale; + model->azimBsShape_dyn[i][j] = v_tmp16[j] * q_scale; } fread( &model->azimSegSamples_dyn[i], sizeof( int16_t ), 1, f_hrtf ); free( v_tmp16 ); } model->azimShapeIdx_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) ); + if ( model->azimShapeIdx_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( model->azimShapeIdx_dyn, sizeof( int16_t ), model->elevDim3, f_hrtf ); model->azimShapeSampFactor_dyn = (int16_t *) malloc( model->elevDim3 * sizeof( int16_t ) ); + if ( model->azimShapeSampFactor_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( model->azimShapeSampFactor_dyn, sizeof( int16_t ), model->elevDim3, f_hrtf ); /* elevation */ model->elevBsLen_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( model->elevBsLen_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( model->elevBsLen_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); model->elevBsStart_dyn = (int16_t *) malloc( HRTF_MODEL_BSPLINE_NUM_COEFFS * sizeof( int16_t ) ); + if ( model->elevBsStart_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( model->elevBsStart_dyn, sizeof( int16_t ), HRTF_MODEL_BSPLINE_NUM_COEFFS, f_hrtf ); fread( &tmp, sizeof( int16_t ), 1, f_hrtf ); v_tmp16 = (int16_t *) malloc( tmp * sizeof( int16_t ) ); model->elevBsShape_dyn = (float *) malloc( tmp * sizeof( float ) ); + if ( model->elevBsShape_dyn == NULL || v_tmp16 == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( v_tmp16, sizeof( int16_t ), tmp, f_hrtf ); for ( j = 0; j < tmp; j++ ) { - model->elevBsShape_dyn[j] = (float) v_tmp16[j] * q_scale; + model->elevBsShape_dyn[j] = v_tmp16[j] * q_scale; } free( v_tmp16 ); fread( &model->elevSegSamples, sizeof( int16_t ), 1, f_hrtf ); model->EL_dyn = (float *) malloc( model->AlphaN * HRTF_MODEL_N_SECTIONS * sizeof( float ) ); + if ( model->EL_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( &factor_Q, 1, sizeof( int16_t ), f_hrtf ); - q_scale = powf( 2.f, -1.f * (float) factor_Q ); + q_scale = powf( 2.f, -1.f * factor_Q ); fread( (int32_t *) model->EL_dyn, sizeof( int32_t ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf ); for ( j = 0; j < model->AlphaN * HRTF_MODEL_N_SECTIONS; j++ ) { - model->EL_dyn[j] = (float) ( (int32_t *) model->EL_dyn )[j] * q_scale; // Q14 + model->EL_dyn[j] = ( (int32_t *) model->EL_dyn )[j] * q_scale; /* Q14 */ } model->ER_dyn = (float *) malloc( model->AlphaN * HRTF_MODEL_N_SECTIONS * sizeof( float ) ); + if ( model->ER_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } fread( (int32_t *) model->ER_dyn, sizeof( int32_t ), model->AlphaN * HRTF_MODEL_N_SECTIONS, f_hrtf ); for ( j = 0; j < model->AlphaN * HRTF_MODEL_N_SECTIONS; j++ ) { - model->ER_dyn[j] = (float) ( (int32_t *) model->ER_dyn )[j] * q_scale; // Q14 + model->ER_dyn[j] = ( (int32_t *) model->ER_dyn )[j] * q_scale; /* Q14 */ } /* Set const pointers */ @@ -616,10 +744,17 @@ static ivas_error LoadBSplineBinary( HrFiltSet_p->ModelEval.hrfModL = (float *) malloc( model->K * sizeof( float ) ); HrFiltSet_p->ModelEval.hrfModR = (float *) malloc( model->K * sizeof( float ) ); + if ( HrFiltSet_p->ModelEval.hrfModL == NULL || HrFiltSet_p->ModelEval.hrfModR == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } if ( HrFiltSet_p->ModelParams.UseItdModel ) { - LoadBSplineBinaryITD( &HrFiltSet_p->ModelParamsITD, f_hrtf ); + if ( ( error = LoadBSplineBinaryITD( &HrFiltSet_p->ModelParamsITD, f_hrtf ) ) != IVAS_ERR_OK ) + { + return error; + } } return IVAS_ERR_OK; @@ -763,6 +898,7 @@ static ivas_error LoadBSplineBinary( } #endif + /*-------------------------------------------------------------------* * load_reverb_from_binary() * @@ -772,7 +908,7 @@ static ivas_error LoadBSplineBinary( static ivas_error load_reverb_from_binary( IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ int32_t sampleRate, /* i : sample rate */ - FILE *f_hrtf /* i : HR filter data file handle */ + FILE *f_hrtf /* i : HR filter data file handle */ ) { bool is_reverb; @@ -790,7 +926,7 @@ static ivas_error load_reverb_from_binary( float factorQ_f; #endif - if ( hHrtfStatistics == NULL ) + if ( hHrtfStatistics == NULL || f_hrtf == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -861,23 +997,24 @@ static ivas_error load_reverb_from_binary( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); } + #ifdef FIX_POINT_HRTF_FILE_FORMAT fread( &factorQ, sizeof( Word16 ), 1, f_hrtf ); - factorQ_f = powf( 2.f, -1.f * (float) factorQ ); + factorQ_f = powf( 2.f, -1.f * factorQ ); for ( ind = 0; ind < lr_iac_len; ind++ ) { fread( &tmp16, sizeof( Word16 ), 1, f_hrtf ); - hHrtfStatistics->average_energy_l[ind] = factorQ_f * (float) tmp16; + hHrtfStatistics->average_energy_l[ind] = factorQ_f * tmp16; } for ( ind = 0; ind < lr_iac_len; ind++ ) { fread( &tmp16, sizeof( Word16 ), 1, f_hrtf ); - hHrtfStatistics->average_energy_r[ind] = factorQ_f * (float) tmp16; + hHrtfStatistics->average_energy_r[ind] = factorQ_f * tmp16; } for ( ind = 0; ind < lr_iac_len; ind++ ) { fread( &tmp16, sizeof( Word16 ), 1, f_hrtf ); - hHrtfStatistics->inter_aural_coherence[ind] = factorQ_f * (float) tmp16; + hHrtfStatistics->inter_aural_coherence[ind] = factorQ_f * tmp16; } #else fread( hHrtfStatistics->average_energy_l, sizeof( const float ), lr_iac_len, f_hrtf ); @@ -895,6 +1032,7 @@ static ivas_error load_reverb_from_binary( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * load_reverb_binary() * @@ -907,6 +1045,11 @@ ivas_error load_reverb_binary( const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ) { + if ( hrtfReader == NULL || hrtfReader->file == NULL || hHrtfStatistics == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + fseek( hrtfReader->file, 0, SEEK_SET ); return load_reverb_from_binary( hHrtfStatistics, sampleRate, hrtfReader->file ); @@ -935,6 +1078,11 @@ static ivas_error TDREND_MIX_LoadHRTF( header_check_result = IVAS_ERR_OK; + if ( f_hrtf == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) { @@ -1021,6 +1169,7 @@ static ivas_error TDREND_MIX_LoadHRTF( { return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; } + return header_check_result; } @@ -1036,21 +1185,23 @@ ivas_error load_HRTF_binary( const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ) { - ivas_error error; + if ( hrtfReader == NULL || hrtfReader->file == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } fseek( hrtfReader->file, 0, SEEK_SET ); - error = TDREND_MIX_LoadHRTF( hrtfReader->file, hHrtf ); - - return error; + return TDREND_MIX_LoadHRTF( hrtfReader->file, hHrtf ); } +#ifndef FIX_POINT_HRTF_FILE_FORMAT /*---------------------------------------------------------------------* * HRTF_energy_sections_precalc() * * Calculate energies of each section and store in model->EL/model->ER *---------------------------------------------------------------------*/ -#ifndef FIX_POINT_HRTF_FILE_FORMAT + static void HRTF_energy_sections_precalc( ModelParams_t *model /* i/o: HRTF model parameters */ ) @@ -1459,6 +1610,11 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_INTERNAL; } + if ( hrtf_data == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + ( *hHRTF )->init_from_rom = 0; hrtf_data_rptr = hrtf_data; @@ -1467,7 +1623,7 @@ static ivas_error create_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); /* max_num_ir */ @@ -1549,13 +1705,13 @@ static ivas_error create_HRTF_from_rawdata( /* inv_diffuse_weight */ for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { - ( *hHRTF )->inv_diffuse_weight[0][i] = (float) ( *( (Word16 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); + ( *hHRTF )->inv_diffuse_weight[0][i] = ( *( (Word16 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word16 ); } for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { - ( *hHRTF )->inv_diffuse_weight[1][i] = (float) ( *( (Word16 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); + ( *hHRTF )->inv_diffuse_weight[1][i] = ( *( (Word16 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word16 ); } @@ -1591,7 +1747,7 @@ static ivas_error create_HRTF_from_rawdata( #endif for ( l = 0; l < ( *hHRTF )->pIndex_frequency_max[i][j][k]; l++ ) { - pOut_to_bin_wptr[l] = (float) ptW[l] * powf( 2.f, -1.f * (float) factorQ ); + pOut_to_bin_wptr[l] = ptW[l] * powf( 2.f, -1.f * factorQ ); } hrtf_data_rptr += mem_size; pOut_to_bin_wptr += ( *hHRTF )->pIndex_frequency_max[i][j][k]; @@ -1624,7 +1780,7 @@ static ivas_error create_HRTF_from_rawdata( #endif for ( l = 0; l < ( *hHRTF )->pIndex_frequency_max[i][j][k]; l++ ) { - pOut_to_bin_wptr[l] = (float) ptW[l] * powf( 2.f, -1.f * (float) factorQ ); + pOut_to_bin_wptr[l] = ptW[l] * powf( 2.f, -1.f * factorQ ); } hrtf_data_rptr += mem_size; pOut_to_bin_wptr += ( *hHRTF )->pIndex_frequency_max[i][j][k]; @@ -1638,8 +1794,8 @@ static ivas_error create_HRTF_from_rawdata( if ( max_total_num_fsamp_per_iteration_diff != 0 ) { - // factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); - // hrtf_data_rptr += sizeof( Word16 ); + /* factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); */ + /* hrtf_data_rptr += sizeof( Word16 ); */ /* coeff_diffuse_re : The size depends on pIndex_frequency_max_diffuse */ for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { @@ -1664,7 +1820,7 @@ static ivas_error create_HRTF_from_rawdata( #endif for ( l = 0; l < ( *hHRTF )->pIndex_frequency_max_diffuse[j][k]; l++ ) { - pOut_to_bin_wptr[l] = (float) ptW[l] * powf( 2.f, -1.f * (float) factorQ ); + pOut_to_bin_wptr[l] = ptW[l] * powf( 2.f, -1.f * factorQ ); } hrtf_data_rptr += mem_size; pOut_to_bin_wptr += ( *hHRTF )->pIndex_frequency_max_diffuse[j][k]; @@ -1694,7 +1850,7 @@ static ivas_error create_HRTF_from_rawdata( #endif for ( l = 0; l < ( *hHRTF )->pIndex_frequency_max_diffuse[j][k]; l++ ) { - pOut_to_bin_wptr[l] = (float) ptW[l] * powf( 2.f, -1.f * (float) factorQ ); + pOut_to_bin_wptr[l] = ptW[l] * powf( 2.f, -1.f * factorQ ); } hrtf_data_rptr += mem_size; pOut_to_bin_wptr += ( *hHRTF )->pIndex_frequency_max_diffuse[j][k]; @@ -1705,6 +1861,13 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_OK; } + +/*---------------------------------------------------------------------* + * create_fastconv_HRTF_from_rawdata() + * + * Create HRTF from the raw data (to the HRTF FastConv handle) + *---------------------------------------------------------------------*/ + static ivas_error create_fastconv_HRTF_from_rawdata( HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ char *hrtf_data, /* i : pointer to binary file */ @@ -1723,11 +1886,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif int16_t *ptW16; + if ( hrtf_data == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + #ifndef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->allocate_init_flag = 0; -#endif -#ifndef FIX_1123_FASTCONV_16BIT_ROM if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) { if ( ( error = ivas_allocate_binaural_hrtf( *hHRTF, 0, input_cfg, RENDERER_BINAURAL_FASTCONV, ( *hHRTF )->allocate_init_flag ) ) != IVAS_ERR_OK ) @@ -1747,7 +1913,6 @@ static ivas_error create_fastconv_HRTF_from_rawdata( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); } #endif - hrtf_data_rptr = hrtf_data; /* HRIR */ @@ -1758,7 +1923,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->FASTCONV_HRIR_latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->FASTCONV_HRIR_latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) @@ -1794,7 +1959,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) @@ -1810,7 +1975,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRReal[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -1835,7 +2000,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRImag[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -1860,7 +2025,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRReal[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -1885,7 +2050,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRImag[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -1905,7 +2070,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->FASTCONV_HOA3_latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->FASTCONV_HOA3_latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) @@ -1941,7 +2106,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) @@ -1957,7 +2122,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -1982,7 +2147,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2007,7 +2172,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2032,7 +2197,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2052,7 +2217,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->FASTCONV_HOA2_latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->FASTCONV_HOA2_latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) @@ -2088,7 +2253,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) @@ -2104,7 +2269,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2129,7 +2294,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2154,7 +2319,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2179,7 +2344,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2199,7 +2364,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->FASTCONV_FOA_latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->FASTCONV_FOA_latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); @@ -2236,7 +2401,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) @@ -2252,7 +2417,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2277,7 +2442,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2302,7 +2467,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2327,7 +2492,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2348,7 +2513,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( hrtf_data_rptr += sizeof( Word16 ); /* latency_s */ - ( *hHRTF )->FASTCONV_BRIR_latency_s = (float) ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * (float) factorQ ); + ( *hHRTF )->FASTCONV_BRIR_latency_s = ( *( (Word32 *) ( hrtf_data_rptr ) ) ) * powf( 2.f, -1.f * factorQ ); hrtf_data_rptr += sizeof( Word32 ); if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) @@ -2384,7 +2549,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) @@ -2400,7 +2565,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftBRIRReal[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2425,7 +2590,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->leftBRIRImag[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2450,7 +2615,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightBRIRReal[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2475,7 +2640,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; + ( *hHRTF )->rightBRIRImag[i][j][k] = ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif @@ -2499,14 +2664,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->fastconvReverberationTimes[j] = (float) ptW16[j] * powf( 2.f, -1.f * factorQ ); + ( *hHRTF )->fastconvReverberationTimes[j] = ptW16[j] * powf( 2.f, -1.f * factorQ ); #else ( *hHRTF )->fastconvReverberationTimes[j] = (float) ptW16[j] * scaleFactor; #endif @@ -2517,14 +2682,14 @@ static ivas_error create_fastconv_HRTF_from_rawdata( factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM - scaleFactor = powf( 2.f, -1.f * (float) factorQ ); + scaleFactor = powf( 2.f, -1.f * factorQ ); #endif ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { #ifdef FIX_1123_FASTCONV_16BIT_ROM - ( *hHRTF )->fastconvReverberationEneCorrections[j] = (float) ptW16[j] * powf( 2.f, -1.f * factorQ ); + ( *hHRTF )->fastconvReverberationEneCorrections[j] = ptW16[j] * powf( 2.f, -1.f * factorQ ); #else ( *hHRTF )->fastconvReverberationEneCorrections[j] = (float) ptW16[j] * scaleFactor; #endif @@ -2535,6 +2700,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * create_parambin_HRTF_from_rawdata() * @@ -2542,8 +2708,8 @@ static ivas_error create_fastconv_HRTF_from_rawdata( *---------------------------------------------------------------------*/ static ivas_error create_parambin_HRTF_from_rawdata( - HRTFS_PARAMBIN_HANDLE *hHRTF, /* i/o: Parametric binauralizer HRTF handle */ - char *hrtf_data /* i : pointer to binary file */ + HRTFS_PARAMBIN_HANDLE *hHRTF, /* i/o: Parametric binauralizer HRTF handle */ + char *hrtf_data /* i : pointer to binary file */ ) { int16_t i, j, k; @@ -2553,6 +2719,11 @@ static ivas_error create_parambin_HRTF_from_rawdata( int16_t *ptW16; float scaler; + if ( hrtf_data == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + hrtf_data_rptr = hrtf_data; /* HRTF_SH_CHANNELS */ @@ -2573,7 +2744,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( /* Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); - scaler = powf( 2.f, -1.f * (float) factorQ ); + scaler = powf( 2.f, -1.f * factorQ ); data_size_tmp = HRTF_NUM_BINS * sizeof( int16_t ); for ( i = 0; i < BINAURAL_CHANNELS; i++ ) @@ -2583,7 +2754,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( ptW16 = (int16_t *) hrtf_data_rptr; for ( k = 0; k < HRTF_NUM_BINS; k++ ) { - ( *hHRTF )->hrtfShCoeffsRe[i][j][k] = (float) ptW16[k] * scaler; + ( *hHRTF )->hrtfShCoeffsRe[i][j][k] = ptW16[k] * scaler; } hrtf_data_rptr += data_size_tmp; } @@ -2595,7 +2766,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( ptW16 = (int16_t *) hrtf_data_rptr; for ( k = 0; k < HRTF_NUM_BINS; k++ ) { - ( *hHRTF )->hrtfShCoeffsIm[i][j][k] = (float) ptW16[k] * scaler; + ( *hHRTF )->hrtfShCoeffsIm[i][j][k] = ptW16[k] * scaler; } hrtf_data_rptr += data_size_tmp; } @@ -2611,38 +2782,36 @@ static ivas_error create_parambin_HRTF_from_rawdata( /* Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); - scaler = powf( 2.f, -1.f * (float) factorQ ); - + scaler = powf( 2.f, -1.f * factorQ ); ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { - ( *hHRTF )->parametricReverberationTimes[j] = (float) ptW16[j] * scaler; + ( *hHRTF )->parametricReverberationTimes[j] = ptW16[j] * scaler; } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); /* Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); - scaler = powf( 2.f, -1.f * (float) factorQ ); - + scaler = powf( 2.f, -1.f * factorQ ); ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { - ( *hHRTF )->parametricReverberationEneCorrections[j] = (float) ptW16[j] * scaler; + ( *hHRTF )->parametricReverberationEneCorrections[j] = ptW16[j] * scaler; } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); /* Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); - scaler = powf( 2.f, -1.f * (float) factorQ ); + scaler = powf( 2.f, -1.f * factorQ ); ptW16 = (int16_t *) hrtf_data_rptr; for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { - ( *hHRTF )->parametricEarlyPartEneCorrection[j] = (float) ptW16[j] * scaler; + ( *hHRTF )->parametricEarlyPartEneCorrection[j] = ptW16[j] * scaler; } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); @@ -3168,6 +3337,11 @@ ivas_error load_fastconv_HRTF_from_binary( int16_t hrtf_id; int16_t asFastconv = 0; + if ( hrtfReader == NULL || hrtfReader->file == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) @@ -3210,7 +3384,7 @@ ivas_error load_fastconv_HRTF_from_binary( if ( ( create_fastconv_HRTF_from_rawdata( &hHrtfFastConv, hrtf_data, hrtf_header.rend_type, hrtf_header.input_cfg ) ) != IVAS_ERR_OK ) { free( hrtf_data ); - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create FastConv HRTF from binary file" ); } asFastconv = 1; } @@ -3323,6 +3497,11 @@ ivas_error load_parambin_HRTF_from_binary( int16_t hrtf_id; int16_t asParam = 0; + if ( hrtfReader == NULL || hrtfReader->file == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) @@ -3371,7 +3550,7 @@ ivas_error load_parambin_HRTF_from_binary( if ( ( create_parambin_HRTF_from_rawdata( &hHrtfParamBin, hrtf_data ) ) != IVAS_ERR_OK ) { free( hrtf_data ); - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create ParamBin HRTF from binary file" ); } asParam = 1; } @@ -3392,6 +3571,7 @@ ivas_error load_parambin_HRTF_from_binary( } } + /*---------------------------------------------------------------------* * create_SetOfHRTF_from_binary() * @@ -3412,6 +3592,11 @@ ivas_error create_SetOfHRTF_from_binary( ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; + if ( hrtfReader == NULL || hrtfReader->file == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + f_hrtf = hrtfReader->file; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) @@ -3560,6 +3745,7 @@ static void destroy_HRTF( * * Destroy the HRTF data set. *---------------------------------------------------------------------*/ + void destroy_SetOfHRTF( HRTFS_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ ) @@ -3613,13 +3799,15 @@ void destroy_parambin_hrtf( return; } + + /*---------------------------------------------------------------------* * destroy_hrtf_statistics() * * Destroy the HRTF statistics set. *---------------------------------------------------------------------*/ -ivas_error destroy_hrtf_statistics( +void destroy_hrtf_statistics( IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ ) { @@ -3629,6 +3817,8 @@ ivas_error destroy_hrtf_statistics( free( ( *hHrtfStatistics )->average_energy_r ); free( ( *hHrtfStatistics )->inter_aural_coherence ); } + ivas_HRTF_statistics_close( hHrtfStatistics ); - return IVAS_ERR_OK; + + return; } diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index e97747631b65a1285c3544c70599a9fbd3f8b91f..81af54479c113799da248b71712448be0dee830c 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -186,7 +186,7 @@ void destroy_td_hrtf( * free memory allocated for HRTF statistics binary data *---------------------------------------------------------------------*/ -ivas_error destroy_hrtf_statistics( +void destroy_hrtf_statistics( IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ );