Commit 3104a7ff authored by Tapani Pihlajakuja's avatar Tapani Pihlajakuja
Browse files

Merge branch '850-masa-metadata-decoding-to-rendering-may-produce-negative-diffuseness' into 'main'

[non-BE] Resolve "MASA metadata decoding to rendering may produce negative diffuseness"

See merge request !1152
parents 4ee11f29 6968f5d9
Loading
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -180,6 +180,8 @@
#define NONBE_FIX_861_MASA_CRASH_STEREO_SWITCHING             /* VA: issue 861: fix MASA 2TC crash when switching from MDCT stereo to TD/DFT stereo */
#define BE_FIX_867_PARAMC_RECONFIG                            /* FhG: issue #867: fix ParamMC CLDFB buffer dealloc when reconfiguring */

#define NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING            /* Nokia: issue #850: Fixes rare non-valid diffuseness and energy ratio values in 2dir MASA. */

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

/* ################## End DEVELOPMENT switches ######################### */
+8 −0
Original line number Diff line number Diff line
@@ -1260,6 +1260,14 @@ void ivas_qmetadata_to_dirac(
                        hSpatParamRendCom->energy_ratio2[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block];
                        hSpatParamRendCom->diffuseness_vector[meta_write_index][b] -= q_direction->band_data[band].energy_ratio[block];

#ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING
                        /* Sanitize diffuseness for rare cases where floating point inaccuracy could result in negative diffuseness. */
                        if ( hSpatParamRendCom->diffuseness_vector[meta_write_index][b] < 0.0f )
                        {
                            hSpatParamRendCom->diffuseness_vector[meta_write_index][b] = 0.0f;
                        }

#endif
                        if ( q_direction->coherence_band_data != NULL )
                        {
                            hSpatParamRendCom->spreadCoherence2[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f;
+22 −0
Original line number Diff line number Diff line
@@ -1103,7 +1103,29 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512(
                }
            }
        }

#ifdef NONBE_FIX_850_MASA_HBR_META_RATIO_DECODING
        /* Scale energy ratios that sum to over one */
        for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ )
        {
            for ( m = 0; m < hQMetaData->q_direction[0].cfg.nblocks; m++ )
            {
                float ratioSum;

                ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m];

                if ( ratioSum > 1.0f )
                {
                    float ratioSumInv;
                    ratioSumInv = 1.0f / ratioSum;
                    hQMetaData->q_direction[0].band_data[b].energy_ratio[m] *= ratioSumInv;
                    hQMetaData->q_direction[1].band_data[b].energy_ratio[m] *= ratioSumInv;
                }
            }
        }
#endif
    }


#ifdef DEBUG_MODE_QMETADATA
    for ( d = 0; d < hQMetaData->no_directions; d++ )