Loading lib_dec/ivas_binRenderer_internal.c +54 −24 Original line number Diff line number Diff line Loading @@ -809,6 +809,7 @@ static ivas_error ivas_binaural_hrtf_open( { #ifdef FIX_1123_FASTCONV_16BIT_ROM int16_t i, j, k; float scaleFactor; #else int16_t i, j; #endif Loading Loading @@ -873,6 +874,27 @@ 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 ); } else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); } if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); } HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; Loading @@ -891,10 +913,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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); 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; } #else HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; Loading @@ -911,10 +933,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] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); 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; } #else HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; Loading @@ -931,10 +953,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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; Loading @@ -944,6 +966,9 @@ static ivas_error ivas_binaural_hrtf_open( #endif } } #ifdef FIX_1123_FASTCONV_16BIT_ROM else #endif if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { for ( j = 0; j < HOA2_CHANNELS; j++ ) Loading @@ -951,10 +976,10 @@ static ivas_error ivas_binaural_hrtf_open( #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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; Loading @@ -964,6 +989,9 @@ static ivas_error ivas_binaural_hrtf_open( #endif } } #ifdef FIX_1123_FASTCONV_16BIT_ROM else #endif if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { for ( j = 0; j < FOA_CHANNELS; j++ ) Loading @@ -971,10 +999,10 @@ static ivas_error ivas_binaural_hrtf_open( #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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; Loading @@ -986,13 +1014,15 @@ static ivas_error ivas_binaural_hrtf_open( } } #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * scaleFactor; } scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * scaleFactor; } #else mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); Loading lib_util/hrtf_file_reader.c +53 −22 Original line number Diff line number Diff line Loading @@ -1850,7 +1850,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( char *hrtf_data_rptr; ivas_error error; Word16 factorQ; #ifndef FIX_1123_FASTCONV_16BIT_ROM #ifdef FIX_1123_FASTCONV_16BIT_ROM float scaleFactor; #else int32_t *ptW32; #endif int16_t *ptW16; Loading Loading @@ -1923,6 +1925,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -1937,7 +1942,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -1962,7 +1967,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -1987,7 +1992,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2012,7 +2017,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2067,6 +2072,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2081,7 +2089,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2106,7 +2114,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2131,7 +2139,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2156,7 +2164,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2211,6 +2219,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2225,7 +2236,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2250,7 +2261,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2275,7 +2286,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2300,7 +2311,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2356,6 +2367,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2370,7 +2384,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2395,7 +2409,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2420,7 +2434,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2445,7 +2459,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2501,6 +2515,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* BRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2515,7 +2532,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2540,7 +2557,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2565,7 +2582,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2590,7 +2607,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2613,22 +2630,36 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* fastconvReverberationTimes Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) 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 ); #else ( *hHRTF )->fastconvReverberationTimes[j] = (float) ptW16[j] * scaleFactor; #endif } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); /* fastconvReverberationEneCorrections Q factor */ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) 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 ); #else ( *hHRTF )->fastconvReverberationEneCorrections[j] = (float) ptW16[j] * scaleFactor; #endif } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); } Loading Loading
lib_dec/ivas_binRenderer_internal.c +54 −24 Original line number Diff line number Diff line Loading @@ -809,6 +809,7 @@ static ivas_error ivas_binaural_hrtf_open( { #ifdef FIX_1123_FASTCONV_16BIT_ROM int16_t i, j, k; float scaleFactor; #else int16_t i, j; #endif Loading Loading @@ -873,6 +874,27 @@ 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 ); } else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); } if ( input_config == IVAS_AUDIO_CONFIG_HOA3 ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); } else if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { scaleFactor = powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); } HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; Loading @@ -891,10 +913,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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->leftHRIRImag[i][j][k] = (float) leftHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRReal[i][j][k] = (float) rightHRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); HrtfFastConv->rightHRIRImag[i][j][k] = (float) rightHRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_factorQ ); 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; } #else HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; Loading @@ -911,10 +933,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] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->leftBRIRImag[i][j][k] = (float) leftBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRReal[i][j][k] = (float) rightBRIRReal[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); HrtfFastConv->rightBRIRImag[i][j][k] = (float) rightBRIRImag[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_BRIR_factorQ ); 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; } #else HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; Loading @@ -931,10 +953,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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA3_factorQ ); HrtfFastConv->leftHRIRReal_HOA3[i][j][k] = (float) leftHRIRReal_HOA3[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_HOA3[i][j][k] = (float) leftHRIRImag_HOA3[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_HOA3[i][j][k] = (float) rightHRIRReal_HOA3[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_HOA3[i][j][k] = (float) rightHRIRImag_HOA3[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; Loading @@ -944,6 +966,9 @@ static ivas_error ivas_binaural_hrtf_open( #endif } } #ifdef FIX_1123_FASTCONV_16BIT_ROM else #endif if ( input_config == IVAS_AUDIO_CONFIG_HOA2 ) { for ( j = 0; j < HOA2_CHANNELS; j++ ) Loading @@ -951,10 +976,10 @@ static ivas_error ivas_binaural_hrtf_open( #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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_HOA2_factorQ ); HrtfFastConv->leftHRIRReal_HOA2[i][j][k] = (float) leftHRIRReal_HOA2[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_HOA2[i][j][k] = (float) leftHRIRImag_HOA2[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_HOA2[i][j][k] = (float) rightHRIRReal_HOA2[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_HOA2[i][j][k] = (float) rightHRIRImag_HOA2[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; Loading @@ -964,6 +989,9 @@ static ivas_error ivas_binaural_hrtf_open( #endif } } #ifdef FIX_1123_FASTCONV_16BIT_ROM else #endif if ( input_config == IVAS_AUDIO_CONFIG_FOA ) { for ( j = 0; j < FOA_CHANNELS; j++ ) Loading @@ -971,10 +999,10 @@ static ivas_error ivas_binaural_hrtf_open( #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] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * powf( 2.f, -1.f * (float) FASTCONV_HRIR_FOA_factorQ ); HrtfFastConv->leftHRIRReal_FOA[i][j][k] = (float) leftHRIRReal_FOA[i][j][k] * scaleFactor; HrtfFastConv->leftHRIRImag_FOA[i][j][k] = (float) leftHRIRImag_FOA[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRReal_FOA[i][j][k] = (float) rightHRIRReal_FOA[i][j][k] * scaleFactor; HrtfFastConv->rightHRIRImag_FOA[i][j][k] = (float) rightHRIRImag_FOA[i][j][k] * scaleFactor; } #else HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; Loading @@ -986,13 +1014,15 @@ static ivas_error ivas_binaural_hrtf_open( } } #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * powf( 2.f, -1.f * (float) fastconvReverberationTimes_factorQ ); HrtfFastConv->fastconvReverberationTimes[i] = (float) fastconvReverberationTimes[i] * scaleFactor; } scaleFactor = powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * powf( 2.f, -1.f * (float) fastconvReverberationEneCorrections_factorQ ); HrtfFastConv->fastconvReverberationEneCorrections[i] = (float) fastconvReverberationEneCorrections[i] * scaleFactor; } #else mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); Loading
lib_util/hrtf_file_reader.c +53 −22 Original line number Diff line number Diff line Loading @@ -1850,7 +1850,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( char *hrtf_data_rptr; ivas_error error; Word16 factorQ; #ifndef FIX_1123_FASTCONV_16BIT_ROM #ifdef FIX_1123_FASTCONV_16BIT_ROM float scaleFactor; #else int32_t *ptW32; #endif int16_t *ptW16; Loading Loading @@ -1923,6 +1925,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -1937,7 +1942,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -1962,7 +1967,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -1987,7 +1992,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2012,7 +2017,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2067,6 +2072,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2081,7 +2089,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2106,7 +2114,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2131,7 +2139,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2156,7 +2164,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA3[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2211,6 +2219,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2225,7 +2236,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2250,7 +2261,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2275,7 +2286,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2300,7 +2311,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_HOA2[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2356,6 +2367,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* HRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2370,7 +2384,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2395,7 +2409,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2420,7 +2434,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRReal_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2445,7 +2459,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightHRIRImag_FOA[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading Loading @@ -2501,6 +2515,9 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* BRIR Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) factorQ ); #endif for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { Loading @@ -2515,7 +2532,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2540,7 +2557,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->leftBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2565,7 +2582,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRReal[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2590,7 +2607,7 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( #endif { #ifdef FIX_1123_FASTCONV_16BIT_ROM ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW16[k] * powf( 2.f, -1.f * (float) factorQ ); ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW16[k] * scaleFactor; #else ( *hHRTF )->rightBRIRImag[i][j][k] = (float) ptW32[k] * powf( 2.f, -1.f * (float) factorQ ); #endif Loading @@ -2613,22 +2630,36 @@ static ivas_error create_fastconv_HRTF_from_rawdata_fx( /* fastconvReverberationTimes Q factor*/ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) 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 ); #else ( *hHRTF )->fastconvReverberationTimes[j] = (float) ptW16[j] * scaleFactor; #endif } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); /* fastconvReverberationEneCorrections Q factor */ factorQ = *( (Word16 *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( Word16 ); #ifdef FIX_1123_FASTCONV_16BIT_ROM scaleFactor = powf( 2.f, -1.f * (float) 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 ); #else ( *hHRTF )->fastconvReverberationEneCorrections[j] = (float) ptW16[j] * scaleFactor; #endif } hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( int16_t ); } Loading