Commit 8a1e7a57 authored by vaclav's avatar vaclav
Browse files

Merge branch '380-wrong-metadata-recovery-in-paramism-bfi' into 'main'

Resolve "Wrong metadata recovery in ParamISM BFI"

See merge request !506
parents 9f427999 8c11aaaf
Loading
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -158,6 +158,9 @@
#define OTR_REFERENCE_VECTOR_TRACKING                   /* FhG: enables the reference position orientation tracking mode */
#endif

#define FIX_380_BFI_PARAMISM                            /* VA: issue 380 - fix metadata recovery in ParamISM BFI */


/* ################## End DEVELOPMENT switches ######################### */
/* clang-format on */
#endif
+19 −1
Original line number Diff line number Diff line
@@ -488,12 +488,26 @@ ivas_error ivas_ism_metadata_dec(
    }
    else /* BFI */
    {
#ifdef FIX_380_BFI_PARAMISM
        /* "num_obj", "hIsmMeta->azimuth" and "hIsmMeta->elevation" are recycled from the last frame */
        if ( ism_mode == ISM_MODE_PARAM )
        {
            num_obj = hParamIsm->num_obj;
        }
        else if ( ism_mode == ISM_MODE_DISC )
        {
            num_obj = *nchan_transport;
        }

        for ( ch = 0; ch < num_obj; ch++ )
#else
        /* "*nISms", "hIsmMeta->azimuth" and "hIsmMeta->elevation" are recycled from the last frame */
        for ( ch = 0; ch < *nchan_transport; ch++ )
        {
            hIsmMeta[ch]->ism_metadata_flag = hIsmMeta[ch]->last_ism_metadata_flag;
        }
        for ( ; ch < num_obj; ch++ )
#endif
        {
            hIsmMeta[ch]->last_ism_metadata_flag = hIsmMeta[ch]->ism_metadata_flag;
        }
@@ -504,12 +518,17 @@ ivas_error ivas_ism_metadata_dec(
        {
            for ( ch = 0; ch < num_obj; ch++ )
            {
#ifdef FIX_380_BFI_PARAMISM
                hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch];
                hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch];
#else
                hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch];
                /*hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] % hParamIsm->az_alpha[ch];*/
                hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch];
                hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch];
                /*hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] % hParamIsm->ele_alpha;*/
                hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch];
#endif
#ifdef TD5
                hIsmMeta[ch]->angle[0].last_azimuth_idx = hParamIsm->azi_index[ch];
                hIsmMeta[ch]->angle[0].last_elevation_idx = hParamIsm->ele_index[ch];
@@ -558,7 +577,6 @@ ivas_error ivas_ism_metadata_dec(
    {
        for ( ch = 0; ch < *nchan_transport; ch++ )
        {

            hSCE[ch]->element_brate = hSCE[ch]->last_element_brate;
            hSCE[ch]->hCoreCoder[0]->total_brate = hSCE[ch]->hCoreCoder[0]->last_total_brate;
        }