Loading lib_com/ivas_prot.h +5 −1 Original line number Diff line number Diff line Loading @@ -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 */ ); Loading lib_dec/ivas_init_dec.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 ) Loading lib_dec/ivas_ism_dec.c +4 −1 Original line number Diff line number Diff line Loading @@ -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 ) Loading lib_dec/ivas_jbm_dec.c +30 −1 Original line number Diff line number Diff line Loading @@ -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 ); Loading @@ -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() Loading lib_dec/ivas_mc_paramupmix_dec.c +5 −9 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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 Loading
lib_com/ivas_prot.h +5 −1 Original line number Diff line number Diff line Loading @@ -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 */ ); Loading
lib_dec/ivas_init_dec.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 ) Loading
lib_dec/ivas_ism_dec.c +4 −1 Original line number Diff line number Diff line Loading @@ -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 ) Loading
lib_dec/ivas_jbm_dec.c +30 −1 Original line number Diff line number Diff line Loading @@ -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 ); Loading @@ -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() Loading
lib_dec/ivas_mc_paramupmix_dec.c +5 −9 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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