Commit c1fb3a04 authored by vaclav's avatar vaclav
Browse files

cleaning

parent 238e16ef
Loading
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -172,13 +172,8 @@ typedef enum
#define JBM_CLDFB_SLOTS_IN_SUBFRAME             4
#define MAX_JBM_CLDFB_TIMESLOTS                 32
#define DEFAULT_JBM_CLDFB_TIMESLOTS             16
#if (defined JBM_MEMORY_OPT && !defined REMOVE_APA_BUFFER)
#define MAX_JBM_L_FRAME48k                      (1920 - 240)
#define MAX_JBM_L_FRAME_NS                      35000000L
#else
#define MAX_JBM_L_FRAME48k                      1920
#define MAX_JBM_L_FRAME_NS                      40000000L
#endif
#define MAX_SPAR_INTERNAL_CHANNELS              IVAS_SPAR_MAX_CH
#define MAX_CLDFB_DIGEST_CHANNELS               (FOA_CHANNELS + MAX_NUM_OBJECTS)

+2 −2
Original line number Diff line number Diff line
@@ -266,7 +266,7 @@ void ivas_syn_output_f(
    float *synth_out                                            /* o  : integer 16 bits synthesis signal        */
);

#ifdef SER2PAR
#ifdef JBM_MEMORY_OPT
void ivas_buffer_serial_to_parallel(
    float *audio,                                               /* i/o: audio buffer                            */
    const int16_t n_channels,                                   /* i  : number of channels                      */
@@ -849,7 +849,7 @@ void ivas_jbm_dec_feed_tc_to_renderer(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                      */
    const int16_t nSamplesForRendering,                         /* i  : number of TC samples available for rendering                */
    int16_t *nSamplesResidual                                   /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    ,
    float *data                                                 /* i/o: time-scaled transport channels                              */
#endif
+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ uint32_t ivas_syn_output(
    return noClipping;
}

#ifdef SER2PAR
#ifdef JBM_MEMORY_OPT

/*-------------------------------------------------------------------*
 * ivas_buffer_serial_to_parallel()
+0 −5
Original line number Diff line number Diff line
@@ -161,13 +161,8 @@
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */
#define TMP_FIX_1119_SPLIT_RENDERING_VOIP               /* FhG: Add error check for unsupported config: split rendering with VoIP mode */
#define LIB_DEC_REVISION                                /* VA: cleaning and simplification of lib_dec.c */
#if 1
#define JBM_MEMORY_OPT                                  /* VA: issue 916: optimization of RAM in the JBM decoder */
#define FIX_OSBA_BR_SW_FLUSH   
#define REMOVE_APA_BUFFER   // remove hIvasDec->apaExecBuffer[]

#define SER2PAR
#endif

/* #################### End BE switches ################################## */

+21 −79
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@
 * Local function prototypes
 *-----------------------------------------------------------------------*/

#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
static void ivas_jbm_dec_copy_tc( Decoder_Struct *st_ivas, const int16_t nSamplesForRendering, int16_t *nSamplesResidual, float *data, float *tc_digest_f[] );
#endif
static void ivas_jbm_dec_tc_buffer_playout( Decoder_Struct *st_ivas, const uint16_t nSamplesAsked, uint16_t *nSamplesRendered, float *output[] );
@@ -793,13 +793,13 @@ void ivas_jbm_dec_feed_tc_to_renderer(
    Decoder_Struct *st_ivas,            /* i/o: IVAS decoder structure                          */
    const int16_t nSamplesForRendering, /* i  : number of TC samples available for rendering    */
    int16_t *nSamplesResidual           /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    ,
    float *data /* i  : time-scaled transport channels                  */
#endif
)
{
#ifdef SER2PAR
#ifdef JBM_MEMORY_OPT
    float tmp_buf[MAX_JBM_L_FRAME48k];
#else
    float data_f[MAX_CLDFB_DIGEST_CHANNELS][MAX_JBM_L_FRAME48k]; /* 'float' buffer for transport channels that will be directly converted with the CLDFB */
@@ -808,16 +808,9 @@ void ivas_jbm_dec_feed_tc_to_renderer(
    int16_t n, n_render_timeslots;

    push_wmops( "ivas_jbm_dec_feed_tc_to_renderer" );
#ifndef SER2PAR
    for ( n = 0; n < MAX_CLDFB_DIGEST_CHANNELS; n++ )
    {
        p_data_f[n] = &data_f[n][0];
    }

#endif
    if ( !st_ivas->hDecoderConfig->Opt_tsm )
    {
#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
        for ( n = 0; n < max( st_ivas->hTcBuffer->nchan_transport_jbm, st_ivas->hTcBuffer->nchan_buffer_full ); n++ )
#else
        for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ )
@@ -829,28 +822,12 @@ void ivas_jbm_dec_feed_tc_to_renderer(

    if ( st_ivas->hDecoderConfig->Opt_tsm )
    {
#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
        int16_t n_samples_still_available, ch;
        int16_t n_ch_full_copy, n_ch_res_copy, n_ch_cldfb;
        int16_t n_ch_full_copy, n_ch_res_copy;
        DECODER_TC_BUFFER_HANDLE hTcBuffer;
#ifndef SER2PAR
#ifdef REMOVE_APA_BUFFER
        float data[MAX_TRANSPORT_CHANNELS * MAX_JBM_L_FRAME48k];
        int16_t n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) );
        mvr2r( st_ivas->hTcBuffer->tc_buffer, data, st_ivas->hTcBuffer->nchan_transport_jbm * n_samp_full );

#endif

#endif
        hTcBuffer = st_ivas->hTcBuffer;
        n_ch_cldfb = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full;
#ifndef SER2PAR
        for ( n = 0; n < n_ch_cldfb; n++ )
        {
            p_data_f[n] = &data_f[n][0];
        }

#endif
        n_samples_still_available = hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_rendered;
        hTcBuffer->n_samples_buffered = n_samples_still_available + nSamplesForRendering + hTcBuffer->n_samples_discard;
        hTcBuffer->n_samples_available = hTcBuffer->n_samples_granularity * ( hTcBuffer->n_samples_buffered / hTcBuffer->n_samples_granularity );
@@ -860,43 +837,22 @@ void ivas_jbm_dec_feed_tc_to_renderer(

        for ( ch = 0; ch < n_ch_full_copy; ch++ )
        {
#ifdef SER2PAR
            mvr2r( hTcBuffer->tc[ch], tmp_buf, nSamplesForRendering );
#endif
            set_zero( hTcBuffer->tc[ch], hTcBuffer->n_samples_discard );
            mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_discard, n_samples_still_available );
#ifdef SER2PAR
            mvr2r( tmp_buf, hTcBuffer->tc[ch] + n_samples_still_available + hTcBuffer->n_samples_discard, nSamplesForRendering - *nSamplesResidual );
            mvr2r( tmp_buf + nSamplesForRendering - *nSamplesResidual, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
#else
            for ( int16_t m = 0; m < nSamplesForRendering; m++ )
            {
                hTcBuffer->tc[ch][n_samples_still_available + hTcBuffer->n_samples_discard + m] = data[m * hTcBuffer->nchan_transport_jbm + ch];
            }
            mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_available, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
#endif
        }

        if ( n_ch_res_copy > 0 )
        {
            for ( ; ch < hTcBuffer->nchan_transport_jbm; ch++ )
            {
#ifdef SER2PAR
                mvr2r( hTcBuffer->tc[ch], tmp_buf, nSamplesForRendering );
                p_data_f[ch - n_ch_full_copy] = hTcBuffer->tc[ch];

#endif
                mvr2r( hTcBuffer->tc[ch], tmp_buf, nSamplesForRendering );
                mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], p_data_f[ch], n_samples_still_available );
#ifdef SER2PAR
                mvr2r( tmp_buf, p_data_f[ch] + n_samples_still_available, nSamplesForRendering - *nSamplesResidual );
                mvr2r( tmp_buf + nSamplesForRendering - *nSamplesResidual, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
#else
                for ( int16_t m = 0; m < nSamplesForRendering; m++ )
                {
                    p_data_f[ch][n_samples_still_available + m] = data[m * hTcBuffer->nchan_transport_jbm + ch];
                }
                mvr2r( p_data_f[ch] + hTcBuffer->n_samples_available, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
#endif
            }
        }

@@ -988,7 +944,7 @@ ivas_error ivas_jbm_dec_render(
            p_tc[n] = &p_output[n][st_ivas->hTcBuffer->n_samples_rendered];
        }

#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
        for ( n = 0; n < MAX_INTERN_CHANNELS; n++ )
#else
        for ( n = 0; n < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; n++ )
@@ -1517,28 +1473,14 @@ ivas_error ivas_jbm_dec_flush_renderer(
    {
        int16_t ch_idx;

#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
        /* render available full slots (with new lower granularity) */
#ifdef FIX_OSBA_BR_SW_FLUSH
        for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ )
        // for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_transport_internal; ch_idx++ ) // VE: TBV
#else
        for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_transport_jbm; ch_idx++ )
#endif
        {
            /* move it at the beginning of the TC buffer with zero padding */
            mvr2r( hTcBuffer->tc_buffer_old[ch_idx], hTcBuffer->tc[ch_idx], n_samples_to_render );
            set_zero( hTcBuffer->tc[ch_idx] + n_samples_to_render, hTcBuffer->n_samples_granularity - n_samples_to_render );
        }
#ifndef FIX_OSBA_BR_SW_FLUSH
        for ( ; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ )
        {
            /* move it at the beginning of the TC buffer with zero padding */
            mvr2r( hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_rendered, hTcBuffer->tc[ch_idx], n_samples_to_render );
            set_zero( hTcBuffer->tc[ch_idx] + n_samples_to_render, hTcBuffer->n_samples_granularity - n_samples_to_render );
            mvr2r( hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_rendered + n_samples_to_render, hTcBuffer->tc[ch_idx] + hTcBuffer->n_samples_granularity, n_samples_still_available );
        }
#endif
#else
        /* render what is still there with zero padding */
        for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ )
@@ -2138,7 +2080,7 @@ int16_t ivas_jbm_dec_get_num_tc_channels(
    return num_tc;
}

#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
/*--------------------------------------------------------------------------*
 * ivas_jbm_dec_copy_tc()
 *
@@ -2259,7 +2201,7 @@ int16_t ivas_jbm_dec_get_render_granularity(
}
#endif

#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT

/*--------------------------------------------------------------------------*
 * ivas_jbm_dec_tc_audio_allocate()
@@ -2396,12 +2338,12 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    const int16_t n_samples_granularity     /* i  : granularity of the renderer/buffer  */
)
{
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    int16_t nsamp_to_allocate;
#endif
    DECODER_TC_BUFFER_HANDLE hTcBuffer;
    int16_t nMaxSlotsPerSubframe;
#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
    ivas_error error;
#else
    int16_t nchan_residual;
@@ -2421,7 +2363,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    hTcBuffer->nchan_transport_jbm = nchan_transport_jbm;
    hTcBuffer->nchan_transport_internal = nchan_transport_internal;
    hTcBuffer->nchan_buffer_full = nchan_full;
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    nchan_residual = nchan_transport_internal - nchan_full;
#endif
    hTcBuffer->n_samples_granularity = n_samples_granularity;
@@ -2433,7 +2375,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    hTcBuffer->n_samples_discard = 0;
    hTcBuffer->n_samples_flushed = 0;
    hTcBuffer->nb_subframes = MAX_PARAM_SPATIAL_SUBFRAMES;
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    nsamp_to_allocate = 0;
#endif
    nMaxSlotsPerSubframe = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / ( FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES ) ) / hTcBuffer->n_samples_granularity;
@@ -2441,7 +2383,7 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    set_s( hTcBuffer->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS );
    set_s( hTcBuffer->subframe_nbslots, nMaxSlotsPerSubframe, MAX_PARAM_SPATIAL_SUBFRAMES );

#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
    if ( ( error = ivas_jbm_dec_tc_audio_allocate( hTcBuffer, st_ivas->hDecoderConfig->output_Fs, st_ivas->hDecoderConfig->Opt_tsm ) ) != IVAS_ERR_OK )
    {
        return error;
@@ -2529,7 +2471,7 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
    const int16_t n_samples_granularity     /* i  : new granularity of the renderer/buffer  */
)
{
#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
    ivas_error error;
#else
    int16_t nsamp_to_allocate, n_samp_full, n_samp_residual, offset, nchan_residual;
@@ -2576,7 +2518,7 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
    hTcBuffer->nchan_transport_jbm = nchan_transport_jbm;
    hTcBuffer->nchan_transport_internal = nchan_transport_internal;
    hTcBuffer->nchan_buffer_full = nchan_full;
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    nchan_residual = nchan_transport_internal - nchan_full;
#endif
    hTcBuffer->n_samples_granularity = n_samples_granularity;
@@ -2586,7 +2528,7 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
    assert( ( hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_rendered ) < n_samples_granularity );
#endif

#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
    /* reallocate TC audio buffers */

    ivas_jbm_dec_tc_audio_deallocate( hTcBuffer );
@@ -2714,13 +2656,13 @@ void ivas_jbm_dec_tc_buffer_close(
    DECODER_TC_BUFFER_HANDLE *phTcBuffer /* i/o: TC buffer handle */
)
{
#ifndef REMOVE_APA_BUFFER
#ifndef JBM_MEMORY_OPT
    int16_t i;

#endif
    if ( *phTcBuffer != NULL )
    {
#ifdef REMOVE_APA_BUFFER
#ifdef JBM_MEMORY_OPT
        ivas_jbm_dec_tc_audio_deallocate( *phTcBuffer );
#else
        for ( i = 0; i < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; i++ )
Loading