comparison acelp_vectors.c @ 10493:5f2ced30548b libavcodec

Implement ff_scale_vector_to_given_sum_of_squares() to aid generic gain control routines. Changes for qcelp are included. Patch Collin McQuillan.
author reynaldo
date Wed, 04 Nov 2009 19:29:29 +0000
parents 9f35b262d3f0
children 8e91a3efdbd2
comparison
equal deleted inserted replaced
10492:63910f7ba293 10493:5f2ced30548b
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */ 21 */
22 22
23 #include <inttypes.h> 23 #include <inttypes.h>
24 #include "avcodec.h" 24 #include "avcodec.h"
25 #include "celp_math.h"
25 #include "acelp_vectors.h" 26 #include "acelp_vectors.h"
26 #include "celp_math.h" 27 #include "celp_math.h"
27 28
28 const uint8_t ff_fc_2pulses_9bits_track1[16] = 29 const uint8_t ff_fc_2pulses_9bits_track1[16] =
29 { 30 {
175 buf_out[i] *= mem; 176 buf_out[i] *= mem;
176 } 177 }
177 178
178 *gain_mem = mem; 179 *gain_mem = mem;
179 } 180 }
181
182 void ff_scale_vector_to_given_sum_of_squares(float *out, const float *in,
183 float sum_of_squares, const int n)
184 {
185 int i;
186 float scalefactor = ff_dot_productf(in, in, n);
187 if (scalefactor)
188 scalefactor = sqrt(sum_of_squares / scalefactor);
189 for (i = 0; i < n; i++)
190 out[i] = in[i] * scalefactor;
191 }