Commit 65a89248 authored by vaclav's avatar vaclav
Browse files

cleaning

parent fda46f0d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -839,8 +839,11 @@ ivas_error ivas_jbm_dec_flush_renderer(
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*/
    int16_t *nSamplesResidual                                   /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
#ifndef REMOVE_APA_BUFFER
    ,
    float *data                                                 /* i/o: time-scaled transport channels                              */
#endif
);

void ivas_dec_prepare_renderer(
+81 −24
Original line number Diff line number Diff line
@@ -50,8 +50,9 @@
 * Local function prototypes
 *-----------------------------------------------------------------------*/

#ifndef REMOVE_APA_BUFFER
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[] );

static void ivas_jbm_dec_copy_masa_meta_to_buffer( Decoder_Struct *st_ivas );
@@ -791,25 +792,17 @@ ivas_error ivas_jbm_dec_tc(
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*/
    int16_t *nSamplesResidual           /* o  : number of samples not fitting into the renderer grid and buffer for the next call*/
#ifndef REMOVE_APA_BUFFER
    ,
    float *data /* i  : time-scaled transport channels                  */
#endif
)
{
#ifdef REMOVE_APA_BUFFER
    float apa_buff[12 * MAX_JBM_L_FRAME48k];
#endif
    float data_f[MAX_CLDFB_DIGEST_CHANNELS][MAX_JBM_L_FRAME48k]; /* 'float' buffer for transport channels that will be directly converted with the CLDFB */
    float *p_data_f[MAX_CLDFB_DIGEST_CHANNELS];
    int16_t n, n_render_timeslots;

#ifdef REMOVE_APA_BUFFER
    int16_t n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) );
    // mvr2r( data, apa_buff, min( st_ivas->hTcBuffer->nchan_transport_jbm, st_ivas->hTcBuffer->nchan_buffer_full ) * n_samp_full );
    mvr2r( data, apa_buff, st_ivas->hTcBuffer->nchan_transport_jbm * n_samp_full );
    // set_zero( data, st_ivas->hTcBuffer->nchan_transport_jbm * n_samp_full );
    data = apa_buff;

#endif
    push_wmops( "ivas_jbm_dec_feed_tc_to_renderer" );
    for ( n = 0; n < MAX_CLDFB_DIGEST_CHANNELS; n++ )
    {
@@ -826,7 +819,75 @@ void ivas_jbm_dec_feed_tc_to_renderer(

    if ( st_ivas->hDecoderConfig->Opt_tsm )
    {
#ifdef REMOVE_APA_BUFFER
        int16_t n_samples_still_available, ch, m;
        int16_t n_ch_full_copy, n_ch_res_copy, n_ch_cldfb;
        DECODER_TC_BUFFER_HANDLE hTcBuffer;
#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
        hTcBuffer = st_ivas->hTcBuffer;
        n_ch_cldfb = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full;

        for ( n = 0; n < n_ch_cldfb; n++ )
        {
            p_data_f[n] = &data_f[n][0];
        }

        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 );
        *nSamplesResidual = hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_available;
        n_ch_full_copy = min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full );
        n_ch_res_copy = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full;

        for ( ch = 0; ch < n_ch_full_copy; ch++ )
        {
            set_zero( hTcBuffer->tc[ch], hTcBuffer->n_samples_discard );
#ifdef OPT_TC
            mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_discard, n_samples_still_available );
#else
            mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_rendered, hTcBuffer->tc[ch] + hTcBuffer->n_samples_discard, n_samples_still_available );
#endif
            for ( m = 0; m < nSamplesForRendering; m++ )
            {
                hTcBuffer->tc[ch][n_samples_still_available + hTcBuffer->n_samples_discard + m] = data[m * hTcBuffer->nchan_transport_jbm + ch];
            }
#ifdef OPT_TC
            // mvr2r( p_data_f[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 OPT_TC
                mvr2r( st_ivas->hTcBuffer->tc_buffer_old[ch], p_data_f[ch], n_samples_still_available );
#else
                mvr2r( hTcBuffer->tc[ch], p_data_f[ch], n_samples_still_available );
#endif
                for ( m = 0; m < nSamplesForRendering; m++ )
                {
                    p_data_f[ch][n_samples_still_available + m] = data[m * hTcBuffer->nchan_transport_jbm + ch];
                }
#ifdef OPT_TC
                mvr2r( p_data_f[ch] + hTcBuffer->n_samples_available, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
#else
                mvr2r( p_data_f[ch] + hTcBuffer->n_samples_available, hTcBuffer->tc[ch], *nSamplesResidual );
#endif
            }
        }


        hTcBuffer->n_samples_rendered = 0;
        hTcBuffer->subframes_rendered = 0;
#else
        ivas_jbm_dec_copy_tc( st_ivas, nSamplesForRendering, nSamplesResidual, data, p_data_f );
#endif
    }
    else
    {
@@ -1438,8 +1499,9 @@ ivas_error ivas_jbm_dec_flush_renderer(
        /* 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 < min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ )
        for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_transport_jbm; ch_idx++ )
#endif
        {
            mvr2r( hTcBuffer->tc_buffer_old[ch_idx], hTcBuffer->tc[ch_idx], n_samples_to_render );
@@ -2052,7 +2114,7 @@ int16_t ivas_jbm_dec_get_num_tc_channels(
    return num_tc;
}


#ifndef REMOVE_APA_BUFFER
/*--------------------------------------------------------------------------*
 * ivas_jbm_dec_copy_tc()
 *
@@ -2122,7 +2184,7 @@ static void ivas_jbm_dec_copy_tc(

    return;
}

#endif

/*--------------------------------------------------------------------------*
 * ivas_jbm_dec_get_render_granularity()
@@ -2234,18 +2296,13 @@ static ivas_error ivas_jbm_dec_tc_buffer_allocate(
            hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset];
            offset += n_samp_full;
        }
        for ( ; ch_idx < hTcBuffer->nchan_transport_internal; ch_idx++ )
        {
            hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset];
            offset += n_samp_residual;
        }
        for ( ; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
        {
            hTcBuffer->tc[ch_idx] = NULL;
        }

        /* memory buffer for TC audio samples not rendered in the previous frame */
        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++ )
        {
            if ( ( hTcBuffer->tc_buffer_old[ch_idx] = (float *) malloc( n_samp_residual * sizeof( float ) ) ) == NULL )
            {
+2 −1
Original line number Diff line number Diff line
@@ -1425,7 +1425,7 @@ ivas_error IVAS_DEC_GetSamplesDecoder(

#ifdef LIB_DEC_REVISION
#ifdef REMOVE_APA_BUFFER
        ivas_jbm_dec_feed_tc_to_renderer( st_ivas, nSamplesTcsScaled, &nResidualSamples, st_ivas->hTcBuffer->tc_buffer );
        ivas_jbm_dec_feed_tc_to_renderer( st_ivas, nSamplesTcsScaled, &nResidualSamples );
#else
        ivas_jbm_dec_feed_tc_to_renderer( st_ivas, nSamplesTcsScaled, &nResidualSamples, hIvasDec->apaExecBuffer );
#endif
@@ -2098,6 +2098,7 @@ ivas_error IVAS_DEC_GetSamplesRenderer(
            if ( hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_rendered < hTcBuffer->n_samples_granularity )
            {
                for ( ch = 0; ch < min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch++ )
                //for ( ch = 0; ch < hTcBuffer->nchan_transport_internal; ch++ )
                {
                    mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_rendered, hTcBuffer->tc_buffer_old[ch], hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_rendered );
                }