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

Merge branch...

Merge branch '1197-omasa-rateswitch-to-param_one_obj-uses-invalid-data-for-the-first-2sf' into 'main'

[NON-BE] Resolve #1197 "OMASA rateswitch to PARAM_ONE_OBJ uses invalid data for the first 2sf"

See merge request !1822
parents f18c648b 3498afb3
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 */

#define FIX_1139_REV_COLORATION_SHORT_T60               /* Nokia,FhG: Fix issue 1139, prevent sound coloration artefacts at very low reverberation times */

+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 )
+8 −6
Original line number Diff line number Diff line
@@ -3217,15 +3217,17 @@ void ivas_omasa_preProcessStereoTransportsForEditedObjects(
#endif

            /* Limit target energies to non-negative values */
            for ( ch = 0; ch < 2; ch++ )
            {
                totalTargetEneCh[ch] = max( totalTargetEneCh[ch], 0.0f );
            }

            /* Diffuse ratio accumulation based on gaining */
#ifdef NONBE_FIX_1197_OMASA_META_BUFFER
            /* due to rounding, the sum may exceed 1.0f ever so slightly, so clip it */
            ratioAccOrig = min( ratioAccOrig, 1.0f );
#endif
            if ( masaGainEdited )
            {
#ifdef NONBE_FIX_1197_OMASA_META_BUFFER
                ratioAccNew += gainMasaPow2 * ( 1.0f - ratioAccOrig );
#else
                ratioAccNew += gainMasaPow2 * ( 1 - ratioAccOrig );
#endif
            }
            else
            {