Commit 736ef9ab authored by TYAGIRIS's avatar TYAGIRIS
Browse files

separate buffer in each format handle

parent fe8a2eb7
Loading
Loading
Loading
Loading
+80 −26
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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.
@@ -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
@@ -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" );
@@ -992,6 +1004,7 @@ static ivas_error allocateInputBaseBufferData( float **data )

    return IVAS_ERR_OK;
}

static void freeInputBaseBufferData( float **data )
{
    if ( *data != NULL )
@@ -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
)
{
@@ -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

@@ -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
    );

@@ -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
    );

@@ -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
    );

@@ -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
    );

@@ -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
    );

@@ -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
    );

@@ -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
    );

@@ -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 );
@@ -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 )
@@ -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 )
@@ -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 )
@@ -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;