Commit 2b150e9a by Michael Niedermayer

### make sum_of_squares() more generic

Originally committed as revision 14056 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 58cc7dd9
 ... ... @@ -51,23 +51,21 @@ int ff_exp2(uint16_t power); int ff_log2(uint32_t value); /** * \brief Calculates sum of array element multiplications * \param speech input data array * \brief Calculates the dot product * \param a input data array * \param b input data array * \param length number of elements * \param offset offset for calculation of sum of s[i]*s[i+offset] * \param shift right shift by this value will be done before multiplication * * \return sum of multiplications * * \note array must be at least length+offset long! */ static int sum_of_squares(const int16_t* speech, int length, int offset, int shift) static int dot_product(const int16_t* a, const int16_t* b, int length, int shift) { const int16_t* speech_end; int sum = 0; int i; for(speech_end=speech+length; speech> shift; for(i=0; i> shift; return sum; } ... ...
 ... ... @@ -103,7 +103,7 @@ int16_t ff_acelp_decode_gain_code( mr_energy += quant_energy[i] * ma_prediction_coeff[i]; #ifdef G729_BITEXACT mr_energy += (((-6165LL * ff_log2(sum_of_squares(fc_v, subframe_size, 0, 0))) >> 3) & ~0x3ff); mr_energy += (((-6165LL * ff_log2(dot_product(fc_v, fc_v, subframe_size, 0))) >> 3) & ~0x3ff); mr_energy = (5439 * (mr_energy >> 15)) >> 8; // (0.15) = (0.15) * (7.23) ... ... @@ -113,7 +113,7 @@ int16_t ff_acelp_decode_gain_code( ); #else mr_energy = gain_corr_factor * exp(M_LN10 / (20 << 23) * mr_energy) / sqrt(sum_of_squares(fc_v, subframe_size, 0, 0)); sqrt(dot_product(fc_v, fc_v, subframe_size, 0)); return mr_energy >> 12; #endif }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!