Commit 5ff4dd38 authored by bayers's avatar bayers
Browse files

fix #904. make sure subframe information is handled correctly in (O)SBA rate switching in JBM

parent 91d82fac
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@
#define NONBE_FIX_897_USAN_WITH_MASA_RENDERING                /* Nokia: issue #897: USAN null pointer in MASA external renderer to Ambisonics */
#define NONBE_FIX_903_OSBA_TO_STEREO                          /* VA: issue 903: fix OSBA to stereo rendering issue */
#define NONBE_FIX_811_DFT_DOUBLE_TO_FLOAT                     /* FhG: issue 811: change double precision functions to float in DFT Stereo */

#define NONBE_FIX_904_JBM_SBA_RS_FOA                          /* FhG: issue #904: fix JBM SBA RS to FOA decoding */
/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+3 −0
Original line number Diff line number Diff line
@@ -876,6 +876,9 @@ void ivas_jbm_dec_feed_tc_to_renderer(
        }
        else
        {
#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA
            ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas );
#endif
            ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available );
        }
    }
+24 −0
Original line number Diff line number Diff line
@@ -253,6 +253,14 @@ ivas_error ivas_sba_dec_reconfigure(
            {
                return error;
            }
#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA
            /* make sure the changed number of slots in the last subframe is not lost in the following steps */
            if ( st_ivas->hSpatParamRendCom != NULL )
            {
                st_ivas->hSpatParamRendCom->subframe_nbslots[st_ivas->hSpatParamRendCom->nb_subframes - 1] = st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->nb_subframes - 1];
            }
            st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->nb_subframes - 1] = st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->nb_subframes - 1];
#endif
        }
    }

@@ -651,6 +659,18 @@ ivas_error ivas_sba_dec_reconfigure(
    }

    /* resync SPAR and DirAC JBM info from TC Buffer */
#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA
    if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity )
    {
        mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
        st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes;
        st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered;
    }
    mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpar->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS );
    st_ivas->hSpar->nb_subframes = st_ivas->hTcBuffer->nb_subframes;
    st_ivas->hSpar->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered;

#else
    if ( st_ivas->hSpatParamRendCom != NULL )
    {
        if ( st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity )
@@ -664,6 +684,7 @@ ivas_error ivas_sba_dec_reconfigure(
            st_ivas->hSpar->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered;
        }
    }
#endif

    if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV && st_ivas->ism_mode == ISM_SBA_MODE_DISC )
    {
@@ -672,6 +693,9 @@ ivas_error ivas_sba_dec_reconfigure(
        for ( n = 0; n < MAX_JBM_SUBFRAMES_5MS; n++ )
        {
            st_ivas->hSpatParamRendCom->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier;
#ifdef NONBE_FIX_904_JBM_SBA_RS_FOA
            st_ivas->hSpar->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier;
#endif
        }
    }