Commit 6718d738 authored by Sumeyra Demir Kanik's avatar Sumeyra Demir Kanik
Browse files

Delay ísm metadata only for decoder/renderer, not for Ivas_rend

parent 96bf30fb
Loading
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -75,12 +75,21 @@ ivas_error ivas_td_binaural_renderer(
    const int16_t output_frame /* i  : output frame length               */
)
{
#ifdef FIX_356_ISM_METADATA_SYNC
    int16_t ism_md_subframe_update = 2;
    return ivas_td_binaural_renderer_unwrap(
        st_ivas->hReverb,
        st_ivas->transport_config,
        st_ivas->hBinRendererTd, st_ivas->nchan_transport, LFE_CHANNEL, st_ivas->ivas_format,
        st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_Headrotation, (st_ivas->hHeadTrackData != NULL) ? st_ivas->hHeadTrackData->Quaternions : NULL,
        (st_ivas->hHeadTrackData != NULL) ? st_ivas->hHeadTrackData->Pos : NULL, ism_md_subframe_update, output, output_frame);
#else    return ivas_td_binaural_renderer_unwrap(
        st_ivas->hReverb,
        st_ivas->transport_config,
        st_ivas->hBinRendererTd, st_ivas->nchan_transport, LFE_CHANNEL, st_ivas->ivas_format,
        st_ivas->hIsmMetaData, st_ivas->hDecoderConfig->Opt_Headrotation, ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Quaternions : NULL,
        ( st_ivas->hHeadTrackData != NULL ) ? st_ivas->hHeadTrackData->Pos : NULL, output, output_frame );
#endif
}

#ifdef JBM_TSM_ON_TCS
@@ -103,7 +112,7 @@ void ObjRenderIVASSubframe(
    float *tc_local[MAX_TRANSPORT_CHANNELS];
    int16_t ch, slot_size, slots_to_render, output_frame;
#ifdef FIX_356_ISM_METADATA_SYNC
    int16_t subframe_update = 0;
    int16_t subframe_update = 0;   /* Number of subframes to delay metadata to sync with audio */
#endif
    for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
    {
+23 −7
Original line number Diff line number Diff line
@@ -265,6 +265,9 @@ ivas_error ivas_td_binaural_renderer_unwrap(
    const int16_t Opt_Headrotation,                    /* i  : Head rotation flag                   */
    const IVAS_QUATERNION *Quaternions,                /* i  : Head tracking data per subframe      */
    const IVAS_VECTOR3 *Pos,                           /* i  : Listener position data per subframe  */
#ifdef FIX_356_ISM_METADATA_SYNC
    const int16_t ism_md_subframe_update, /* i: Number of subframes to delay ism metadata to sync with audio */
#endif
#ifdef JBM_TSM_ON_TCS
    float *output[], /* i/o: SCE channels / Binaural synthesis */
#else
@@ -290,8 +293,7 @@ ivas_error ivas_td_binaural_renderer_unwrap(
    subframe_length = output_frame / MAX_PARAM_SPATIAL_SUBFRAMES;

#ifdef FIX_356_ISM_METADATA_SYNC
    int16_t c_indx, nS, subframe_update;
    subframe_update = 0;
    int16_t c_indx, nS;
    c_indx = 0;

    for ( nS = 0; nS < num_src; nS++ )
@@ -311,7 +313,7 @@ ivas_error ivas_td_binaural_renderer_unwrap(
    for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ )
    {
#ifdef FIX_356_ISM_METADATA_SYNC
        if ( subframe_idx == subframe_update )
        if ( subframe_idx == ism_md_subframe_update )
        {
            /* Update object position(s) */
            TDREND_Update_object_positions( hBinRendererTd, num_src, ivas_format, hIsmMetaData );
@@ -334,7 +336,7 @@ ivas_error ivas_td_binaural_renderer_unwrap(

        /* Render subframe */
#ifdef FIX_356_ISM_METADATA_SYNC
        if ( ( error = TDREND_GetMix( hBinRendererTd, output, subframe_length, subframe_idx, subframe_update ) ) != IVAS_ERR_OK )
        if ( ( error = TDREND_GetMix( hBinRendererTd, output, subframe_length, subframe_idx, ism_md_subframe_update ) ) != IVAS_ERR_OK )
#else
        if ( ( error = TDREND_GetMix( hBinRendererTd, output, subframe_length, subframe_idx ) ) != IVAS_ERR_OK )
#endif
@@ -372,7 +374,7 @@ ivas_error TDREND_GetMix(
    const int16_t subframe_idx     /* i  : Subframe index to 5 ms subframe           */
#ifdef FIX_356_ISM_METADATA_SYNC
    ,
    const int16_t subframe_update
    const int16_t ism_md_subframe_update /* Number of subframes to delay ism metadata to sync with audio */
#endif
)
{
@@ -390,7 +392,7 @@ ivas_error TDREND_GetMix(
#endif
#ifdef FIX_356_ISM_METADATA_SYNC
    int16_t subframe_update_flag;
    subframe_update_flag = subframe_idx == subframe_update;
    subframe_update_flag = subframe_idx == ism_md_subframe_update;
#endif
    error = IVAS_ERR_OK;

@@ -700,6 +702,9 @@ ivas_error ivas_td_binaural_renderer_ext(
    IVAS_REND_AudioConfigType inConfigType;
    AUDIO_CONFIG transport_config;
    ivas_error error;
#ifdef FIX_356_ISM_METADATA_SYNC
    int16_t ism_md_subframe_update = 0;
#endif
#ifdef JBM_TSM_ON_TCS
    float *p_output[MAX_OUTPUT_CHANNELS];
    int16_t ch;
@@ -750,14 +755,25 @@ ivas_error ivas_td_binaural_renderer_ext(
    }

#ifdef JBM_TSM_ON_TCS
#ifdef FIX_356_ISM_METADATA_SYNC
    if( ( error = ivas_td_binaural_renderer_unwrap( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, headRotData->headRotEnabled,
                                                   ( headRotData != NULL ) ? headRotData->headPositions : NULL,
                                                   ( headRotData != NULL ) ? headRotData->Pos : NULL, ism_md_subframe_update, p_output, output_frame ) ) != IVAS_ERR_OK )
#else
    if ( ( error = ivas_td_binaural_renderer_unwrap( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, headRotData->headRotEnabled,
                                                     ( headRotData != NULL ) ? headRotData->headPositions : NULL,
                                                     ( headRotData != NULL ) ? headRotData->Pos : NULL, p_output, output_frame ) ) != IVAS_ERR_OK )
#endif
#else
#ifdef FIX_356_ISM_METADATA_SYNC
    if ( ( error = ivas_td_binaural_renderer_unwrap( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, headRotData->headRotEnabled,
                                                     ( headRotData != NULL ) ? headRotData->headPositions : NULL,
                                                     ( headRotData != NULL ) ? headRotData->Pos : NULL, ism_md_subframe_update, output, output_frame ) ) != IVAS_ERR_OK )
#else
    if ( ( error = ivas_td_binaural_renderer_unwrap( hReverb, transport_config, pTDRend->hBinRendererTd, num_src, lfe_idx, ivas_format, hIsmMetaData, headRotData->headRotEnabled,
                                                     ( headRotData != NULL ) ? headRotData->headPositions : NULL,
                                                     ( headRotData != NULL ) ? headRotData->Pos : NULL, output, output_frame ) ) != IVAS_ERR_OK )

#endif
#endif
    {
        return error;
+3 −0
Original line number Diff line number Diff line
@@ -246,6 +246,9 @@ ivas_error ivas_td_binaural_renderer_unwrap(
    const int16_t Opt_Headrotation,                             /* i  : Head rotation flag                      */
    const IVAS_QUATERNION *Quaternions,                         /* i  : Head tracking data per subframe         */
    const IVAS_VECTOR3 *Pos,                                    /* i  : Listener position data per subframe     */
#ifdef FIX_356_ISM_METADATA_SYNC
    const int16_t ism_md_subframe_update,
#endif
#ifdef JBM_TSM_ON_TCS
    float *output[], /* i/o: SCE channels / Binaural synthesis */
#else