Mercurial > libavcodec.hg
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 } |