Loading lib_dec/ivas_binRenderer_internal.c +156 −5 Original line number Diff line number Diff line Loading @@ -247,10 +247,12 @@ static void ivas_binRenderer_filterModule_fx( * Open convolution module handle of fastconv binaural renderer *-------------------------------------------------------------------------*/ #ifdef IVAS_FLOAT_FIXED #ifndef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM #define NUM_TAPS_F0_6 ( Word16 )( 58 ) // (int16_t) ceil( 0.6f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_5 ( Word16 )( 48 ) // (int16_t) ceil( 0.5f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_4 ( Word16 )( 39 ) // (int16_t) ceil( 0.4f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_3 ( Word16 )( 29 ) // (int16_t) ceil( 0.3f * hBinRenConvModule->numTaps ) #endif static ivas_error ivas_binRenderer_convModuleOpen( BINAURAL_RENDERER_HANDLE hBinRenderer, Loading Loading @@ -284,7 +286,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTaps = hHrtf->ntaps_brir; #else hBinRenConvModule->numTaps = BINAURAL_NTAPS_MAX; #endif move16(); /* Use variable order filtering */ Loading @@ -297,22 +303,38 @@ static ivas_error ivas_binRenderer_convModuleOpen( } FOR( ; bandIdx < 10; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 6 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_6; #endif move16(); } FOR( ; bandIdx < 20; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 5 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_5; #endif move16(); } FOR( ; bandIdx < 30; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 4 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_4; #endif move16(); } FOR( ; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 3 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_3; #endif move16(); } } Loading @@ -320,12 +342,35 @@ static ivas_error ivas_binRenderer_convModuleOpen( { IF( EQ_16( hBinRenderer->ivas_format, SBA_FORMAT ) ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_HOA3 ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa3; } ELSE IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_HOA2 ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa2; } ELSE IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_FOA ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_foa; } ELSE { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else hBinRenConvModule->numTaps = BINAURAL_NTAPS_SBA; #endif move16(); } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTaps = hHrtf->ntaps_hrir; #else hBinRenConvModule->numTaps = BINAURAL_NTAPS; #endif move16(); } Loading Loading @@ -919,6 +964,13 @@ void ivas_init_binaural_hrtf_fx( HrtfFastConv->allocate_init_flag = 0; move16(); #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM HrtfFastConv->ntaps_hrir = BINAURAL_NTAPS; HrtfFastConv->ntaps_hrir_foa = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_hrir_hoa2 = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_hrir_hoa3 = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_brir = BINAURAL_NTAPS_MAX; #endif FOR( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { Loading Loading @@ -1110,6 +1162,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" ); Loading @@ -1126,6 +1196,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" ); } #endif } } Loading @@ -1141,6 +1212,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" ); Loading @@ -1157,6 +1246,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" ); } #endif } } Loading @@ -1172,6 +1262,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" ); Loading @@ -1188,6 +1296,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" ); } #endif } } Loading @@ -1203,6 +1312,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" ); Loading @@ -1219,6 +1346,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" ); } #endif } } Loading @@ -1234,6 +1362,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRImag" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightBRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" ); Loading @@ -1250,6 +1396,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" ); } #endif } } Loading Loading @@ -1494,7 +1641,11 @@ static ivas_error ivas_binaural_hrtf_open_fx( #endif } #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; #endif move16(); IF( NE_32( ( error = ivas_allocate_binaural_hrtf_fx( HrtfFastConv, input_config, BINAURAL_INPUT_AUDIO_CONFIG_INVALID, renderer_type, HrtfFastConv->allocate_init_flag ) ), IVAS_ERR_OK ) ) Loading @@ -1508,7 +1659,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir; k++ ) { HrtfFastConv->leftHRIRReal_fx[i][j][k] = (Word16) leftHRIRReal[i][j][k]; HrtfFastConv->leftHRIRImag_fx[i][j][k] = (Word16) leftHRIRImag[i][j][k]; Loading @@ -1528,7 +1679,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_brir; k++ ) { HrtfFastConv->leftBRIRReal_fx[i][j][k] = (Word16) leftBRIRReal[i][j][k]; HrtfFastConv->leftBRIRImag_fx[i][j][k] = (Word16) leftBRIRImag[i][j][k]; Loading @@ -1548,7 +1699,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_hoa3; k++ ) { HrtfFastConv->leftHRIRReal_HOA3_fx[i][j][k] = (Word16) leftHRIRReal_HOA3[i][j][k]; HrtfFastConv->leftHRIRImag_HOA3_fx[i][j][k] = (Word16) leftHRIRImag_HOA3[i][j][k]; Loading @@ -1568,7 +1719,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_hoa2; k++ ) { HrtfFastConv->leftHRIRReal_HOA2_fx[i][j][k] = (Word16) leftHRIRReal_HOA2[i][j][k]; HrtfFastConv->leftHRIRImag_HOA2_fx[i][j][k] = (Word16) leftHRIRImag_HOA2[i][j][k]; Loading @@ -1588,7 +1739,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_foa; k++ ) { HrtfFastConv->leftHRIRReal_FOA_fx[i][j][k] = (Word16) leftHRIRReal_FOA[i][j][k]; HrtfFastConv->leftHRIRImag_FOA_fx[i][j][k] = (Word16) leftHRIRImag_FOA[i][j][k]; Loading lib_rend/ivas_stat_rend.h +7 −0 Original line number Diff line number Diff line Loading @@ -2401,6 +2401,13 @@ typedef struct ivas_hrtfs_fastconv_struct #endif int16_t allocate_init_flag; /*Memory allocation flag 0: if the hrtf pointers are allocated at application level , 1: of allocated at ivas_binaural_hrtf_open() */ #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM uint16_t ntaps_hrir; uint16_t ntaps_hrir_foa; uint16_t ntaps_hrir_hoa2; uint16_t ntaps_hrir_hoa3; uint16_t ntaps_brir; #endif #ifdef IVAS_FLOAT_FIXED #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM Loading lib_util/hrtf_file_reader.c +302 −221 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
lib_dec/ivas_binRenderer_internal.c +156 −5 Original line number Diff line number Diff line Loading @@ -247,10 +247,12 @@ static void ivas_binRenderer_filterModule_fx( * Open convolution module handle of fastconv binaural renderer *-------------------------------------------------------------------------*/ #ifdef IVAS_FLOAT_FIXED #ifndef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM #define NUM_TAPS_F0_6 ( Word16 )( 58 ) // (int16_t) ceil( 0.6f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_5 ( Word16 )( 48 ) // (int16_t) ceil( 0.5f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_4 ( Word16 )( 39 ) // (int16_t) ceil( 0.4f * hBinRenConvModule->numTaps ) #define NUM_TAPS_F0_3 ( Word16 )( 29 ) // (int16_t) ceil( 0.3f * hBinRenConvModule->numTaps ) #endif static ivas_error ivas_binRenderer_convModuleOpen( BINAURAL_RENDERER_HANDLE hBinRenderer, Loading Loading @@ -284,7 +286,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTaps = hHrtf->ntaps_brir; #else hBinRenConvModule->numTaps = BINAURAL_NTAPS_MAX; #endif move16(); /* Use variable order filtering */ Loading @@ -297,22 +303,38 @@ static ivas_error ivas_binRenderer_convModuleOpen( } FOR( ; bandIdx < 10; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 6 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_6; #endif move16(); } FOR( ; bandIdx < 20; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 5 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_5; #endif move16(); } FOR( ; bandIdx < 30; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 4 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_4; #endif move16(); } FOR( ; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTapsArray[bandIdx] = ( ( hBinRenConvModule->numTaps - 1 ) * 3 ) / 10 + 1; #else hBinRenConvModule->numTapsArray[bandIdx] = NUM_TAPS_F0_3; #endif move16(); } } Loading @@ -320,12 +342,35 @@ static ivas_error ivas_binRenderer_convModuleOpen( { IF( EQ_16( hBinRenderer->ivas_format, SBA_FORMAT ) ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_HOA3 ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa3; } ELSE IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_HOA2 ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_hoa2; } ELSE IF( EQ_16( input_config, IVAS_AUDIO_CONFIG_FOA ) ) { hBinRenConvModule->numTaps = hHrtf->ntaps_hrir_foa; } ELSE { return IVAS_ERR_INVALID_INPUT_FORMAT; } #else hBinRenConvModule->numTaps = BINAURAL_NTAPS_SBA; #endif move16(); } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM hBinRenConvModule->numTaps = hHrtf->ntaps_hrir; #else hBinRenConvModule->numTaps = BINAURAL_NTAPS; #endif move16(); } Loading Loading @@ -919,6 +964,13 @@ void ivas_init_binaural_hrtf_fx( HrtfFastConv->allocate_init_flag = 0; move16(); #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM HrtfFastConv->ntaps_hrir = BINAURAL_NTAPS; HrtfFastConv->ntaps_hrir_foa = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_hrir_hoa2 = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_hrir_hoa3 = BINAURAL_NTAPS_SBA; HrtfFastConv->ntaps_brir = BINAURAL_NTAPS_MAX; #endif FOR( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { Loading Loading @@ -1110,6 +1162,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA3" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, HrtfFastConv->ntaps_hrir_hoa3, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA3_fx, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" ); Loading @@ -1126,6 +1196,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" ); } #endif } } Loading @@ -1141,6 +1212,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA2" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, HrtfFastConv->ntaps_hrir_hoa2, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_HOA2_fx, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" ); Loading @@ -1157,6 +1246,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" ); } #endif } } Loading @@ -1172,6 +1262,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_FOA" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, HrtfFastConv->ntaps_hrir_foa, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_FOA_fx, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" ); Loading @@ -1188,6 +1296,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" ); } #endif } } Loading @@ -1203,6 +1312,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightHRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_hrir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftHRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" ); Loading @@ -1219,6 +1346,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" ); } #endif } } Loading @@ -1234,6 +1362,24 @@ ivas_error ivas_allocate_binaural_hrtf_fx( } ELSE { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRImag" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRReal" ); } IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->rightBRIRImag_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, HrtfFastConv->ntaps_brir, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" ); } #else IF( NE_32( IVAS_ERR_OK, ivas_alloc_pppMem_fx( &HrtfFastConv->leftBRIRReal_fx, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" ); Loading @@ -1250,6 +1396,7 @@ ivas_error ivas_allocate_binaural_hrtf_fx( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" ); } #endif } } Loading Loading @@ -1494,7 +1641,11 @@ static ivas_error ivas_binaural_hrtf_open_fx( #endif } #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM HrtfFastConv->allocate_init_flag = 0; /* TODO: consider getting rid of this flag entirely? */ #else HrtfFastConv->allocate_init_flag = 1; #endif move16(); IF( NE_32( ( error = ivas_allocate_binaural_hrtf_fx( HrtfFastConv, input_config, BINAURAL_INPUT_AUDIO_CONFIG_INVALID, renderer_type, HrtfFastConv->allocate_init_flag ) ), IVAS_ERR_OK ) ) Loading @@ -1508,7 +1659,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir; k++ ) { HrtfFastConv->leftHRIRReal_fx[i][j][k] = (Word16) leftHRIRReal[i][j][k]; HrtfFastConv->leftHRIRImag_fx[i][j][k] = (Word16) leftHRIRImag[i][j][k]; Loading @@ -1528,7 +1679,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HRTF_LS_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_brir; k++ ) { HrtfFastConv->leftBRIRReal_fx[i][j][k] = (Word16) leftBRIRReal[i][j][k]; HrtfFastConv->leftBRIRImag_fx[i][j][k] = (Word16) leftBRIRImag[i][j][k]; Loading @@ -1548,7 +1699,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HOA3_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_hoa3; k++ ) { HrtfFastConv->leftHRIRReal_HOA3_fx[i][j][k] = (Word16) leftHRIRReal_HOA3[i][j][k]; HrtfFastConv->leftHRIRImag_HOA3_fx[i][j][k] = (Word16) leftHRIRImag_HOA3[i][j][k]; Loading @@ -1568,7 +1719,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < HOA2_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_hoa2; k++ ) { HrtfFastConv->leftHRIRReal_HOA2_fx[i][j][k] = (Word16) leftHRIRReal_HOA2[i][j][k]; HrtfFastConv->leftHRIRImag_HOA2_fx[i][j][k] = (Word16) leftHRIRImag_HOA2[i][j][k]; Loading @@ -1588,7 +1739,7 @@ static ivas_error ivas_binaural_hrtf_open_fx( FOR( j = 0; j < FOA_CHANNELS; j++ ) { #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM FOR( k = 0; k < BINAURAL_NTAPS; k++ ) FOR( k = 0; k < HrtfFastConv->ntaps_hrir_foa; k++ ) { HrtfFastConv->leftHRIRReal_FOA_fx[i][j][k] = (Word16) leftHRIRReal_FOA[i][j][k]; HrtfFastConv->leftHRIRImag_FOA_fx[i][j][k] = (Word16) leftHRIRImag_FOA[i][j][k]; Loading
lib_rend/ivas_stat_rend.h +7 −0 Original line number Diff line number Diff line Loading @@ -2401,6 +2401,13 @@ typedef struct ivas_hrtfs_fastconv_struct #endif int16_t allocate_init_flag; /*Memory allocation flag 0: if the hrtf pointers are allocated at application level , 1: of allocated at ivas_binaural_hrtf_open() */ #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM uint16_t ntaps_hrir; uint16_t ntaps_hrir_foa; uint16_t ntaps_hrir_hoa2; uint16_t ntaps_hrir_hoa3; uint16_t ntaps_brir; #endif #ifdef IVAS_FLOAT_FIXED #ifdef FIX_1123_FASTCONV_PARAMBIN_16BIT_ROM Loading
lib_util/hrtf_file_reader.c +302 −221 File changed.Preview size limit exceeded, changes collapsed. Show changes