Commit d63fd068 authored by PLAINSI's avatar PLAINSI
Browse files

Change granularity of MIXER_CONV for PARAMUPMIX

parent d9deaa78
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -837,6 +837,10 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode(
/*! r: render granularity */
int16_t ivas_jbm_dec_get_render_granularity(
    const RENDERER_TYPE rendererType,                           /* i  : renderer type                                               */
#ifdef JBM_PARAMUPMIX
    const IVAS_FORMAT ivas_format,                              /* i  : ivas format                                                 */
    const MC_MODE mc_mode,                                      /* i  : MC mode                                                     */
#endif
   const int32_t output_Fs                                     /* i  : sampling rate                                               */
);

+11 −0
Original line number Diff line number Diff line
@@ -1332,7 +1332,18 @@ ivas_error ivas_init_decoder(

        if ( st_ivas->hDecoderConfig->voip_active )
        {
#ifdef JBM_PARAMUPMIX
            if ( ( st_ivas->ivas_format == MC_FORMAT ) && ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) )
            {
                granularity = NS2SA( output_Fs, CLDFB_SLOT_NS );
            }
            else
            {
                granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
            }
#else
            granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
#endif
            n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels( st_ivas );

            if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ) != IVAS_ERR_OK )
+4 −1
Original line number Diff line number Diff line
@@ -133,8 +133,11 @@ static ivas_error ivas_ism_bitrate_switching(

        /* JBM: when granularity goes down (e.g. Discrete ISM with TD Obj Renderer -> ParamISM with binaural fastconv
                render what still fits in the new granularity */
#ifdef JBM_PARAMUPMIX
        tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->hDecoderConfig->output_Fs );
#else
        tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->hDecoderConfig->output_Fs );

#endif
        if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity )
        {
            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, data ) ) != IVAS_ERR_OK )
+30 −1
Original line number Diff line number Diff line
@@ -1579,19 +1579,28 @@ static void ivas_jbm_dec_copy_tc(
 *
 *
 *--------------------------------------------------------------------------*/

#ifdef JBM_PARAMUPMIX
/*! r: render granularity */
int16_t ivas_jbm_dec_get_render_granularity(
    const RENDERER_TYPE rendererType, /* i  : renderer type     */
    const IVAS_FORMAT ivas_format,    /* i  : ivas format */
    const MC_MODE mc_mode,            /* i  : MC mode */
    const int32_t output_Fs           /* i  : sampling rate     */
)
{
    int16_t render_granularity;

    if ( rendererType == RENDERER_BINAURAL_OBJECTS_TD || rendererType == RENDERER_BINAURAL_MIXER_CONV || rendererType == RENDERER_BINAURAL_MIXER_CONV_ROOM )
    {
        if ( ( ivas_format == MC_FORMAT ) && ( mc_mode == MC_MODE_PARAMUPMIX ) )
        {
            render_granularity = NS2SA( output_Fs, CLDFB_SLOT_NS );
        }
        else
        {
            render_granularity = NS2SA( output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
        }
    }
    else
    {
        render_granularity = NS2SA( output_Fs, CLDFB_SLOT_NS );
@@ -1599,7 +1608,27 @@ int16_t ivas_jbm_dec_get_render_granularity(

    return render_granularity;
}
#else
/*! r: render granularity */
int16_t ivas_jbm_dec_get_render_granularity(
    const RENDERER_TYPE rendererType, /* i  : renderer type     */
    const int32_t output_Fs           /* i  : sampling rate     */
)
{
    int16_t render_granularity;

    if ( rendererType == RENDERER_BINAURAL_OBJECTS_TD || rendererType == RENDERER_BINAURAL_MIXER_CONV || rendererType == RENDERER_BINAURAL_MIXER_CONV_ROOM )
    {
        render_granularity = NS2SA( output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES );
    }
    else
    {
        render_granularity = NS2SA( output_Fs, CLDFB_SLOT_NS );
    }

    return render_granularity;
}
#endif

/*--------------------------------------------------------------------------*
 * ivas_jbm_dec_tc_buffer_open()
+5 −9
Original line number Diff line number Diff line
@@ -319,7 +319,7 @@ void ivas_mc_paramupmix_dec_digest_tc(

    if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM )
    {
        ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_SUBFRAMES_5MS, nCldfbSlots, hMCParamUpmix->param_interpolator );
        ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbSlots, hMCParamUpmix->param_interpolator );
    }
    else
    {
@@ -496,18 +496,14 @@ ivas_error ivas_mc_paramupmix_dec_open(
        {
            nchan_to_allocate = 2 * BINAURAL_CHANNELS;
        }
        if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM )
        {
            ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_SUBFRAMES_5MS, DEFAULT_JBM_SUBFRAMES_5MS, hMCParamUpmix->param_interpolator );
        }
        else
        if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM )
        {
            if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_tc, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK )
            {
                return error;
            }
            ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, DEFAULT_JBM_CLDFB_TIMESLOTS, hMCParamUpmix->param_interpolator );
        }
        ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, DEFAULT_JBM_CLDFB_TIMESLOTS, hMCParamUpmix->param_interpolator );
    }
#endif

Loading