Commit a1cfc5e9 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

implment delay line for object audio channels as in OMASA

parent 028d8d3e
Loading
Loading
Loading
Loading
+11 −30
Original line number Diff line number Diff line
@@ -150,41 +150,23 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
    int16_t n;
    ivas_error error;

    ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, &output_f[2] );

    if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, output_f, *nSamplesRendered ) ) != IVAS_ERR_OK )
    /* Delay the object signals to match the CLDFB delay on the first ts, taken from OMASA path */
    if ( st_ivas->hSpatParamRendCom->slots_rendered == 0 )
    {
        return error;
    }
        int16_t tcBufferSize;

    for ( n = 0; n < BINAURAL_CHANNELS; n++ )
    {
        int16_t i;
        for ( i = 0; i < nSamplesAsked; i++ )
        {
            output_f[n][i] = 0.5f * output_f[2 + n][i] + 0.5f * output_f[n][i];
        }
    }
        tcBufferSize = st_ivas->hSpatParamRendCom->num_slots * st_ivas->hSpatParamRendCom->slot_size;

#if 0
    if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV )
    {
        if ( ( error = ivas_sba_upmixer_renderer( st_ivas, &output_f[channel_offset], nSamplesAsked ) ) != IVAS_ERR_OK )
        for ( n = 0; n < st_ivas->nchan_ism; n++ )
        {
            return error;
            float *tc_local_n = st_ivas->hTcBuffer->tc[n];
            delay_signal( tc_local_n, tcBufferSize, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size );
        }
    }
    else
    {
        ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, &output_f[channel_offset], st_ivas->nchan_transport
#ifdef API_5MS
                                 ,
                                 MAX_PARAM_SPATIAL_SUBFRAMES
#endif
        );
    }

    if ( ( error = ivas_td_binaural_renderer( st_ivas, p_sepobj, nSamplesAsked ) ) != IVAS_ERR_OK )
    ivas_sba_dec_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, &output_f[2] );

    if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, output_f, *nSamplesRendered ) ) != IVAS_ERR_OK )
    {
        return error;
    }
@@ -194,10 +176,9 @@ ivas_error ivas_osba_dirac_td_binaural_jbm(
        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];
        }
    }
#endif

    return IVAS_ERR_OK;
}
+9 −8
Original line number Diff line number Diff line
@@ -1529,7 +1529,8 @@ 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" );
            }
        }