summaryrefslogtreecommitdiff
path: root/libavcodec/acelp_vectors.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec/acelp_vectors.c')
-rw-r--r--libavcodec/acelp_vectors.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libavcodec/acelp_vectors.c b/libavcodec/acelp_vectors.c
index 2d9aa1ad79..e6979205b9 100644
--- a/libavcodec/acelp_vectors.c
+++ b/libavcodec/acelp_vectors.c
@@ -22,6 +22,7 @@
#include <inttypes.h>
#include "avcodec.h"
+#include "celp_math.h"
#include "acelp_vectors.h"
#include "celp_math.h"
@@ -177,3 +178,14 @@ void ff_adaptative_gain_control(float *buf_out, float speech_energ,
*gain_mem = mem;
}
+
+void ff_scale_vector_to_given_sum_of_squares(float *out, const float *in,
+ float sum_of_squares, const int n)
+{
+ int i;
+ float scalefactor = ff_dot_productf(in, in, n);
+ if (scalefactor)
+ scalefactor = sqrt(sum_of_squares / scalefactor);
+ for (i = 0; i < n; i++)
+ out[i] = in[i] * scalefactor;
+}