Commit 02ead286 authored by Jan Kiene's avatar Jan Kiene
Browse files

back to storing delay in milliseconds, not subframe indexes

parent acabc815
Loading
Loading
Loading
Loading
Loading
+13 −28
Original line number Diff line number Diff line
@@ -1525,7 +1525,7 @@ static ivas_error alignInputDelay(
            {
                inputIsm = (input_ism *) inputBase;
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
                inputIsm->ism_metadata_delay_ms = (int16_t) roundf( inputIsm->ism_metadata_delay_ms + maxGlobalDelayNs / 1e6f / ( 1000.f / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );
                inputIsm->ism_metadata_delay_ms = (int16_t) roundf( inputIsm->ism_metadata_delay_ms + maxGlobalDelayNs / 1e6f );
#else
                inputIsm->ism_metadata_delay_ms = maxGlobalDelayNs / 1e6f;
#endif
@@ -5492,22 +5492,19 @@ static ivas_error renderIsmToBinaural(
{
    float tmpTDRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];
    ivas_error error;
#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    int16_t ism_md_subframe_update_ext;
#endif

    push_wmops( "renderIsmToBinaural" );
#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / (float) BINAURAL_RENDERING_FRAME_SIZE_MS );
#else
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / ( 1000.f / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );
#endif

    copyBufferTo2dArray( ismInput->base.inputBuffer, tmpTDRendBuffer );

#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, ismInput->hReverb, ismInput->ism_metadata_delay_ms,
#else
    if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, ismInput->hReverb, ism_md_subframe_update_ext,
#endif
                                                  *ismInput->base.ctx.pOutSampleRate, outAudio.config.numSamplesPerChannel, tmpTDRendBuffer ) ) != IVAS_ERR_OK )
    {
        return error;
@@ -5703,25 +5700,21 @@ static ivas_error renderIsmToBinauralReverb(
{
    float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];
    ivas_error error;
#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    int16_t ism_md_subframe_update_ext;
#endif

    push_wmops( "renderIsmToBinauralRoom" );

#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / (float) BINAURAL_RENDERING_FRAME_SIZE_MS );
#else
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / ( 1000.f / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );
#endif

    copyBufferTo2dArray( ismInput->base.inputBuffer, tmpRendBuffer );

    if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, ismInput->hReverb,
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
                                                  ismInput->ism_metadata_delay_ms, *ismInput->base.ctx.pOutSampleRate, outAudio.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK )
#else
                                                  ism_md_subframe_update_ext, *ismInput->base.ctx.pOutSampleRate, outAudio.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK )
#endif
    {
        return error;
    }
@@ -5888,20 +5881,20 @@ static ivas_error renderIsmToSplitBinaural(
    float tmpBinaural_CldfbIm[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
    int16_t output_frame = ismInput->base.inputBuffer.config.numSamplesPerChannel;
    COMBINED_ORIENTATION_HANDLE pCombinedOrientationData;
#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    int16_t ism_md_subframe_update_ext;
#endif

    push_wmops( "renderIsmToSplitBinaural" );

    pSplitRendWrapper = ismInput->base.ctx.pSplitRendWrapper;
    pMultiBinPoseData = &pSplitRendWrapper->multiBinPoseData;

#ifndef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / (float) BINAURAL_RENDERING_FRAME_SIZE_MS );
#else
    ism_md_subframe_update_ext = (int16_t) roundf( ismInput->ism_metadata_delay_ms / ( 1000.f / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );

#endif

    pCombinedOrientationData = *ismInput->base.ctx.pCombinedOrientationData;

    if ( pMultiBinPoseData->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB )
@@ -5951,11 +5944,7 @@ static ivas_error renderIsmToSplitBinaural(

        /* Render */
        if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &ismInput->tdRendWrapper : &ismInput->splitTdRendWrappers[pos_idx - 1], ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos,
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
                                                      NULL, ismInput->ism_metadata_delay_ms, *ismInput->base.ctx.pOutSampleRate, output_frame, tmpProcessing ) ) != IVAS_ERR_OK )
#else
                                                      NULL, ism_md_subframe_update_ext, *ismInput->base.ctx.pOutSampleRate, output_frame, tmpProcessing ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
@@ -7736,11 +7725,7 @@ ivas_error IVAS_REND_SetIsmMetadataDelay(

    for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i )
    {
#ifdef RENDERER_MD_SYNC_DELAY_TO_INTEGER
        hIvasRend->inputsIsm[i].ism_metadata_delay_ms = (int16_t) roundf( sync_md_delay / ( 1000.f / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) );
#else
        hIvasRend->inputsIsm[i].ism_metadata_delay_ms = sync_md_delay;
#endif
    }

    return IVAS_ERR_OK;