summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-07-05 18:42:08 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-07-05 18:42:08 +0000
commit7a64649d681b3dada4c1f175ec9e088313647459 (patch)
tree52116ce6f345223980fc392b15ebdebec1c83648 /libavcodec
parenta4ce72480eb9811edaa156798fd3e24e7d2e1081 (diff)
Create a function for float dot product instead of duplicating all over the file
Originally committed as revision 14079 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/ra288.c34
1 files changed, 14 insertions, 20 deletions
diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c
index 3dcb63bf6b..78d8bfc4b4 100644
--- a/libavcodec/ra288.c
+++ b/libavcodec/ra288.c
@@ -37,6 +37,16 @@ typedef struct {
float lhist[10];
} Real288_internal;
+static inline float scalar_product_float(float * v1, float * v2, int size)
+{
+ float res = 0.;
+
+ while (size--)
+ res += *v1++ * *v2++;
+
+ return res;
+}
+
/* Decode and produce output */
static void decode(Real288_internal *glob, float gain, int cb_coef)
{
@@ -48,19 +58,11 @@ static void decode(Real288_internal *glob, float gain, int cb_coef)
glob->sb[x+5] = glob->sb[x];
for (x=4; x >= 0; x--) {
- float *p1 = glob->sb+x;
- float *p2 = glob->pr1;
- sum = 0;
- for (y=0; y < 36; y++)
- sum -= (*(++p1))*(*(p2++));
-
- glob->sb[x] = sum;
+ glob->sb[x] = -scalar_product_float(glob->sb + x + 1, glob->pr1, 36);
}
/* convert log and do rms */
- sum = 32;
- for (x=0; x < 10; x++)
- sum -= glob->pr2[x] * glob->lhist[x];
+ sum = 32. - scalar_product_float(glob->pr2, glob->lhist, 10);
if (sum < 0)
sum = 0;
@@ -148,17 +150,9 @@ static int pred(float *in, float *tgt, int n)
/* product sum (lsf) */
static void prodsum(float *tgt, float *src, int len, int n)
{
- unsigned int x;
- double sum;
+ for (; n >= 0; n--)
+ tgt[n] = scalar_product_float(src, src - n, len);
- while (n >= 0) {
- float *p2 = src;
- float *p1 = p2 - n;
- sum = 0;
- for (x=0; x < len; x++)
- sum += (*p1++) * (*p2++);
- tgt[n--] = sum;
- }
}
static void co(int n, int i, int j, float *in, float *out, float *st1,