Commit 07c8f8e7 authored by vaclav's avatar vaclav
Browse files

update hTcBuffer->tc_buffer_old[] only in ivas_jbm_dec_feed_tc_to_renderer()

parent 65a89248
Loading
Loading
Loading
Loading
+10 −21
Original line number Diff line number Diff line
@@ -847,42 +847,27 @@ void ivas_jbm_dec_feed_tc_to_renderer(
        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
            mvr2r( hTcBuffer->tc[ch] + hTcBuffer->n_samples_available, hTcBuffer->tc_buffer_old[ch], *nSamplesResidual );
        }

        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
@@ -893,6 +878,7 @@ void ivas_jbm_dec_feed_tc_to_renderer(
    {
        *nSamplesResidual = 0;
    }

    n_render_timeslots = st_ivas->hTcBuffer->n_samples_available / st_ivas->hTcBuffer->n_samples_granularity;

    if ( st_ivas->ivas_format == ISM_FORMAT )
@@ -2266,11 +2252,7 @@ static ivas_error ivas_jbm_dec_tc_buffer_allocate(

    if ( Opt_tsm )
    {
#ifdef REMOVE_APA_BUFFER
        n_samp_full = ( NS2SA( output_Fs, MAX_JBM_L_FRAME_NS ) );
#else
        n_samp_full = ( NS2SA( output_Fs, MAX_JBM_L_FRAME_NS ) + hTcBuffer->n_samples_granularity - 1 );
#endif
        n_samp_residual = hTcBuffer->n_samples_granularity - 1;
    }
    else
@@ -2291,7 +2273,7 @@ static ivas_error ivas_jbm_dec_tc_buffer_allocate(
        set_zero( hTcBuffer->tc_buffer, nsamp_to_allocate );

        offset = 0;
        for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ )
        for ( ch_idx = 0; ch_idx < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch_idx++ )
        {
            hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset];
            offset += n_samp_full;
@@ -2558,6 +2540,13 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
    /* realloc buffers */
    if ( hTcBuffer->tc_buffer != NULL )
    {
#ifdef OPT_TC
        for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ )
        {
            hTcBuffer->tc[ch_idx] = NULL;
        }

#endif
        free( hTcBuffer->tc_buffer );
        hTcBuffer->tc_buffer = NULL;
#ifdef OPT_TC
+0 −22
Original line number Diff line number Diff line
@@ -2087,28 +2087,6 @@ ivas_error IVAS_DEC_GetSamplesRenderer(
        {
            *needNewFrame = false;
        }
#endif
#ifdef OPT_TC

        if ( st_ivas->hDecoderConfig->Opt_tsm )
        {
            int16_t ch;
            DECODER_TC_BUFFER_HANDLE hTcBuffer = st_ivas->hTcBuffer;

            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 );
                }
                for ( ; ch < max( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); ch++ )
                {
                    /* note: residual channels were saved already in ivas_jbm_dec_copy_tc() */
                    // mvr2r( hTcBuffer->tc[ch], hTcBuffer->tc_buffer_old[ch], hTcBuffer->n_samples_buffered - hTcBuffer->n_samples_rendered );
                }
            }
        }
#endif
    }