Loading lib_com/options.h +3 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ #define OPTIMIZE_DPCM_QUANT #define SPLIT_REND_PLC /*CLDFB CODEC SWITCHES -- END*/ #define REND_STATIC_MEM_OPT #endif /* ################## End DEVELOPMENT switches ######################### */ Loading lib_rend/lib_rend.c +209 −18 Original line number Diff line number Diff line Loading @@ -115,7 +115,9 @@ typedef struct IVAS_REND_AudioConfig inConfig; IVAS_REND_InputId id; IVAS_REND_AudioBuffer inputBuffer; #ifndef REND_STATIC_MEM_OPT float bufferData[MAX_BUFFER_LENGTH]; #endif float gain; /* Linear, not in dB */ rendering_context ctx; int32_t numNewSamplesPerChannel; /* Used to keep track how much new audio was fed before rendering current frame */ Loading @@ -130,6 +132,9 @@ typedef struct CREND_WRAPPER_HANDLE crendWrapper; REVERB_HANDLE hReverb; rotation_matrix rot_mat_prev; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_ism; typedef struct Loading Loading @@ -157,6 +162,9 @@ typedef struct REVERB_HANDLE hReverb; rotation_gains rot_gains_prev; lfe_routing lfeRouting; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_mc; typedef struct Loading @@ -173,6 +181,10 @@ typedef struct #else rotation_gains rot_gains_prev; #endif #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_sba; #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -180,6 +192,9 @@ typedef struct { input_base base; SPLIT_POST_REND_WRAPPER splitPostRendWrapper; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_split_post_rend; #endif Loading @@ -193,6 +208,9 @@ typedef struct DecoderDummy *decDummy; MASA_METADATA_FRAME masaMetadata; bool metadataHasBeenFed; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_masa; struct IVAS_REND Loading Loading @@ -231,6 +249,30 @@ struct IVAS_REND * Local functions *-------------------------------------------------------------------*/ #ifdef REND_STATIC_MEM_OPT static ivas_error allocateInputBaseBufferData( float **data, const int16_t data_size ) { *data = (float *) malloc( data_size * sizeof( float ) ); if ( *data == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for input base buffer data" ); } return IVAS_ERR_OK; } static void freeInputBaseBufferData( float **data ) { if ( *data != NULL ) { free( *data ); *data = NULL; } return; } #endif static IVAS_QUATERNION quaternionInit( void ) { Loading Loading @@ -1134,7 +1176,13 @@ static void initRendInputBase( input_base *inputBase, const IVAS_REND_AudioConfig inConfig, const IVAS_REND_InputId id, const rendering_context rendCtx ) const rendering_context rendCtx #ifdef REND_STATIC_MEM_OPT , float *dataBuf, const int16_t dataBufSize #endif ) { inputBase->inConfig = inConfig; inputBase->id = id; Loading @@ -1144,10 +1192,17 @@ static void initRendInputBase( inputBase->inputBuffer.config.numSamplesPerChannel = 0; inputBase->inputBuffer.config.numChannels = 0; #ifndef REND_STATIC_MEM_OPT inputBase->inputBuffer.data = inputBase->bufferData; set_zero( inputBase->bufferData, MAX_BUFFER_LENGTH ); #else inputBase->inputBuffer.data = dataBuf; if ( inputBase->inputBuffer.data != NULL ) { set_zero( inputBase->inputBuffer.data, dataBufSize ); } #endif return; } Loading Loading @@ -1255,7 +1310,18 @@ static ivas_error setRendInputActiveIsm( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputIsm->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputIsm->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputIsm->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputIsm->bufferData, MAX_BUFFER_LENGTH #endif ); inputIsm->currentPos = defaultObjectPosition(); inputIsm->previousPos = defaultObjectPosition(); Loading Loading @@ -1311,7 +1377,15 @@ static void clearInputIsm( rendCtx = inputIsm->base.ctx; initRendInputBase( &inputIsm->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputIsm->base.inputBuffer.data ); #endif initRendInputBase( &inputIsm->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ Loading Loading @@ -2114,7 +2188,18 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputMc->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputMc->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputMc->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputMc->bufferData, MAX_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputMc->panGains ); inputMc->customLsInput = defaultCustomLs(); inputMc->tdRendWrapper = defaultTdRendWrapper(); Loading Loading @@ -2146,7 +2231,15 @@ static void clearInputMc( rendCtx = inputMc->base.ctx; initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMc->bufferData ); #endif initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ if ( inputMc->efapInWrapper.hEfap != NULL ) Loading Loading @@ -2445,7 +2538,18 @@ static ivas_error setRendInputActiveSplitPostRend( rendCtx = inputSplitPostRend->base.ctx; outConfig = *rendCtx.pOutConfig; initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH #endif ); if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2479,7 +2583,18 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputSba->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputSba->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSba->bufferData, MAX_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputSba->hoaDecMtx ); #ifdef SPLIT_REND_WITH_HEAD_ROT inputSba->crendWrapper = NULL; Loading @@ -2504,10 +2619,19 @@ static ivas_error setRendInputActiveSba( static void clearInputSplitRend( input_split_post_rend *inputSplitRend ) { // rendering_context rendCtx; rendering_context rendCtx; // rendCtx = inputSplitRend->base.ctx; rendCtx = inputSplitRend->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSplitRend->bufferData ); #endif initRendInputBase( &inputSplitRend->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); if ( inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend != NULL ) { ivas_splitBinPostRendClose( &inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend ); Loading @@ -2528,7 +2652,15 @@ static void clearInputSba( rendCtx = inputSba->base.ctx; initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSba->bufferData ); #endif initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ #ifdef SPLIT_REND_WITH_HEAD_ROT Loading Loading @@ -2895,7 +3027,18 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputMasa->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputMasa->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputMasa->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputMasa->bufferData, MAX_BUFFER_LENGTH #endif ); if ( ( error = getAudioConfigNumChannels( inConfig, &numInChannels ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2988,7 +3131,15 @@ static void clearInputMasa( rendCtx = inputMasa->base.ctx; initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMasa->bufferData ); #endif initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); freeDecoderDummy( &inputMasa->decDummy ); return; Loading Loading @@ -3063,37 +3214,69 @@ ivas_error IVAS_REND_Open( /* Initialize inputs */ for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsIsm[i].crendWrapper = NULL; hIvasRend->inputsIsm[i].hReverb = NULL; hIvasRend->inputsIsm[i].tdRendWrapper.hBinRendererTd = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsIsm[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsMc[i].efapInWrapper.hEfap = NULL; hIvasRend->inputsMc[i].crendWrapper = NULL; hIvasRend->inputsMc[i].hReverb = NULL; hIvasRend->inputsMc[i].tdRendWrapper.hBinRendererTd = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMc[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsSba[i].crendWrapper = NULL; #ifdef SPLIT_REND_WITH_HEAD_ROT hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend = NULL; hIvasRend->inputsSba[i].cldfbRendWrapper.hHrtfFastConv = NULL; ivas_init_split_rend_handles( &hIvasRend->inputsSba[i].splitRendWrapper ); #endif #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSba[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsMasa[i].decDummy = NULL; hIvasRend->inputsMasa[i].metadataHasBeenFed = false; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMasa[i].bufferData = NULL; #endif } #ifdef SPLIT_REND_WITH_HEAD_ROT for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) Loading @@ -3101,10 +3284,18 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsSplitPost[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); ivas_init_split_post_rend_handles( &hIvasRend->inputsSplitPost[i].splitPostRendWrapper ); #ifdef SPLIT_REND_PLC hIvasRend->splitRendBFI = 0; #endif #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSplitPost[i].bufferData = NULL; #endif } #endif Loading Loading
lib_com/options.h +3 −0 Original line number Diff line number Diff line Loading @@ -201,6 +201,9 @@ #define OPTIMIZE_DPCM_QUANT #define SPLIT_REND_PLC /*CLDFB CODEC SWITCHES -- END*/ #define REND_STATIC_MEM_OPT #endif /* ################## End DEVELOPMENT switches ######################### */ Loading
lib_rend/lib_rend.c +209 −18 Original line number Diff line number Diff line Loading @@ -115,7 +115,9 @@ typedef struct IVAS_REND_AudioConfig inConfig; IVAS_REND_InputId id; IVAS_REND_AudioBuffer inputBuffer; #ifndef REND_STATIC_MEM_OPT float bufferData[MAX_BUFFER_LENGTH]; #endif float gain; /* Linear, not in dB */ rendering_context ctx; int32_t numNewSamplesPerChannel; /* Used to keep track how much new audio was fed before rendering current frame */ Loading @@ -130,6 +132,9 @@ typedef struct CREND_WRAPPER_HANDLE crendWrapper; REVERB_HANDLE hReverb; rotation_matrix rot_mat_prev; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_ism; typedef struct Loading Loading @@ -157,6 +162,9 @@ typedef struct REVERB_HANDLE hReverb; rotation_gains rot_gains_prev; lfe_routing lfeRouting; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_mc; typedef struct Loading @@ -173,6 +181,10 @@ typedef struct #else rotation_gains rot_gains_prev; #endif #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_sba; #ifdef SPLIT_REND_WITH_HEAD_ROT Loading @@ -180,6 +192,9 @@ typedef struct { input_base base; SPLIT_POST_REND_WRAPPER splitPostRendWrapper; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_split_post_rend; #endif Loading @@ -193,6 +208,9 @@ typedef struct DecoderDummy *decDummy; MASA_METADATA_FRAME masaMetadata; bool metadataHasBeenFed; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_masa; struct IVAS_REND Loading Loading @@ -231,6 +249,30 @@ struct IVAS_REND * Local functions *-------------------------------------------------------------------*/ #ifdef REND_STATIC_MEM_OPT static ivas_error allocateInputBaseBufferData( float **data, const int16_t data_size ) { *data = (float *) malloc( data_size * sizeof( float ) ); if ( *data == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for input base buffer data" ); } return IVAS_ERR_OK; } static void freeInputBaseBufferData( float **data ) { if ( *data != NULL ) { free( *data ); *data = NULL; } return; } #endif static IVAS_QUATERNION quaternionInit( void ) { Loading Loading @@ -1134,7 +1176,13 @@ static void initRendInputBase( input_base *inputBase, const IVAS_REND_AudioConfig inConfig, const IVAS_REND_InputId id, const rendering_context rendCtx ) const rendering_context rendCtx #ifdef REND_STATIC_MEM_OPT , float *dataBuf, const int16_t dataBufSize #endif ) { inputBase->inConfig = inConfig; inputBase->id = id; Loading @@ -1144,10 +1192,17 @@ static void initRendInputBase( inputBase->inputBuffer.config.numSamplesPerChannel = 0; inputBase->inputBuffer.config.numChannels = 0; #ifndef REND_STATIC_MEM_OPT inputBase->inputBuffer.data = inputBase->bufferData; set_zero( inputBase->bufferData, MAX_BUFFER_LENGTH ); #else inputBase->inputBuffer.data = dataBuf; if ( inputBase->inputBuffer.data != NULL ) { set_zero( inputBase->inputBuffer.data, dataBufSize ); } #endif return; } Loading Loading @@ -1255,7 +1310,18 @@ static ivas_error setRendInputActiveIsm( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputIsm->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputIsm->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputIsm->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputIsm->bufferData, MAX_BUFFER_LENGTH #endif ); inputIsm->currentPos = defaultObjectPosition(); inputIsm->previousPos = defaultObjectPosition(); Loading Loading @@ -1311,7 +1377,15 @@ static void clearInputIsm( rendCtx = inputIsm->base.ctx; initRendInputBase( &inputIsm->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputIsm->base.inputBuffer.data ); #endif initRendInputBase( &inputIsm->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ Loading Loading @@ -2114,7 +2188,18 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputMc->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputMc->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputMc->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputMc->bufferData, MAX_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputMc->panGains ); inputMc->customLsInput = defaultCustomLs(); inputMc->tdRendWrapper = defaultTdRendWrapper(); Loading Loading @@ -2146,7 +2231,15 @@ static void clearInputMc( rendCtx = inputMc->base.ctx; initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMc->bufferData ); #endif initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ if ( inputMc->efapInWrapper.hEfap != NULL ) Loading Loading @@ -2445,7 +2538,18 @@ static ivas_error setRendInputActiveSplitPostRend( rendCtx = inputSplitPostRend->base.ctx; outConfig = *rendCtx.pOutConfig; initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSplitPostRend->bufferData, MAX_BUFFER_LENGTH #endif ); if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2479,7 +2583,18 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputSba->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputSba->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputSba->bufferData, MAX_BUFFER_LENGTH #endif ); setZeroPanMatrix( inputSba->hoaDecMtx ); #ifdef SPLIT_REND_WITH_HEAD_ROT inputSba->crendWrapper = NULL; Loading @@ -2504,10 +2619,19 @@ static ivas_error setRendInputActiveSba( static void clearInputSplitRend( input_split_post_rend *inputSplitRend ) { // rendering_context rendCtx; rendering_context rendCtx; // rendCtx = inputSplitRend->base.ctx; rendCtx = inputSplitRend->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSplitRend->bufferData ); #endif initRendInputBase( &inputSplitRend->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); if ( inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend != NULL ) { ivas_splitBinPostRendClose( &inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend ); Loading @@ -2528,7 +2652,15 @@ static void clearInputSba( rendCtx = inputSba->base.ctx; initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSba->bufferData ); #endif initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); /* Free input's internal handles */ #ifdef SPLIT_REND_WITH_HEAD_ROT Loading Loading @@ -2895,7 +3027,18 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } initRendInputBase( &inputMasa->base, inConfig, id, rendCtx ); #ifdef REND_STATIC_MEM_OPT if ( ( error = allocateInputBaseBufferData( &inputMasa->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) { return error; } #endif initRendInputBase( &inputMasa->base, inConfig, id, rendCtx #ifdef REND_STATIC_MEM_OPT , inputMasa->bufferData, MAX_BUFFER_LENGTH #endif ); if ( ( error = getAudioConfigNumChannels( inConfig, &numInChannels ) ) != IVAS_ERR_OK ) { Loading Loading @@ -2988,7 +3131,15 @@ static void clearInputMasa( rendCtx = inputMasa->base.ctx; initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMasa->bufferData ); #endif initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); freeDecoderDummy( &inputMasa->decDummy ); return; Loading Loading @@ -3063,37 +3214,69 @@ ivas_error IVAS_REND_Open( /* Initialize inputs */ for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsIsm[i].crendWrapper = NULL; hIvasRend->inputsIsm[i].hReverb = NULL; hIvasRend->inputsIsm[i].tdRendWrapper.hBinRendererTd = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsIsm[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsMc[i].efapInWrapper.hEfap = NULL; hIvasRend->inputsMc[i].crendWrapper = NULL; hIvasRend->inputsMc[i].hReverb = NULL; hIvasRend->inputsMc[i].tdRendWrapper.hBinRendererTd = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMc[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsSba[i].crendWrapper = NULL; #ifdef SPLIT_REND_WITH_HEAD_ROT hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend = NULL; hIvasRend->inputsSba[i].cldfbRendWrapper.hHrtfFastConv = NULL; ivas_init_split_rend_handles( &hIvasRend->inputsSba[i].splitRendWrapper ); #endif #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSba[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) { initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); hIvasRend->inputsMasa[i].decDummy = NULL; hIvasRend->inputsMasa[i].metadataHasBeenFed = false; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMasa[i].bufferData = NULL; #endif } #ifdef SPLIT_REND_WITH_HEAD_ROT for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) Loading @@ -3101,10 +3284,18 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsSplitPost[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , NULL, 0 #endif ); ivas_init_split_post_rend_handles( &hIvasRend->inputsSplitPost[i].splitPostRendWrapper ); #ifdef SPLIT_REND_PLC hIvasRend->splitRendBFI = 0; #endif #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSplitPost[i].bufferData = NULL; #endif } #endif Loading