Commit 028d8d3e authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

enable object rendering in OSBA JBM path

parent 35c124f9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -865,7 +865,7 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer(
    {
        if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC )
        {
            // ivas_ism_dec_digest_tc( st_ivas );
            ivas_ism_dec_digest_tc( st_ivas );
            ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
        }
        else
+9 −5
Original line number Diff line number Diff line
@@ -145,16 +145,20 @@ ivas_error ivas_td_binaural_renderer_sf(
    int16_t nchan_ism_internal, nchan_ism, ch_offset;

    /* Set the number of ISMs */
    if ( st_ivas->ivas_format == MASA_ISM_FORMAT
#ifdef JBM_FOR_OSBA
         || st_ivas->ivas_format == SBA_ISM_FORMAT
#endif
    )
    if ( st_ivas->ivas_format == MASA_ISM_FORMAT )
    {
        nchan_ism_internal = st_ivas->nchan_ism;
        nchan_ism = st_ivas->nchan_ism;
        ch_offset = 2;
    }
#ifdef JBM_FOR_OSBA
    if ( st_ivas->ivas_format == SBA_ISM_FORMAT )
    {
        nchan_ism_internal = st_ivas->nchan_ism;
        nchan_ism = st_ivas->nchan_ism;
        ch_offset = 0;
    }
#endif
    else
    {
        nchan_ism_internal = st_ivas->hTcBuffer->nchan_transport_internal;
+3 −28
Original line number Diff line number Diff line
@@ -148,46 +148,21 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
)
{
    int16_t n;
    float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k];

    ivas_error error;
    float *p_sepobj[MAX_NUM_OBJECTS];
    int16_t channel_offset;

    for ( n = 0; n < MAX_NUM_OBJECTS; n++ )
    {
        p_sepobj[n] = &data_separated_objects[n][0];
    }

    channel_offset = st_ivas->nchan_ism;


    for ( n = 0; n < st_ivas->nchan_ism; n++ )
    {
        mvr2r( output_f[n], data_separated_objects[n], nSamplesAsked );
    }

    {
        for ( n = 0; n < st_ivas->nchan_ism; n++ )
        {
            delay_signal( data_separated_objects[n], nSamplesAsked, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
        }
    }
    ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, &output_f[2] );

    ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, output_f );

    if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_sepobj, *nSamplesRendered ) ) != IVAS_ERR_OK )
    if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, output_f, *nSamplesRendered ) ) != IVAS_ERR_OK )
    {
        return error;
    }


    for ( n = 0; n < BINAURAL_CHANNELS; n++ )
    {
        int16_t i;
        for ( i = 0; i < nSamplesAsked; i++ )
        {
            output_f[n][i] = 0.5f * output_f[channel_offset + n][i] + 0.5f * p_sepobj[n][i];
            output_f[n][i] = 0.5f * output_f[2 + n][i] + 0.5f * output_f[n][i];
        }
    }

+26 −11
Original line number Diff line number Diff line
@@ -1497,10 +1497,26 @@ void ivas_spar_dec_upmixer_sf(
                                                            st_ivas->last_active_ivas_total_brate );
    slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS );
    slot_idx_start = hSpar->slots_rendered;
#ifdef JBM_FOR_OSBA
    if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC )
    {
        int16_t nchan_ism;

        nchan_ism = st_ivas->nchan_ism;

        for ( i = 0; i < nchan_internal; i++ )
        {
            p_tc[i] = st_ivas->hTcBuffer->tc[i + nchan_ism] + slot_idx_start * slot_size;
        }
    }
    else
#endif
    {
        for ( i = 0; i < nchan_internal; i++ )
        {
            p_tc[i] = st_ivas->hTcBuffer->tc[i] + slot_idx_start * slot_size;
        }
    }

#ifdef DEBUG_SPAR_BYPASS_EVS_CODEC
    /* by-pass core-coder */
@@ -1513,8 +1529,7 @@ void ivas_spar_dec_upmixer_sf(
            for ( i = 0; i < nchan_transport; i++ )
            {
                tmp = roundf( output[i][j] * PCM16_TO_FLT_FAC );
                pcm = ( tmp > MAX16B_FLT ) ? MAX16B : ( tmp < MIN16B_FLT ) ? MIN16B
                                                                           : (short) tmp;
                pcm = ( tmp > MAX16B_FLT ) ? MAX16B : ( tmp < MIN16B_FLT ) ? MIN16B : (short) tmp;
                dbgwrite( &pcm, sizeof( int16_t ), 1, 1, "dmx_dec.raw" );
            }
        }