Loading lib_enc/ivas_masa_enc.c +16 −7 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ static void masa_metadata_direction_alignment( MASA_ENCODER_HANDLE hMasa ); #define LOWBITRATE_ONSET_GAIN 1.4f #define LOWBITRATE_NUM_BANDS 5 #define IMPORTANCE_MIN_STEP 0.000244140625f /* 2^-12 to match BASOP */ /*-----------------------------------------------------------------------* * ivas_masa_enc_open() Loading Loading @@ -979,7 +981,7 @@ static void combine_freqbands_and_subframes( MASA_ENCODER_HANDLE hMasa ) { int16_t i, j, k, m; float aziRad, eleRad; volatile float aziRad, eleRad; /* Using volatile to reduce numerically unstable optimization */ 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 @@ -1065,8 +1067,9 @@ static void combine_freqbands_and_subframes( energySum += hMasa->data.energy[j][m]; } aziRad = atan2f( ySum, xSum ); eleRad = atan2f( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum, xSum ); eleRad = (float) atan2( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); 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 @@ -1174,8 +1177,8 @@ void ivas_masa_combine_directions( uint8_t computeCoherence; MASA_METADATA_HANDLE hMeta; float aziRad; float eleRad; volatile float aziRad; /* Using volatile to reduce numerically unstable optimization */ volatile float eleRad; 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 @@ -1243,6 +1246,11 @@ void ivas_masa_combine_directions( } importance[i] /= (float) numSf; importance[i] *= hMasa->data.importanceWeight[i]; /* Setting close to zero values to zero to reduce decision differences */ if ( importance[i] < IMPORTANCE_MIN_STEP ) { importance[i] = 0.0f; } } /* Determine bands where to use two directions */ Loading @@ -1265,8 +1273,9 @@ void ivas_masa_combine_directions( { for ( j = 0; j < numSf; j++ ) { 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] ) ); /* 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] ) ); 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_enc/ivas_masa_enc.c +16 −7 Original line number Diff line number Diff line Loading @@ -83,6 +83,8 @@ static void masa_metadata_direction_alignment( MASA_ENCODER_HANDLE hMasa ); #define LOWBITRATE_ONSET_GAIN 1.4f #define LOWBITRATE_NUM_BANDS 5 #define IMPORTANCE_MIN_STEP 0.000244140625f /* 2^-12 to match BASOP */ /*-----------------------------------------------------------------------* * ivas_masa_enc_open() Loading Loading @@ -979,7 +981,7 @@ static void combine_freqbands_and_subframes( MASA_ENCODER_HANDLE hMasa ) { int16_t i, j, k, m; float aziRad, eleRad; volatile float aziRad, eleRad; /* Using volatile to reduce numerically unstable optimization */ 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 @@ -1065,8 +1067,9 @@ static void combine_freqbands_and_subframes( energySum += hMasa->data.energy[j][m]; } aziRad = atan2f( ySum, xSum ); eleRad = atan2f( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); /* Using atan2 instead of atan2f to reduce platform difference */ aziRad = (float) atan2( ySum, xSum ); eleRad = (float) atan2( zSum, sqrtf( xSum * xSum + ySum * ySum ) ); 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 @@ -1174,8 +1177,8 @@ void ivas_masa_combine_directions( uint8_t computeCoherence; MASA_METADATA_HANDLE hMeta; float aziRad; float eleRad; volatile float aziRad; /* Using volatile to reduce numerically unstable optimization */ volatile float eleRad; 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 @@ -1243,6 +1246,11 @@ void ivas_masa_combine_directions( } importance[i] /= (float) numSf; importance[i] *= hMasa->data.importanceWeight[i]; /* Setting close to zero values to zero to reduce decision differences */ if ( importance[i] < IMPORTANCE_MIN_STEP ) { importance[i] = 0.0f; } } /* Determine bands where to use two directions */ Loading @@ -1265,8 +1273,9 @@ void ivas_masa_combine_directions( { for ( j = 0; j < numSf; j++ ) { 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] ) ); /* 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] ) ); 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