Commit 30936203 authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '675-fix-omasa-wb-input' into 'main'

Fix for wb omasa

See merge request !927
parents b36db2a0 789be1de
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@
#define PARAMUPMIX_BINAURAL_UPDATES                     /* Dlb : issue 652, MC ParamUpmix Binaural Updates */
#define FIX_657_REMOVE_EDITING                          /* Nokia: Remove remaining unused coded related to object editing */
#define FIX_634_MASA_JBM_UNUSED_PARAMETER               /* Nokia: Fix issue 634 by removing the unnecessary argument. */

#define FIX_675_WB_OMASA                                /* Nokia: Fix for issue 675 solving the crash in OMASA for WB input */

/* ################## End BE DEVELOPMENT switches ######################### */

+46 −3
Original line number Diff line number Diff line
@@ -3527,15 +3527,23 @@ static void ivas_encode_masaism_metadata(
    int16_t tmp, rotate;
    int16_t n_ism_tmp, i;
    OMASA_ENCODER_DATA_HANDLE hOmasaData = hMasa->data.hOmasaData;
#ifdef FIX_675_WB_OMASA
    int16_t nbands_work;
#endif

    /* use the values from hQMetaData */
    numCodingBands = (uint8_t) hQMetaData->q_direction->cfg.nbands;
    numSf = (int8_t) hQMetaData->q_direction->cfg.nblocks;

#ifdef FIX_675_WB_OMASA
    nbands_work = min( numCodingBands, omasa_nbands );
    if ( numCodingBands == 1 )
#else
    if ( numCodingBands != omasa_nbands )
#endif
    {
#ifndef FIX_675_WB_OMASA
        assert( numCodingBands == 1 );

#endif
        for ( sf = 0; sf < numSf; sf++ )
        {
            if ( sum_f( hOmasaData->energy_ism[sf], omasa_nbands ) == 0.0f )
@@ -3575,11 +3583,20 @@ static void ivas_encode_masaism_metadata(
            }
        }
    }
#ifdef FIX_675_WB_OMASA
    else if ( numSf == 1 )
#else
    else if ( numSf != omasa_nblocks )
#endif
    {
#ifndef FIX_675_WB_OMASA
        assert( numSf == 1 );

#endif
#ifdef FIX_675_WB_OMASA
        for ( band = 0; band < nbands_work; band++ )
#else
        for ( band = 0; band < numCodingBands; band++ )
#endif
        {
            energy_ism = 0.0f; /* ISM energy for current subband */
            for ( obj = 0; obj < nchan_ism; obj++ )
@@ -3619,12 +3636,27 @@ static void ivas_encode_masaism_metadata(
                hQMetaData->masa_to_total_energy_ratio[0][band] = eneBand / ( eneBand + energy_ism + EPSILON );
            }
        }
#ifdef FIX_675_WB_OMASA
        for ( band = nbands_work; band < numCodingBands; band++ )
        {
            hQMetaData->masa_to_total_energy_ratio[0][band] = 1.0f;

            for ( obj = 0; obj < nchan_ism; obj++ )
            {
                hOmasaData->energy_ratio_ism[0][band][obj] = hOmasaData->energy_ratio_ism[0][nbands_work - 1][obj];
            }
        }
#endif
    }
    else
    {
        for ( sf = 0; sf < numSf; sf++ )
        {
#ifdef FIX_675_WB_OMASA
            for ( band = 0; band < nbands_work; band++ )
#else
            for ( band = 0; band < numCodingBands; band++ )
#endif
            {
                if ( hOmasaData->energy_ism[sf][band] == 0.0f )
                {
@@ -3643,6 +3675,17 @@ static void ivas_encode_masaism_metadata(
                    hQMetaData->masa_to_total_energy_ratio[sf][band] = eneBand / ( eneBand + hOmasaData->energy_ism[sf][band] + EPSILON );
                }
            }
#ifdef FIX_675_WB_OMASA
            for ( band = nbands_work; band < numCodingBands; band++ )
            {
                hQMetaData->masa_to_total_energy_ratio[sf][band] = 1.0f;

                for ( obj = 0; obj < nchan_ism; obj++ )
                {
                    hOmasaData->energy_ratio_ism[sf][band][obj] = hOmasaData->energy_ratio_ism[sf][nbands_work - 1][obj];
                }
            }
#endif
        }
    }