Loading lib_dec/ivas_ism_renderer.c +40 −8 Original line number Diff line number Diff line Loading @@ -354,11 +354,15 @@ ivas_error ivas_omasa_separate_object_renderer_open( int16_t interpolator_length; int16_t i; int16_t init_interpolator_length; int16_t delayBuffer_nchan_new; if ( st_ivas->hIsmRendererData == NULL ) { if ( ( st_ivas->hIsmRendererData = (ISM_RENDERER_HANDLE) malloc( sizeof( ISM_RENDERER_DATA ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM renderer \n" ) ); } } for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) { Loading @@ -376,6 +380,12 @@ ivas_error ivas_omasa_separate_object_renderer_open( init_interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); interpolator_length = init_interpolator_length; } if ( st_ivas->hIsmRendererData->interpolator != NULL ) { free( st_ivas->hIsmRendererData->interpolator ); st_ivas->hIsmRendererData->interpolator = NULL; } st_ivas->hIsmRendererData->interpolator = (float *) malloc( sizeof( float ) * init_interpolator_length ); for ( i = 0; i < interpolator_length; i++ ) Loading @@ -387,24 +397,46 @@ ivas_error ivas_omasa_separate_object_renderer_open( if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { st_ivas->hMasaIsmData->delayBuffer_nchan = 1; delayBuffer_nchan_new = 1; } else { st_ivas->hMasaIsmData->delayBuffer_nchan = st_ivas->nchan_ism; delayBuffer_nchan_new = st_ivas->nchan_ism; } if ( st_ivas->hMasaIsmData->delayBuffer != NULL && delayBuffer_nchan_new != st_ivas->hMasaIsmData->delayBuffer_nchan ) { for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { if ( st_ivas->hMasaIsmData->delayBuffer[i] != NULL ) { free( st_ivas->hMasaIsmData->delayBuffer[i] ); st_ivas->hMasaIsmData->delayBuffer[i] = NULL; } } free( st_ivas->hMasaIsmData->delayBuffer ); st_ivas->hMasaIsmData->delayBuffer = NULL; } st_ivas->hMasaIsmData->delayBuffer_nchan = delayBuffer_nchan_new; if ( st_ivas->hMasaIsmData->delayBuffer == NULL ) { if ( ( st_ivas->hMasaIsmData->delayBuffer = (float **) malloc( st_ivas->hMasaIsmData->delayBuffer_nchan * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); } for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { if ( ( st_ivas->hMasaIsmData->delayBuffer[i] = (float *) malloc( st_ivas->hMasaIsmData->delayBuffer_size * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); } } } for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { set_zero( st_ivas->hMasaIsmData->delayBuffer[i], st_ivas->hMasaIsmData->delayBuffer_size ); } Loading Loading
lib_dec/ivas_ism_renderer.c +40 −8 Original line number Diff line number Diff line Loading @@ -354,11 +354,15 @@ ivas_error ivas_omasa_separate_object_renderer_open( int16_t interpolator_length; int16_t i; int16_t init_interpolator_length; int16_t delayBuffer_nchan_new; if ( st_ivas->hIsmRendererData == NULL ) { if ( ( st_ivas->hIsmRendererData = (ISM_RENDERER_HANDLE) malloc( sizeof( ISM_RENDERER_DATA ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM renderer \n" ) ); } } for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) { Loading @@ -376,6 +380,12 @@ ivas_error ivas_omasa_separate_object_renderer_open( init_interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); interpolator_length = init_interpolator_length; } if ( st_ivas->hIsmRendererData->interpolator != NULL ) { free( st_ivas->hIsmRendererData->interpolator ); st_ivas->hIsmRendererData->interpolator = NULL; } st_ivas->hIsmRendererData->interpolator = (float *) malloc( sizeof( float ) * init_interpolator_length ); for ( i = 0; i < interpolator_length; i++ ) Loading @@ -387,24 +397,46 @@ ivas_error ivas_omasa_separate_object_renderer_open( if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { st_ivas->hMasaIsmData->delayBuffer_nchan = 1; delayBuffer_nchan_new = 1; } else { st_ivas->hMasaIsmData->delayBuffer_nchan = st_ivas->nchan_ism; delayBuffer_nchan_new = st_ivas->nchan_ism; } if ( st_ivas->hMasaIsmData->delayBuffer != NULL && delayBuffer_nchan_new != st_ivas->hMasaIsmData->delayBuffer_nchan ) { for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { if ( st_ivas->hMasaIsmData->delayBuffer[i] != NULL ) { free( st_ivas->hMasaIsmData->delayBuffer[i] ); st_ivas->hMasaIsmData->delayBuffer[i] = NULL; } } free( st_ivas->hMasaIsmData->delayBuffer ); st_ivas->hMasaIsmData->delayBuffer = NULL; } st_ivas->hMasaIsmData->delayBuffer_nchan = delayBuffer_nchan_new; if ( st_ivas->hMasaIsmData->delayBuffer == NULL ) { if ( ( st_ivas->hMasaIsmData->delayBuffer = (float **) malloc( st_ivas->hMasaIsmData->delayBuffer_nchan * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); } for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { if ( ( st_ivas->hMasaIsmData->delayBuffer[i] = (float *) malloc( st_ivas->hMasaIsmData->delayBuffer_size * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); } } } for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) { set_zero( st_ivas->hMasaIsmData->delayBuffer[i], st_ivas->hMasaIsmData->delayBuffer_size ); } Loading