Commit 084b0abf authored by bayers's avatar bayers
Browse files

Merge branch '808-jbm-mc-bitrate-switching-broken' into 'main'

[Non-BE] Resolve "JBM MC bitrate switching broken"

See merge request !1098
parents 0c4c5c56 0fd64573
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -188,6 +188,7 @@
#endif
#define NONBE_FIX_730_DPID_NOT_SET_CORRECTLY                  /* Eri: issue 730: write dpid read from file in correct index, print informative error message when DPID specified is not found. */
#define NONBE_FIX_825_SBA_JBM_MONO_STEREO_OUTPUT              /* FhG: issue #825: Resolve "JBM SBA: AGC and PCA run twice for MONO and STEREO output"   */
#define NONBE_FIX_808_JBM_PARAMUPMIX_RS                       /* FhG: Issue 808: fix JBM MC rate switching */

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

+16 −1
Original line number Diff line number Diff line
@@ -658,6 +658,18 @@ ivas_error ivas_mc_paramupmix_dec_open(
    /* allocate transport channels*/
    hMCParamUpmix->free_param_interpolator = 0;
    hMCParamUpmix->param_interpolator = NULL;
#ifdef NONBE_FIX_808_JBM_PARAMUPMIX_RS
    if ( st_ivas->hDecoderConfig->Opt_5ms == 1 )
    {
        if ( ( hMCParamUpmix->param_interpolator = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * sizeof( float ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for interpolator\n" ) );
        }
        hMCParamUpmix->free_param_interpolator = 1;

        ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, DEFAULT_JBM_CLDFB_TIMESLOTS, hMCParamUpmix->param_interpolator );
    }
#endif
    if ( st_ivas->hDecoderConfig->Opt_5ms == 1 && st_ivas->hTcBuffer == NULL )
    {
        int16_t nchan_to_allocate;
@@ -667,11 +679,12 @@ ivas_error ivas_mc_paramupmix_dec_open(
        buffer_mode = TC_BUFFER_MODE_RENDERER;
        nchan_tc = ivas_jbm_dec_get_num_tc_channels( st_ivas );
        nchan_to_allocate = MC_PARAMUPMIX_MAX_INPUT_CHANS;
#ifndef NONBE_FIX_808_JBM_PARAMUPMIX_RS
        if ( ( hMCParamUpmix->param_interpolator = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * sizeof( float ) ) ) == NULL )
        {
            return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for interpolator\n" ) );
        }

#endif
        if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_MONO )
        {
            buffer_mode = TC_BUFFER_MODE_BUFFER;
@@ -686,9 +699,11 @@ ivas_error ivas_mc_paramupmix_dec_open(
        {
            return error;
        }
#ifndef NONBE_FIX_808_JBM_PARAMUPMIX_RS
        hMCParamUpmix->free_param_interpolator = 1;

        ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, DEFAULT_JBM_CLDFB_TIMESLOTS, hMCParamUpmix->param_interpolator );
#endif
    }

    st_ivas->hMCParamUpmix = hMCParamUpmix;
+13 −0
Original line number Diff line number Diff line
@@ -1346,6 +1346,19 @@ static ivas_error ivas_mc_dec_reconfig(
        {
            tc_nchan_full_new = 0;
        }
#ifdef NONBE_FIX_808_JBM_PARAMUPMIX_RS
        else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX )
        {
            tc_nchan_allocate_new = MC_PARAMUPMIX_MAX_INPUT_CHANS;
            if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_MONO )
            {
                tc_buffer_mode_new = TC_BUFFER_MODE_BUFFER;
                tc_nchan_tc_new = st_ivas->hDecoderConfig->nchan_out;
                tc_nchan_allocate_new = tc_nchan_tc_new;
            }
            tc_nchan_full_new = tc_nchan_allocate_new;
        }
#endif

        /* reconfigure buffer */
        if ( hTcBuffer->tc_buffer_mode != tc_buffer_mode_new || hTcBuffer->nchan_transport_jbm != tc_nchan_tc_new ||