Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ #ifdef NONBE_UNIFIED_DECODING_PATHS #define REMOVE_5MS_FLAG /*#define UNIFY_CHANNEL_MEM_HEAP*/ #define FIX_XXX_SBA_RS #endif /* ##################### End NON-BE switches ########################### */ Loading lib_dec/ivas_jbm_dec.c +27 −2 Original line number Diff line number Diff line Loading @@ -1275,13 +1275,29 @@ ivas_error ivas_jbm_dec_render( } else if ( st_ivas->renderer_type == RENDERER_OSBA_STEREO ) { #ifdef UNIFY_CHANNEL_MEM_HEAP float output_stereo[CPE_CHANNELS][L_FRAME48k]; float *p_output_stereo[CPE_CHANNELS]; for ( n = 0; n < CPE_CHANNELS; n++ ) { p_output_stereo[n] = output_stereo[n]; } #endif *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); /* render objects */ #ifdef UNIFY_CHANNEL_MEM_HEAP ivas_ism_render_sf( st_ivas, p_output_stereo, *nSamplesRendered ); #else ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered ); #endif /* add already rendererd SBA part */ for ( n = 0; n < nchan_out; n++ ) { #ifdef UNIFY_CHANNEL_MEM_HEAP v_add( p_output_stereo[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); #else v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); #endif } } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS Loading @@ -1297,15 +1313,24 @@ ivas_error ivas_jbm_dec_render( { p_output_ism[n] = &output_ism[n][0]; } ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); #ifdef UNIFY_CHANNEL_MEM_HEAP #ifdef OSBA_ROOM_IR if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) #endif { ivas_ism_render_sf( st_ivas, p_output_ism, *nSamplesRendered ); } #endif ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); #ifndef UNIFY_CHANNEL_MEM_HEAP #ifdef OSBA_ROOM_IR if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) #endif { ivas_ism_render_sf( st_ivas, p_output_ism, *nSamplesRendered ); } #endif for ( n = 0; n < nchan_out; n++ ) { #ifdef OSBA_ROOM_IR Loading lib_dec/ivas_osba_dec.c +35 −1 Original line number Diff line number Diff line Loading @@ -135,9 +135,37 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( { int16_t n; ivas_error error; #ifdef UNIFY_CHANNEL_MEM_HEAP float data_separated_objects[MAX_NUM_OBJECTS][2 * L_FRAME48k]; float *p_save_tc[MAX_NUM_OBJECTS]; int16_t offsetSamples, slots_to_render; float *p_sepobj[MAX_NUM_OBJECTS]; for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) { p_sepobj[n] = &data_separated_objects[n][0]; } /* save objects */ offsetSamples = st_ivas->hSpatParamRendCom->slots_rendered * st_ivas->hSpatParamRendCom->slot_size; slots_to_render = min( st_ivas->hSpatParamRendCom->num_slots - st_ivas->hSpatParamRendCom->slots_rendered, nSamplesAsked / st_ivas->hSpatParamRendCom->slot_size ); *nSamplesRendered = slots_to_render * st_ivas->hSpatParamRendCom->slot_size; for ( n = 0; n < st_ivas->nchan_ism; n++ ) { mvr2r( &st_ivas->hTcBuffer->tc[n][offsetSamples], &data_separated_objects[n][offsetSamples], *nSamplesRendered ); } #endif ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, &output_f[2] ); #ifdef UNIFY_CHANNEL_MEM_HEAP /* temporary set the object tc pointers to the locally saved ones */ for ( n = 0; n < st_ivas->nchan_ism; n++ ) { p_save_tc[n] = st_ivas->hTcBuffer->tc[n]; st_ivas->hTcBuffer->tc[n] = p_sepobj[n]; } #endif #ifdef OSBA_SPLIT_RENDERING if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { Loading Loading @@ -196,7 +224,13 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( #ifdef OSBA_SPLIT_RENDERING } #endif #ifdef UNIFY_CHANNEL_MEM_HEAP /* bend saved tc pointers back */ for ( n = 0; n < st_ivas->nchan_ism; n++ ) { st_ivas->hTcBuffer->tc[2 + n] = p_save_tc[n]; } #endif return IVAS_ERR_OK; } #endif Loading lib_dec/ivas_sba_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -149,9 +149,17 @@ ivas_error ivas_sba_dec_reconfigure( * Save old SBA high-level parameters *-----------------------------------------------------------------*/ #ifdef UNIFY_CHANNEL_MEM_HEAP #ifdef FIX_XXX_SBA_RS nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old_flush, last_ivas_total_brate, st_ivas->hTcBuffer->nchan_buffer_full ); #else nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old, last_ivas_total_brate, st_ivas->hTcBuffer->nchan_buffer_full ); #endif #else #ifdef FIX_XXX_SBA_RS nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old_flush, last_ivas_total_brate ); #else nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old, last_ivas_total_brate ); #endif #endif ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,7 @@ #ifdef NONBE_UNIFIED_DECODING_PATHS #define REMOVE_5MS_FLAG /*#define UNIFY_CHANNEL_MEM_HEAP*/ #define FIX_XXX_SBA_RS #endif /* ##################### End NON-BE switches ########################### */ Loading
lib_dec/ivas_jbm_dec.c +27 −2 Original line number Diff line number Diff line Loading @@ -1275,13 +1275,29 @@ ivas_error ivas_jbm_dec_render( } else if ( st_ivas->renderer_type == RENDERER_OSBA_STEREO ) { #ifdef UNIFY_CHANNEL_MEM_HEAP float output_stereo[CPE_CHANNELS][L_FRAME48k]; float *p_output_stereo[CPE_CHANNELS]; for ( n = 0; n < CPE_CHANNELS; n++ ) { p_output_stereo[n] = output_stereo[n]; } #endif *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); /* render objects */ #ifdef UNIFY_CHANNEL_MEM_HEAP ivas_ism_render_sf( st_ivas, p_output_stereo, *nSamplesRendered ); #else ivas_ism_render_sf( st_ivas, p_output, *nSamplesRendered ); #endif /* add already rendererd SBA part */ for ( n = 0; n < nchan_out; n++ ) { #ifdef UNIFY_CHANNEL_MEM_HEAP v_add( p_output_stereo[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); #else v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); #endif } } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS Loading @@ -1297,15 +1313,24 @@ ivas_error ivas_jbm_dec_render( { p_output_ism[n] = &output_ism[n][0]; } ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); #ifdef UNIFY_CHANNEL_MEM_HEAP #ifdef OSBA_ROOM_IR if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) #endif { ivas_ism_render_sf( st_ivas, p_output_ism, *nSamplesRendered ); } #endif ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); #ifndef UNIFY_CHANNEL_MEM_HEAP #ifdef OSBA_ROOM_IR if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) #endif { ivas_ism_render_sf( st_ivas, p_output_ism, *nSamplesRendered ); } #endif for ( n = 0; n < nchan_out; n++ ) { #ifdef OSBA_ROOM_IR Loading
lib_dec/ivas_osba_dec.c +35 −1 Original line number Diff line number Diff line Loading @@ -135,9 +135,37 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( { int16_t n; ivas_error error; #ifdef UNIFY_CHANNEL_MEM_HEAP float data_separated_objects[MAX_NUM_OBJECTS][2 * L_FRAME48k]; float *p_save_tc[MAX_NUM_OBJECTS]; int16_t offsetSamples, slots_to_render; float *p_sepobj[MAX_NUM_OBJECTS]; for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) { p_sepobj[n] = &data_separated_objects[n][0]; } /* save objects */ offsetSamples = st_ivas->hSpatParamRendCom->slots_rendered * st_ivas->hSpatParamRendCom->slot_size; slots_to_render = min( st_ivas->hSpatParamRendCom->num_slots - st_ivas->hSpatParamRendCom->slots_rendered, nSamplesAsked / st_ivas->hSpatParamRendCom->slot_size ); *nSamplesRendered = slots_to_render * st_ivas->hSpatParamRendCom->slot_size; for ( n = 0; n < st_ivas->nchan_ism; n++ ) { mvr2r( &st_ivas->hTcBuffer->tc[n][offsetSamples], &data_separated_objects[n][offsetSamples], *nSamplesRendered ); } #endif ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, &output_f[2] ); #ifdef UNIFY_CHANNEL_MEM_HEAP /* temporary set the object tc pointers to the locally saved ones */ for ( n = 0; n < st_ivas->nchan_ism; n++ ) { p_save_tc[n] = st_ivas->hTcBuffer->tc[n]; st_ivas->hTcBuffer->tc[n] = p_sepobj[n]; } #endif #ifdef OSBA_SPLIT_RENDERING if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { Loading Loading @@ -196,7 +224,13 @@ ivas_error ivas_osba_dirac_td_binaural_jbm( #ifdef OSBA_SPLIT_RENDERING } #endif #ifdef UNIFY_CHANNEL_MEM_HEAP /* bend saved tc pointers back */ for ( n = 0; n < st_ivas->nchan_ism; n++ ) { st_ivas->hTcBuffer->tc[2 + n] = p_save_tc[n]; } #endif return IVAS_ERR_OK; } #endif Loading
lib_dec/ivas_sba_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -149,9 +149,17 @@ ivas_error ivas_sba_dec_reconfigure( * Save old SBA high-level parameters *-----------------------------------------------------------------*/ #ifdef UNIFY_CHANNEL_MEM_HEAP #ifdef FIX_XXX_SBA_RS nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old_flush, last_ivas_total_brate, st_ivas->hTcBuffer->nchan_buffer_full ); #else nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old, last_ivas_total_brate, st_ivas->hTcBuffer->nchan_buffer_full ); #endif #else #ifdef FIX_XXX_SBA_RS nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old_flush, last_ivas_total_brate ); #else nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas, sba_analysis_order_old, last_ivas_total_brate ); #endif #endif ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); Loading