Commit d42b78ac authored by Jouni Paulus's avatar Jouni Paulus
Browse files

zero hMasaIsmData ring buffer contents when entering ISM_MASA_MODE_PARAM_ONE_OBJ.

switch: NONBE_FIX_1197_OMASA_META_BUFFER
parent c6ae2d8d
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@

#define NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR            /* Nokia: Fix issue 1174 by removing the unnecessary inner loop causing problems. */
#define NONBE_FIX_1176_OSBA_REVERB_JBM_ASAN_ERROR       /* Ericsson: Issue 1176, fix in TDREND_firfilt for subframes shorter than the filter length */
#define NONBE_FIX_1197_OMASA_META_BUFFER                /* Nokia: OMASA ISM_MASA_MODE_PARAM_ONE_OBJ history zero in rateswitching */

/* ##################### End NON-BE switches ########################### */

+18 −0
Original line number Diff line number Diff line
@@ -424,6 +424,24 @@ ivas_error ivas_omasa_dec_config(
            ivas_omasa_separate_object_renderer_close( st_ivas );
        }

#ifdef NONBE_FIX_1197_OMASA_META_BUFFER
        if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && st_ivas->hMasaIsmData != NULL )  /* this structure is in use only in ISM_MASA_MODE_PARAM_ONE_OBJ */
        {
            MASA_ISM_DATA_HANDLE hMasaIsmData = st_ivas->hMasaIsmData;
            for ( int16_t obj_idx = 0; obj_idx < MAX_NUM_OBJECTS; obj_idx++ )
            {
                set_s( hMasaIsmData->azimuth_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR );
                set_s( hMasaIsmData->elevation_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR );
                for ( int16_t sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR; sf++ )
                {
                    set_zero( hMasaIsmData->energy_ratio_ism[obj_idx][sf], CLDFB_NO_CHANNELS_MAX );
                }
            }
            set_s( hMasaIsmData->azimuth_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR );
            set_s( hMasaIsmData->elevation_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR );
        }
#endif

        if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC )
        {
            if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC )
+9 −4
Original line number Diff line number Diff line
@@ -3193,15 +3193,20 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects(
#endif

            /* Limit target energies to non-negative values */
            for ( ch = 0; ch < 2; ch++ )
#ifdef NONBE_FIX_1197_OMASA_META_BUFFER
            if ( ratioAccOrig > 1.0f )
            {
                totalTargetEneCh[ch] = max( totalTargetEneCh[ch], 0.0f );
                /* due to rounding, the sum may exceed 1.0f ever so slightly, so clip it */
                ratioAccOrig = 1.0f;
            }

            /* Diffuse ratio accumulation based on gaining */
#endif
            if ( masaGainEdited )
            {
#ifdef NONBE_FIX_1197_OMASA_META_BUFFER
                ratioAccNew += gainMasaPow2 * ( 1.0f - ratioAccOrig );
#else
                ratioAccNew += gainMasaPow2 * ( 1 - ratioAccOrig );
#endif
            }
            else
            {