From 44e0af3b81d3e8f57f0018fc7d77120148ce9583 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Wed, 28 May 2025 15:58:06 +0300 Subject: [PATCH 1/3] Port MR1418 to main-pc --- lib_com/ivas_cnst.h | 4 ++++ lib_com/options.h | 1 + lib_enc/ivas_masa_enc_fx.c | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 24d396d2a..4d94cdbe6 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1286,7 +1286,11 @@ enum #define MASA_RATIO_TOLERANCE 0.1f #define MASA_RATIO_THRESHOLD 0.1f #define MASA_ANGLE_TOLERANCE 0.5f +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS +#define MASA_RATIO_THRESHOLD_FX 322122547 // 0.15 in Q31 +#else #define MASA_RATIO_THRESHOLD_FX 214748365 // 0.1 in Q31 +#endif #define MASA_RATIO_TOLERANCE_FX 107374182 // 0.1 in Q30 #define MASA_ANGLE_TOLERANCE_FX ONE_IN_Q21 // 0.5 in Q22 #define MASA_LIMIT_NO_BANDS_SUR_COH 8 diff --git a/lib_com/options.h b/lib_com/options.h index 73a8f082f..fc5a6ab3c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -135,6 +135,7 @@ #define FIX_1003_PARAMISM_BINAURAL_RECONFIG_USAN /* FhG: fix for #1003: fix USAN caused by ParamISM reconfig */ #define FIX_1001_ARI_HM_OVERFLOW /* FhG: (no changes needed in BASOP) fix for undef behaviour in in the harmonic TCX model arithmetic coder */ #define NONBE_FIX_1005_MC_RS_TCBUFFER_UPDATE /* FhG: issue #1005: fix TC Buffer update at a MC rate switch */ +#define NONBE_FIX_1034_DRY_MASA_RATIOS /* Nokia: Fix issue 1034, use of wrong numDir state. */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 9d0579d12..6d53d1d09 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -1857,6 +1857,9 @@ void ivas_masa_combine_directions_fx( hMeta->directional_meta[1].energy_ratio_fx[j][i] = 0; // Q30 move16(); move16(); +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS + hMeta->common_meta.diffuse_to_total_ratio_fx[j][i] = L_sub( ONE_IN_Q30, hMeta->directional_meta[0].energy_ratio_fx[j][i] ); // Q30 +#endif IF( computeCoherence ) { @@ -2104,6 +2107,10 @@ static void detect_metadata_composition_fx( { FOR( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) { +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS + hMeta->directional_meta[0].spherical_index[sf][band] = hMeta->directional_meta[1].spherical_index[sf][band]; + move16(); +#endif hMeta->directional_meta[0].azimuth_fx[sf][band] = hMeta->directional_meta[1].azimuth_fx[sf][band]; /*q22*/ hMeta->directional_meta[0].elevation_fx[sf][band] = hMeta->directional_meta[1].elevation_fx[sf][band]; /*q22*/ hMeta->directional_meta[0].energy_ratio_fx[sf][band] = hMeta->directional_meta[1].energy_ratio_fx[sf][band]; /*q30*/ @@ -2228,7 +2235,12 @@ static void compensate_energy_ratios_fx( UWord8 numDirs; hMeta = &( hMasa->masaMetadata ); +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS + numDirs = hMasa->config.numberOfDirections; + move16(); +#else numDirs = (UWord8) add( hMeta->descriptive_meta.numberOfDirections, 1 ); +#endif FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { @@ -3137,10 +3149,20 @@ static void copy_masa_metadata_subframe_fx( ) { UWord8 dir; +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS + UWord8 band; +#endif /* directional metadata */ FOR( dir = 0; dir < MASA_MAXIMUM_DIRECTIONS; dir++ ) { +#ifdef NONBE_FIX_1034_DRY_MASA_RATIOS + FOR ( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) + { + hMetaTo->directional_meta[dir].spherical_index[sfTo][band] = hMetaFrom->directional_meta[dir].spherical_index[sfFrom][band]; + move16(); + } +#endif Copy32( hMetaFrom->directional_meta[dir].azimuth_fx[sfFrom], hMetaTo->directional_meta[dir].azimuth_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q22 Copy32( hMetaFrom->directional_meta[dir].elevation_fx[sfFrom], hMetaTo->directional_meta[dir].elevation_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q22 Copy32( hMetaFrom->directional_meta[dir].energy_ratio_fx[sfFrom], hMetaTo->directional_meta[dir].energy_ratio_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q30 -- GitLab From bf7e97febbdd0869579278b1bdaac8e795bb24d0 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Fri, 4 Jul 2025 11:15:04 +0300 Subject: [PATCH 2/3] Clang format --- lib_enc/ivas_masa_enc_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index 6d53d1d09..57fc30e78 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -3157,7 +3157,7 @@ static void copy_masa_metadata_subframe_fx( FOR( dir = 0; dir < MASA_MAXIMUM_DIRECTIONS; dir++ ) { #ifdef NONBE_FIX_1034_DRY_MASA_RATIOS - FOR ( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) + FOR( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) { hMetaTo->directional_meta[dir].spherical_index[sfTo][band] = hMetaFrom->directional_meta[dir].spherical_index[sfFrom][band]; move16(); -- GitLab From dcf8b5fc7add37482d0c6b2382be8a92503ef118 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Fri, 4 Jul 2025 11:34:08 +0300 Subject: [PATCH 3/3] Fix wrong conversion based on code review. --- lib_com/ivas_cnst.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 4d94cdbe6..6e17c7046 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -1287,7 +1287,7 @@ enum #define MASA_RATIO_THRESHOLD 0.1f #define MASA_ANGLE_TOLERANCE 0.5f #ifdef NONBE_FIX_1034_DRY_MASA_RATIOS -#define MASA_RATIO_THRESHOLD_FX 322122547 // 0.15 in Q31 +#define MASA_RATIO_THRESHOLD_FX 32212255 // 0.015 in Q31 #else #define MASA_RATIO_THRESHOLD_FX 214748365 // 0.1 in Q31 #endif -- GitLab