Commit 81f4a149 authored by bayers's avatar bayers
Browse files

temp fix for OSBA RS, fix for unified channel mem and OSBA

parent 2d1374ed
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 ########################### */
+27 −2
Original line number Diff line number Diff line
@@ -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
@@ -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
+35 −1
Original line number Diff line number Diff line
@@ -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 )
    {
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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 );