Loading lib_rend/lib_rend.c +80 −26 Original line number Diff line number Diff line Loading @@ -120,6 +120,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 @@ -147,6 +150,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 @@ -155,6 +161,9 @@ typedef struct pan_matrix hoaDecMtx; CREND_WRAPPER_HANDLE crendWrapper; rotation_gains rot_gains_prev; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_sba; /* Due to API of some rendering methods, the renderer has to use the decoder struct. Loading @@ -167,6 +176,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 @@ -982,9 +994,9 @@ static void initRotGains( } #ifdef REND_STATIC_MEM_OPT static ivas_error allocateInputBaseBufferData( float **data ) static ivas_error allocateInputBaseBufferData( float **data, const int16_t data_size ) { *data = (float *) malloc( MAX_BUFFER_LENGTH * sizeof( float ) ); *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" ); Loading @@ -992,6 +1004,7 @@ static ivas_error allocateInputBaseBufferData( float **data ) return IVAS_ERR_OK; } static void freeInputBaseBufferData( float **data ) { if ( *data != NULL ) Loading @@ -1011,7 +1024,8 @@ static void initRendInputBase( const rendering_context rendCtx #ifdef REND_STATIC_MEM_OPT , const int16_t data_buf_size float *dataBuf, const int16_t dataBufSize #endif ) { Loading @@ -1028,17 +1042,10 @@ static void initRendInputBase( set_zero( inputBase->bufferData, MAX_BUFFER_LENGTH ); #else if ( data_buf_size < 0 ) { inputBase->inputBuffer.data = NULL; } else { freeInputBaseBufferData( &inputBase->inputBuffer.data ); if ( data_buf_size > 0 ) inputBase->inputBuffer.data = dataBuf; if ( inputBase->inputBuffer.data != NULL ) { allocateInputBaseBufferData( &inputBase->inputBuffer.data ); } set_zero( inputBase->inputBuffer.data, dataBufSize ); } #endif Loading Loading @@ -1134,11 +1141,16 @@ static ivas_error setRendInputActiveIsm( { return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputIsm->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -1191,10 +1203,13 @@ static void clearInputIsm( rendCtx = inputIsm->base.ctx; #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 , 0 NULL, 0 #endif ); Loading Loading @@ -1983,10 +1998,16 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputMc->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -2021,10 +2042,13 @@ static void clearInputMc( rendCtx = inputMc->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMc->bufferData ); #endif initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); Loading Loading @@ -2218,10 +2242,16 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputSba->bufferData, MAX_BUFFER_LENGTH #endif ); Loading @@ -2244,10 +2274,13 @@ static void clearInputSba( rendCtx = inputSba->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSba->bufferData ); #endif initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); Loading Loading @@ -2595,10 +2628,16 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputMasa->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -2693,10 +2732,13 @@ static void clearInputMasa( rendCtx = inputMasa->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMasa->bufferData ); #endif initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); freeDecoderDummy( &inputMasa->decDummy ); Loading Loading @@ -2776,12 +2818,15 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 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 ) Loading @@ -2789,13 +2834,16 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 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 ) Loading @@ -2803,10 +2851,13 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 NULL, 0 #endif ); hIvasRend->inputsSba[i].crendWrapper = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSba[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) Loading @@ -2814,11 +2865,14 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 NULL, 0 #endif ); hIvasRend->inputsMasa[i].decDummy = NULL; hIvasRend->inputsMasa[i].metadataHasBeenFed = false; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMasa[i].bufferData = NULL; #endif } return IVAS_ERR_OK; Loading Loading
lib_rend/lib_rend.c +80 −26 Original line number Diff line number Diff line Loading @@ -120,6 +120,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 @@ -147,6 +150,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 @@ -155,6 +161,9 @@ typedef struct pan_matrix hoaDecMtx; CREND_WRAPPER_HANDLE crendWrapper; rotation_gains rot_gains_prev; #ifdef REND_STATIC_MEM_OPT float *bufferData; #endif } input_sba; /* Due to API of some rendering methods, the renderer has to use the decoder struct. Loading @@ -167,6 +176,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 @@ -982,9 +994,9 @@ static void initRotGains( } #ifdef REND_STATIC_MEM_OPT static ivas_error allocateInputBaseBufferData( float **data ) static ivas_error allocateInputBaseBufferData( float **data, const int16_t data_size ) { *data = (float *) malloc( MAX_BUFFER_LENGTH * sizeof( float ) ); *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" ); Loading @@ -992,6 +1004,7 @@ static ivas_error allocateInputBaseBufferData( float **data ) return IVAS_ERR_OK; } static void freeInputBaseBufferData( float **data ) { if ( *data != NULL ) Loading @@ -1011,7 +1024,8 @@ static void initRendInputBase( const rendering_context rendCtx #ifdef REND_STATIC_MEM_OPT , const int16_t data_buf_size float *dataBuf, const int16_t dataBufSize #endif ) { Loading @@ -1028,17 +1042,10 @@ static void initRendInputBase( set_zero( inputBase->bufferData, MAX_BUFFER_LENGTH ); #else if ( data_buf_size < 0 ) { inputBase->inputBuffer.data = NULL; } else { freeInputBaseBufferData( &inputBase->inputBuffer.data ); if ( data_buf_size > 0 ) inputBase->inputBuffer.data = dataBuf; if ( inputBase->inputBuffer.data != NULL ) { allocateInputBaseBufferData( &inputBase->inputBuffer.data ); } set_zero( inputBase->inputBuffer.data, dataBufSize ); } #endif Loading Loading @@ -1134,11 +1141,16 @@ static ivas_error setRendInputActiveIsm( { return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputIsm->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -1191,10 +1203,13 @@ static void clearInputIsm( rendCtx = inputIsm->base.ctx; #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 , 0 NULL, 0 #endif ); Loading Loading @@ -1983,10 +1998,16 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputMc->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -2021,10 +2042,13 @@ static void clearInputMc( rendCtx = inputMc->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMc->bufferData ); #endif initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); Loading Loading @@ -2218,10 +2242,16 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputSba->bufferData, MAX_BUFFER_LENGTH #endif ); Loading @@ -2244,10 +2274,13 @@ static void clearInputSba( rendCtx = inputSba->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputSba->bufferData ); #endif initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); Loading Loading @@ -2595,10 +2628,16 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } #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 , MAX_BUFFER_LENGTH inputMasa->bufferData, MAX_BUFFER_LENGTH #endif ); Loading Loading @@ -2693,10 +2732,13 @@ static void clearInputMasa( rendCtx = inputMasa->base.ctx; #ifdef REND_STATIC_MEM_OPT freeInputBaseBufferData( &inputMasa->bufferData ); #endif initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx #ifdef REND_STATIC_MEM_OPT , 0 NULL, 0 #endif ); freeDecoderDummy( &inputMasa->decDummy ); Loading Loading @@ -2776,12 +2818,15 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 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 ) Loading @@ -2789,13 +2834,16 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 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 ) Loading @@ -2803,10 +2851,13 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 NULL, 0 #endif ); hIvasRend->inputsSba[i].crendWrapper = NULL; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsSba[i].bufferData = NULL; #endif } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) Loading @@ -2814,11 +2865,14 @@ ivas_error IVAS_REND_Open( initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) #ifdef REND_STATIC_MEM_OPT , -1 NULL, 0 #endif ); hIvasRend->inputsMasa[i].decDummy = NULL; hIvasRend->inputsMasa[i].metadataHasBeenFed = false; #ifdef REND_STATIC_MEM_OPT hIvasRend->inputsMasa[i].bufferData = NULL; #endif } return IVAS_ERR_OK; Loading