Commit a6acdc42 authored by vaclav's avatar vaclav
Browse files

issue 1200: fix bug in renderer flush in ISM JBM bitrate switching; under...

issue 1200: fix bug in renderer flush in ISM JBM bitrate switching; under NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
parent f18c648b
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@
#define NONBE_FIX_1176_OSBA_REVERB_JBM_ASAN_ERROR       /* Ericsson: Issue 1176, fix in TDREND_firfilt for subframes shorter than the filter length */

#define FIX_1139_REV_COLORATION_SHORT_T60               /* Nokia,FhG: Fix issue 1139, prevent sound coloration artefacts at very low reverberation times */
#define NONBE_1200_ISM_JBM_BRATE_SW_FLUSH               /* VA: issue 1200: fix bug in renderer flush in ISM JBM bitrate switching */

/* ##################### End NON-BE switches ########################### */

+22 −0
Original line number Diff line number Diff line
@@ -124,7 +124,9 @@ static ivas_error ivas_ism_bitrate_switching_dec(
        ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->hDecoderConfig->output_config );
    }

#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    {
#endif
        /* transfer subframe info from DirAC or ParamMC to central tc buffer */
        /* only do this if we are not having done everything already in the TC decoding part and having only played out from the TC buffer */
        if ( last_ism_mode == ISM_MODE_PARAM && st_ivas->hSpatParamRendCom != NULL && st_ivas->hTcBuffer->tc_buffer_mode != TC_BUFFER_MODE_BUFFER )
@@ -142,10 +144,19 @@ static ivas_error ivas_ism_bitrate_switching_dec(

        if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity )
        {
#ifdef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
            /* write back info for correct rendering of the flushable samples */
            int16_t nchan_transport_ref = st_ivas->nchan_transport;
            st_ivas->nchan_transport = nchan_transport_old;

#endif
            if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, MC_MODE_NONE, last_ism_mode, nSamplesRendered, pcm_resolution, data ) ) != IVAS_ERR_OK )
            {
                return error;
            }
#ifdef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
            st_ivas->nchan_transport = nchan_transport_ref;
#endif
        }
        /* JBM: when granularity goes up set samples to discard at the beginning of the frame */
        else if ( tc_granularity_new > st_ivas->hTcBuffer->n_samples_granularity )
@@ -155,7 +166,9 @@ static ivas_error ivas_ism_bitrate_switching_dec(
                return error;
            }
        }
#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    }
#endif

    if ( st_ivas->ism_mode != last_ism_mode )
    {
@@ -311,19 +324,26 @@ static ivas_error ivas_ism_bitrate_switching_dec(
     * floating-point output audio buffers
     *-----------------------------------------------------------------*/

#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    {
#endif
        nchan_out_buff = ivas_get_nchan_buffers_dec( st_ivas, -1, -1 );

        if ( ( error = ivas_output_buff_dec( st_ivas->p_output_f, nchan_out_buff_old, nchan_out_buff ) ) != IVAS_ERR_OK )
        {
            return error;
        }
#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    }
#endif

    /*-----------------------------------------------------------------*
     * JBM TC buffers
     *-----------------------------------------------------------------*/

#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    {
#endif
        int16_t tc_nchan_full_new;
        DECODER_TC_BUFFER_HANDLE hTcBuffer;

@@ -359,7 +379,9 @@ static ivas_error ivas_ism_bitrate_switching_dec(

            mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
        }
#ifndef NONBE_1200_ISM_JBM_BRATE_SW_FLUSH
    }
#endif

    return error;
}