make sum_of_squares() more generic
Originally committed as revision 14056 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
58cc7dd9fc
commit
2b150e9a0c
@ -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<speech_end; speech++)
|
||||
sum += (speech[0] * speech[offset]) >> shift;
|
||||
for(i=0; i<length; i++)
|
||||
sum += (a[i] * b[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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user