Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,6 @@ /* #################### Start NON-BE switches ############################ */ /* any switch which is non-be wrt. TS 26.258 V3.0 */ #define FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Nokia: float issue 1493: Improves float decision stability in MASA encoding by adjusting reduction code */ #define FIX_BASOP_2436_REUSED_CLDFB_IN_OMASA_SR /* FhG: basop issue 2436 (related to basop 2283): fix garbage output for >1 object OMASA with extrend as ISAR prerenderer */ #define FIX_FLOAT_1528_5MS_REND_ISM_META_DELAY_COMPENSATION /* Nokia: float issue 1528: Fixes incorrect compensation for ISM metadata delay in 5ms TD rendering */ Loading lib_enc/ivas_masa_enc.c +0 −23 Original line number Diff line number Diff line Loading @@ -82,9 +82,7 @@ static void masa_metadata_direction_alignment( MASA_ENCODER_HANDLE hMasa ); #define LOWBITRATE_ONSET_BETA 0.92f #define LOWBITRATE_ONSET_GAIN 1.4f #define LOWBITRATE_NUM_BANDS 5 #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE #define IMPORTANCE_MIN_STEP 0.000244140625f /* 2^-12 to match BASOP */ #endif /*-----------------------------------------------------------------------* Loading Loading @@ -984,11 +982,7 @@ static void combine_freqbands_and_subframes( MASA_ENCODER_HANDLE hMasa ) { int16_t i, j, k, m; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE volatile float aziRad, eleRad; /* Using volatile to reduce numerically unstable optimization */ #else float aziRad, eleRad; #endif float x[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float y[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float z[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; Loading Loading @@ -1074,14 +1068,9 @@ static void combine_freqbands_and_subframes( energySum += hMasa->data.energy[j][m]; } #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum, xSum ); eleRad = (float) atan2( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); #else aziRad = atan2f( ySum, xSum ); eleRad = atan2f( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); #endif hMeta->directional_meta[i].azimuth[j][k] = aziRad / EVS_PI * 180.0f; hMeta->directional_meta[i].elevation[j][k] = eleRad / EVS_PI * 180.0f; Loading Loading @@ -1189,13 +1178,8 @@ void ivas_masa_combine_directions( uint8_t computeCoherence; MASA_METADATA_HANDLE hMeta; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE volatile float aziRad; /* Using volatile to reduce numerically unstable optimization */ volatile float eleRad; #else float aziRad; float eleRad; #endif float x[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float y[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float z[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; Loading Loading @@ -1265,13 +1249,11 @@ void ivas_masa_combine_directions( } importance[i] /= (float) numSf; importance[i] *= hMasa->data.importanceWeight[i]; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Setting close to zero values to zero to reduce decision differences */ if ( importance[i] < IMPORTANCE_MIN_STEP ) { importance[i] = 0.0f; } #endif } /* Determine bands where to use two directions */ Loading @@ -1295,14 +1277,9 @@ void ivas_masa_combine_directions( { for ( j = 0; j < numSf; j++ ) { #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum[j][i], xSum[j][i] ); eleRad = (float) atan2( zSum[j][i], sqrtf( xSum[j][i] * xSum[j][i] + ySum[j][i] * ySum[j][i] ) ); #else aziRad = atan2f( ySum[j][i], xSum[j][i] ); eleRad = atan2f( zSum[j][i], sqrtf( xSum[j][i] * xSum[j][i] + ySum[j][i] * ySum[j][i] ) ); #endif hMeta->directional_meta[0].azimuth[j][i] = aziRad / EVS_PI * 180.0f; hMeta->directional_meta[0].elevation[j][i] = eleRad / EVS_PI * 180.0f; Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -168,7 +168,6 @@ /* #################### Start NON-BE switches ############################ */ /* any switch which is non-be wrt. TS 26.258 V3.0 */ #define FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Nokia: float issue 1493: Improves float decision stability in MASA encoding by adjusting reduction code */ #define FIX_BASOP_2436_REUSED_CLDFB_IN_OMASA_SR /* FhG: basop issue 2436 (related to basop 2283): fix garbage output for >1 object OMASA with extrend as ISAR prerenderer */ #define FIX_FLOAT_1528_5MS_REND_ISM_META_DELAY_COMPENSATION /* Nokia: float issue 1528: Fixes incorrect compensation for ISM metadata delay in 5ms TD rendering */ Loading
lib_enc/ivas_masa_enc.c +0 −23 Original line number Diff line number Diff line Loading @@ -82,9 +82,7 @@ static void masa_metadata_direction_alignment( MASA_ENCODER_HANDLE hMasa ); #define LOWBITRATE_ONSET_BETA 0.92f #define LOWBITRATE_ONSET_GAIN 1.4f #define LOWBITRATE_NUM_BANDS 5 #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE #define IMPORTANCE_MIN_STEP 0.000244140625f /* 2^-12 to match BASOP */ #endif /*-----------------------------------------------------------------------* Loading Loading @@ -984,11 +982,7 @@ static void combine_freqbands_and_subframes( MASA_ENCODER_HANDLE hMasa ) { int16_t i, j, k, m; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE volatile float aziRad, eleRad; /* Using volatile to reduce numerically unstable optimization */ #else float aziRad, eleRad; #endif float x[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float y[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float z[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; Loading Loading @@ -1074,14 +1068,9 @@ static void combine_freqbands_and_subframes( energySum += hMasa->data.energy[j][m]; } #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum, xSum ); eleRad = (float) atan2( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); #else aziRad = atan2f( ySum, xSum ); eleRad = atan2f( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); #endif hMeta->directional_meta[i].azimuth[j][k] = aziRad / EVS_PI * 180.0f; hMeta->directional_meta[i].elevation[j][k] = eleRad / EVS_PI * 180.0f; Loading Loading @@ -1189,13 +1178,8 @@ void ivas_masa_combine_directions( uint8_t computeCoherence; MASA_METADATA_HANDLE hMeta; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE volatile float aziRad; /* Using volatile to reduce numerically unstable optimization */ volatile float eleRad; #else float aziRad; float eleRad; #endif float x[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float y[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; float z[MASA_MAXIMUM_DIRECTIONS][MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; Loading Loading @@ -1265,13 +1249,11 @@ void ivas_masa_combine_directions( } importance[i] /= (float) numSf; importance[i] *= hMasa->data.importanceWeight[i]; #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Setting close to zero values to zero to reduce decision differences */ if ( importance[i] < IMPORTANCE_MIN_STEP ) { importance[i] = 0.0f; } #endif } /* Determine bands where to use two directions */ Loading @@ -1295,14 +1277,9 @@ void ivas_masa_combine_directions( { for ( j = 0; j < numSf; j++ ) { #ifdef FIX_FLOAT_1493_MASA_ENCODE_STABILITY_IMPROVE /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum[j][i], xSum[j][i] ); eleRad = (float) atan2( zSum[j][i], sqrtf( xSum[j][i] * xSum[j][i] + ySum[j][i] * ySum[j][i] ) ); #else aziRad = atan2f( ySum[j][i], xSum[j][i] ); eleRad = atan2f( zSum[j][i], sqrtf( xSum[j][i] * xSum[j][i] + ySum[j][i] * ySum[j][i] ) ); #endif hMeta->directional_meta[0].azimuth[j][i] = aziRad / EVS_PI * 180.0f; hMeta->directional_meta[0].elevation[j][i] = eleRad / EVS_PI * 180.0f; Loading