diff --git a/lib_com/options.h b/lib_com/options.h index 6e0f807b0e6a64de75ec1272986c3cadd4ffe226..c237d7b25a78f6df88c5ba7e951f147fa267800d 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -171,6 +171,7 @@ #define REMOVE_UNUSED_CODE_IVAS_DEC /* VA: remove unused code in ivas_jbm_dec_tc_fx() */ #define REMOVE_CAM_FROM_IVAS /* VA: basop issue 210: remove obsoelte CAM code from IVAS */ #define FIX_2344_ALIGN_PREPROC /* VA: basop issue 2344: Align pre_proc_ivas() between FLP and BASOP */ +#define FIX_FLOAT_1501_UNIT_VALUE_IN_OMASA /* Nokia: Fix float issue 1501, uninitialized value in ivas_masa_combine_directions for OMASA */ /* #################### End BE switches ################################## */ diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index 1355480fd93ce16f1c5a0c797cbf0a32019536db..5efcea91f7028ff4974f14440a55b1fc79b410ab 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -1232,22 +1232,29 @@ void ivas_masa_combine_directions( } } - /* Estimate the importance of having two directions instead of one */ - for ( i = 0; i < numCodingBands; i++ ) +#ifdef FIX_FLOAT_1501_UNIT_VALUE_IN_OMASA + if ( hMasa->config.numTwoDirBands > 0 ) { - importance[i] = 0.0f; - for ( j = 0; j < numSf; j++ ) +#endif + /* Estimate the importance of having two directions instead of one */ + for ( i = 0; i < numCodingBands; i++ ) { - tempImportance = hMeta->directional_meta[0].energy_ratio[j][i] + hMeta->directional_meta[1].energy_ratio[j][i] - sumVecLen[j][i]; - importance[i] += tempImportance; + importance[i] = 0.0f; + for ( j = 0; j < numSf; j++ ) + { + tempImportance = hMeta->directional_meta[0].energy_ratio[j][i] + hMeta->directional_meta[1].energy_ratio[j][i] - sumVecLen[j][i]; + importance[i] += tempImportance; + } + importance[i] /= (float) numSf; + importance[i] *= hMasa->data.importanceWeight[i]; } - importance[i] /= (float) numSf; - importance[i] *= hMasa->data.importanceWeight[i]; - } - /* Determine bands where to use two directions */ - find_n_largest( importance, indicesOfLargest, numCodingBands, hMasa->config.numTwoDirBands ); + /* Determine bands where to use two directions */ + find_n_largest( importance, indicesOfLargest, numCodingBands, hMasa->config.numTwoDirBands ); +#ifdef FIX_FLOAT_1501_UNIT_VALUE_IN_OMASA + } +#endif for ( i = 0; i < numCodingBands; i++ ) { hMasa->data.twoDirBands[i] = 0;