Loading lib_rend/lib_rend.c +31 −22 Original line number Diff line number Diff line Loading @@ -55,7 +55,14 @@ /* Maximum buffer length (total) in samples. */ #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef REND_STATIC_MEM_OPT #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #else #define MAX_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif #else #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif Loading Loading @@ -2543,7 +2550,7 @@ static ivas_error setRendInputActiveSplitPostRend( outConfig = *rendCtx.pOutConfig; #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) ) != IVAS_ERR_OK ) if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BIN_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } Loading @@ -2551,7 +2558,7 @@ static ivas_error setRendInputActiveSplitPostRend( initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS inputSplitPostRend->bufferData, MAX_BIN_BUFFER_LENGTH #endif ); Loading Loading @@ -2588,7 +2595,7 @@ static ivas_error setRendInputActiveSba( } #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } Loading @@ -2596,7 +2603,7 @@ static ivas_error setRendInputActiveSba( initRendInputBase( &inputSba->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSba->bufferData, MAX_BUFFER_LENGTH inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputSba->hoaDecMtx ); Loading Loading @@ -4099,13 +4106,15 @@ ivas_error IVAS_REND_GetDelay( #ifdef SPLIT_REND_WITH_HEAD_ROT if ( hIvasRend->inputsSba[i].splitRendWrapper.hBinHrSplitPreRend != NULL ) { if ( hIvasRend->hRendererConfig->renderer_type_override != RENDER_TYPE_OVERRIDE_FASTCONV ) #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( hIvasRend->hRendererConfig->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; } else #endif { latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; } max_latency_ns = max( max_latency_ns, latency_ns ); } Loading Loading @@ -6102,21 +6111,8 @@ static ivas_error renderSbaToSplitBinaural( &sbaInput->splitRendWrapper.multiBinPoseData, sbaInput->base.ctx.pHeadRotData->sr_pose_pred_axis ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override != RENDER_TYPE_OVERRIDE_FASTCONV ) { renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ); max_band = (int16_t) ( ( BINAURAL_MAXBANDS * ( *sbaInput->base.ctx.pOutSampleRate ) ) / 48000 ); if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); } } else #endif #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); Loading @@ -6131,6 +6127,19 @@ static ivas_error renderSbaToSplitBinaural( low_res_pre_rend_rot ); max_band = sbaInput->cldfbRendWrapper.hCldfbRend->max_band; } else #endif { renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ); max_band = (int16_t) ( ( BINAURAL_MAXBANDS * ( *sbaInput->base.ctx.pOutSampleRate ) ) / 48000 ); if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); } } /*SPLIT pre rendering MD and CLDFB coding*/ convertBitsBufferToInternalBitsBuff( *hBits, &bits ); Loading Loading
lib_rend/lib_rend.c +31 −22 Original line number Diff line number Diff line Loading @@ -55,7 +55,14 @@ /* Maximum buffer length (total) in samples. */ #ifdef SPLIT_REND_WITH_HEAD_ROT #ifdef REND_STATIC_MEM_OPT #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) #else #define MAX_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif #else #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) #endif Loading Loading @@ -2543,7 +2550,7 @@ static ivas_error setRendInputActiveSplitPostRend( outConfig = *rendCtx.pOutConfig; #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) ) != IVAS_ERR_OK ) if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BIN_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } Loading @@ -2551,7 +2558,7 @@ static ivas_error setRendInputActiveSplitPostRend( initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS inputSplitPostRend->bufferData, MAX_BIN_BUFFER_LENGTH #endif ); Loading Loading @@ -2588,7 +2595,7 @@ static ivas_error setRendInputActiveSba( } #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } Loading @@ -2596,7 +2603,7 @@ static ivas_error setRendInputActiveSba( initRendInputBase( &inputSba->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSba->bufferData, MAX_BUFFER_LENGTH inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputSba->hoaDecMtx ); Loading Loading @@ -4099,13 +4106,15 @@ ivas_error IVAS_REND_GetDelay( #ifdef SPLIT_REND_WITH_HEAD_ROT if ( hIvasRend->inputsSba[i].splitRendWrapper.hBinHrSplitPreRend != NULL ) { if ( hIvasRend->hRendererConfig->renderer_type_override != RENDER_TYPE_OVERRIDE_FASTCONV ) #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( hIvasRend->hRendererConfig->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; } else #endif { latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; } max_latency_ns = max( max_latency_ns, latency_ns ); } Loading Loading @@ -6102,21 +6111,8 @@ static ivas_error renderSbaToSplitBinaural( &sbaInput->splitRendWrapper.multiBinPoseData, sbaInput->base.ctx.pHeadRotData->sr_pose_pred_axis ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override != RENDER_TYPE_OVERRIDE_FASTCONV ) { renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ); max_band = (int16_t) ( ( BINAURAL_MAXBANDS * ( *sbaInput->base.ctx.pOutSampleRate ) ) / 48000 ); if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); } } else #endif #if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT ) if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV ) { copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); Loading @@ -6131,6 +6127,19 @@ static ivas_error renderSbaToSplitBinaural( low_res_pre_rend_rot ); max_band = sbaInput->cldfbRendWrapper.hCldfbRend->max_band; } else #endif { renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ); max_band = (int16_t) ( ( BINAURAL_MAXBANDS * ( *sbaInput->base.ctx.pOutSampleRate ) ) / 48000 ); if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); } } /*SPLIT pre rendering MD and CLDFB coding*/ convertBitsBufferToInternalBitsBuff( *hBits, &bits ); Loading