Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,7 @@ #define ROM_TO_RAM /*switch to convert CQMF decoder tables to RAM*/ #define SPLIT_REND_CLANG_SAN_FIX #define SPLIT_REND_CLDFB_HUFF_SAN_FIX #define SPLIT_REND_STACK_OPT #endif /* ################## End DEVELOPMENT switches ######################### */ Loading lib_rend/lib_rend.c +45 −6 Original line number Diff line number Diff line Loading @@ -6077,6 +6077,30 @@ static ivas_error renderSbaToMultiBinaural( } #endif #ifdef SPLIT_REND_STACK_OPT static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, float Cldfb_Out_Real[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_Out_Imag[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const int16_t low_res_pre_rend_rot ) { float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); ivas_rend_CldfbMultiBinRendProcess( sbaInput->cldfbRendWrapper.hCldfbRend, sbaInput->base.ctx.pHeadRotData, &sbaInput->splitRendWrapper.multiBinPoseData, Cldfb_RealBuffer, Cldfb_ImagBuffer, Cldfb_Out_Real, Cldfb_Out_Imag, low_res_pre_rend_rot ); return IVAS_ERR_OK; } #endif static ivas_error renderSbaToSplitBinaural( input_sba *sbaInput, #ifdef SPLIT_REND_WITH_HEAD_ROT Loading Loading @@ -6112,6 +6136,13 @@ static ivas_error renderSbaToSplitBinaural( #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { #ifdef SPLIT_REND_STACK_OPT renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, low_res_pre_rend_rot ); #else float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; Loading @@ -6126,6 +6157,7 @@ static ivas_error renderSbaToSplitBinaural( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, low_res_pre_rend_rot ); #endif max_band = sbaInput->cldfbRendWrapper.hCldfbRend->max_band; } else Loading Loading @@ -6164,13 +6196,12 @@ static ivas_error renderSbaToSplitBinaural( } #endif static ivas_error renderSbaToBinaural( static ivas_error renderSbaToBinaural( input_sba *sbaInput, const IVAS_REND_AudioConfig outConfig, IVAS_REND_AudioBuffer outAudio ) { float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; ivas_error error; IVAS_REND_AudioBuffer tmpRotBuffer; Loading @@ -6179,10 +6210,16 @@ static ivas_error renderSbaToBinaural( #if defined DEBUGGING && defined SPLIT_REND_WITH_HEAD_ROT if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; #ifdef SPLIT_REND_STACK_OPT renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 0 ); #else float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); Loading @@ -6195,12 +6232,14 @@ static ivas_error renderSbaToBinaural( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 0 ); #endif accumulateCLDFBArrayToBuffer( Cldfb_RealBuffer_Binaural[0], Cldfb_ImagBuffer_Binaural[0], &outAudio ); } else #endif { float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; tmpRotBuffer = sbaInput->base.inputBuffer; tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,7 @@ #define ROM_TO_RAM /*switch to convert CQMF decoder tables to RAM*/ #define SPLIT_REND_CLANG_SAN_FIX #define SPLIT_REND_CLDFB_HUFF_SAN_FIX #define SPLIT_REND_STACK_OPT #endif /* ################## End DEVELOPMENT switches ######################### */ Loading
lib_rend/lib_rend.c +45 −6 Original line number Diff line number Diff line Loading @@ -6077,6 +6077,30 @@ static ivas_error renderSbaToMultiBinaural( } #endif #ifdef SPLIT_REND_STACK_OPT static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, float Cldfb_Out_Real[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_Out_Imag[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const int16_t low_res_pre_rend_rot ) { float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); ivas_rend_CldfbMultiBinRendProcess( sbaInput->cldfbRendWrapper.hCldfbRend, sbaInput->base.ctx.pHeadRotData, &sbaInput->splitRendWrapper.multiBinPoseData, Cldfb_RealBuffer, Cldfb_ImagBuffer, Cldfb_Out_Real, Cldfb_Out_Imag, low_res_pre_rend_rot ); return IVAS_ERR_OK; } #endif static ivas_error renderSbaToSplitBinaural( input_sba *sbaInput, #ifdef SPLIT_REND_WITH_HEAD_ROT Loading Loading @@ -6112,6 +6136,13 @@ static ivas_error renderSbaToSplitBinaural( #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { #ifdef SPLIT_REND_STACK_OPT renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, low_res_pre_rend_rot ); #else float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; Loading @@ -6126,6 +6157,7 @@ static ivas_error renderSbaToSplitBinaural( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, low_res_pre_rend_rot ); #endif max_band = sbaInput->cldfbRendWrapper.hCldfbRend->max_band; } else Loading Loading @@ -6164,13 +6196,12 @@ static ivas_error renderSbaToSplitBinaural( } #endif static ivas_error renderSbaToBinaural( static ivas_error renderSbaToBinaural( input_sba *sbaInput, const IVAS_REND_AudioConfig outConfig, IVAS_REND_AudioBuffer outAudio ) { float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; ivas_error error; IVAS_REND_AudioBuffer tmpRotBuffer; Loading @@ -6179,10 +6210,16 @@ static ivas_error renderSbaToBinaural( #if defined DEBUGGING && defined SPLIT_REND_WITH_HEAD_ROT if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; #ifdef SPLIT_REND_STACK_OPT renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 0 ); #else float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); Loading @@ -6195,12 +6232,14 @@ static ivas_error renderSbaToBinaural( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 0 ); #endif accumulateCLDFBArrayToBuffer( Cldfb_RealBuffer_Binaural[0], Cldfb_ImagBuffer_Binaural[0], &outAudio ); } else #endif { float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; tmpRotBuffer = sbaInput->base.inputBuffer; tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); Loading