Browse code

Rename acelp_math.[ch] to celp_math.[ch] to prepare for QCELP decoder merge. patch by Kenan Gillet, kenan.gillet gmail com

Originally committed as revision 15679 to svn://svn.ffmpeg.org/ffmpeg/trunk

Kenan Gillet authored on 2008/10/25 06:20:29
Showing 7 changed files
1 1
deleted file mode 100644
... ...
@@ -1,197 +0,0 @@
1
-/*
2
- * Various fixed-point math operations
3
- *
4
- * Copyright (c) 2008 Vladimir Voroshilov
5
- *
6
- * This file is part of FFmpeg.
7
- *
8
- * FFmpeg is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU Lesser General Public
10
- * License as published by the Free Software Foundation; either
11
- * version 2.1 of the License, or (at your option) any later version.
12
- *
13
- * FFmpeg is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
- * Lesser General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU Lesser General Public
19
- * License along with FFmpeg; if not, write to the Free Software
20
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
- */
22
-
23
-#include <inttypes.h>
24
-#include <limits.h>
25
-#include <assert.h>
26
-
27
-#include "avcodec.h"
28
-#include "acelp_math.h"
29
-
30
-#ifdef G729_BITEXACT
31
-/**
32
- * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
33
- */
34
-static const int16_t base_cos[64] =
35
-{
36
-  32767,  32729,  32610,  32413,  32138,  31786,  31357,  30853,
37
-  30274,  29622,  28899,  28106,  27246,  26320,  25330,  24279,
38
-  23170,  22006,  20788,  19520,  18205,  16846,  15447,  14010,
39
-  12540,  11039,   9512,   7962,   6393,   4808,   3212,   1608,
40
-      0,  -1608,  -3212,  -4808,  -6393,  -7962,  -9512, -11039,
41
- -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
42
- -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
43
- -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729
44
-};
45
-
46
-/**
47
- * Slope used to compute cos(x)
48
- *
49
- * cos(ind*64+offset) = base_cos[ind]+offset*slope_cos[ind]
50
- * values multiplied by 1<<19
51
- */
52
-static const int16_t slope_cos[64] =
53
-{
54
-   -632,  -1893,  -3150,  -4399,  -5638,  -6863,  -8072,  -9261,
55
- -10428, -11570, -12684, -13767, -14817, -15832, -16808, -17744,
56
- -18637, -19486, -20287, -21039, -21741, -22390, -22986, -23526,
57
- -24009, -24435, -24801, -25108, -25354, -25540, -25664, -25726,
58
- -25726, -25664, -25540, -25354, -25108, -24801, -24435, -24009,
59
- -23526, -22986, -22390, -21741, -21039, -20287, -19486, -18637,
60
- -17744, -16808, -15832, -14817, -13767, -12684, -11570, -10428,
61
-  -9261,  -8072,  -6863,  -5638,  -4399,  -3150,  -1893,   -632
62
-};
63
-
64
-/**
65
- * Table used to compute exp2(x)
66
- *
67
- * tab_exp2[i] = (1<<14) * exp2(i/32) = 2^(i/32) i=0..32
68
- */
69
-static const uint16_t tab_exp2[33] =
70
-{
71
-  16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
72
-  20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
73
-  25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
74
-  31379, 32066, 32767
75
-};
76
-
77
-int16_t ff_cos(uint16_t arg)
78
-{
79
-    uint8_t offset= arg;
80
-    uint8_t ind = arg >> 8;
81
-
82
-    assert(arg < 0x4000);
83
-
84
-    return FFMAX(base_cos[ind] + ((slope_cos[ind] * offset) >> 12), -0x8000);
85
-}
86
-
87
-int ff_exp2(uint16_t power)
88
-{
89
-    uint16_t frac_x0;
90
-    uint16_t frac_dx;
91
-    int result;
92
-
93
-    assert(power <= 0x7fff);
94
-
95
-    frac_x0 = power >> 10;
96
-    frac_dx = (power & 0x03ff) << 5;
97
-
98
-    result = tab_exp2[frac_x0] << 15;
99
-    result += frac_dx * (tab_exp2[frac_x0+1] - tab_exp2[frac_x0]);
100
-
101
-    return result >> 10;
102
-}
103
-
104
-#else // G729_BITEXACT
105
-
106
-/**
107
- * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
108
- */
109
-static const int16_t tab_cos[65] =
110
-{
111
-  32767,  32738,  32617,  32421,  32145,  31793,  31364,  30860,
112
-  30280,  29629,  28905,  28113,  27252,  26326,  25336,  24285,
113
-  23176,  22011,  20793,  19525,  18210,  16851,  15451,  14014,
114
-  12543,  11043,   9515,   7965,   6395,   4810,   3214,   1609,
115
-      1,  -1607,  -3211,  -4808,  -6393,  -7962,  -9513, -11040,
116
- -12541, -14012, -15449, -16848, -18207, -19523, -20791, -22009,
117
- -23174, -24283, -25334, -26324, -27250, -28111, -28904, -29627,
118
- -30279, -30858, -31363, -31792, -32144, -32419, -32616, -32736, -32768,
119
-};
120
-
121
-static const uint16_t exp2a[]=
122
-{
123
-     0,  1435,  2901,  4400,  5931,  7496,  9096, 10730,
124
- 12400, 14106, 15850, 17632, 19454, 21315, 23216, 25160,
125
- 27146, 29175, 31249, 33368, 35534, 37747, 40009, 42320,
126
- 44682, 47095, 49562, 52082, 54657, 57289, 59979, 62727,
127
-};
128
-
129
-static const uint16_t exp2b[]=
130
-{
131
-     3,   712,  1424,  2134,  2845,  3557,  4270,  4982,
132
-  5696,  6409,  7124,  7839,  8554,  9270,  9986, 10704,
133
- 11421, 12138, 12857, 13576, 14295, 15014, 15734, 16455,
134
- 17176, 17898, 18620, 19343, 20066, 20790, 21514, 22238,
135
-};
136
-
137
-int16_t ff_cos(uint16_t arg)
138
-{
139
-    uint8_t offset= arg;
140
-    uint8_t ind = arg >> 8;
141
-
142
-    assert(arg <= 0x3fff);
143
-
144
-    return tab_cos[ind] + (offset * (tab_cos[ind+1] - tab_cos[ind]) >> 8);
145
-}
146
-
147
-int ff_exp2(uint16_t power)
148
-{
149
-    unsigned int result= exp2a[power>>10] + 0x10000;
150
-
151
-    assert(arg <= 0x7fff);
152
-
153
-    result= (result<<3) + ((result*exp2b[(power>>5)&31])>>17);
154
-    return result + ((result*(power&31)*89)>>22);
155
-}
156
-
157
-#endif // else G729_BITEXACT
158
-
159
-/**
160
- * Table used to compute log2(x)
161
- *
162
- * tab_log2[i] = (1<<15) * log2(1 + i/32), i=0..32
163
- */
164
-static const uint16_t tab_log2[33] =
165
-{
166
-#ifdef G729_BITEXACT
167
-      0,   1455,   2866,   4236,   5568,   6863,   8124,   9352,
168
-  10549,  11716,  12855,  13967,  15054,  16117,  17156,  18172,
169
-  19167,  20142,  21097,  22033,  22951,  23852,  24735,  25603,
170
-  26455,  27291,  28113,  28922,  29716,  30497,  31266,  32023,  32767,
171
-#else
172
-      4,   1459,   2870,   4240,   5572,   6867,   8127,   9355,
173
-  10552,  11719,  12858,  13971,  15057,  16120,  17158,  18175,
174
-  19170,  20145,  21100,  22036,  22954,  23854,  24738,  25605,
175
-  26457,  27294,  28116,  28924,  29719,  30500,  31269,  32025,  32769,
176
-#endif
177
-};
178
-
179
-int ff_log2(uint32_t value)
180
-{
181
-    uint8_t  power_int;
182
-    uint8_t  frac_x0;
183
-    uint16_t frac_dx;
184
-
185
-    // Stripping zeros from beginning
186
-    power_int = av_log2(value);
187
-    value <<= (31 - power_int);
188
-
189
-    // b31 is always non-zero now
190
-    frac_x0 = (value & 0x7c000000) >> 26; // b26-b31 and [32..63] -> [0..31]
191
-    frac_dx = (value & 0x03fff800) >> 11;
192
-
193
-    value = tab_log2[frac_x0];
194
-    value += (frac_dx * (tab_log2[frac_x0+1] - tab_log2[frac_x0])) >> 15;
195
-
196
-    return (power_int << 15) + value;
197
-}
198 1
deleted file mode 100644
... ...
@@ -1,86 +0,0 @@
1
-/*
2
- * Various fixed-point math operations
3
- *
4
- * Copyright (c) 2008 Vladimir Voroshilov
5
- *
6
- * This file is part of FFmpeg.
7
- *
8
- * FFmpeg is free software; you can redistribute it and/or
9
- * modify it under the terms of the GNU Lesser General Public
10
- * License as published by the Free Software Foundation; either
11
- * version 2.1 of the License, or (at your option) any later version.
12
- *
13
- * FFmpeg is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
- * Lesser General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU Lesser General Public
19
- * License along with FFmpeg; if not, write to the Free Software
20
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
- */
22
-
23
-#ifndef AVCODEC_ACELP_MATH_H
24
-#define AVCODEC_ACELP_MATH_H
25
-
26
-#include <stdint.h>
27
-
28
-/**
29
- * fixed-point implementation of cosine in [0; PI) domain.
30
- * @param arg fixed-point cosine argument, 0 <= arg < 0x4000
31
- *
32
- * @return value of (1<<15) * cos(arg * PI / (1<<14)), -0x8000 <= result <= 0x7fff
33
- */
34
-int16_t ff_cos(uint16_t arg);
35
-
36
-/**
37
- * fixed-point implementation of exp2(x) in [0; 1] domain.
38
- * @param power argument to exp2, 0 <= power <= 0x7fff
39
- *
40
- * @return value of (1<<20) * exp2(power / (1<<15))
41
- *         0x8000c <= result <= 0xfffea
42
- */
43
-int ff_exp2(uint16_t power);
44
-
45
-/**
46
- * Calculates log2(x).
47
- * @param value function argument, 0 < value <= 7fff ffff
48
- *
49
- * @return value of (1<<15) * log2(value)
50
- */
51
-int ff_log2(uint32_t value);
52
-
53
-/**
54
- * returns the dot product.
55
- * @param a input data array
56
- * @param b input data array
57
- * @param length number of elements
58
- * @param shift right shift by this value will be done after multiplication
59
- *
60
- * @return dot product = sum of elementwise products
61
- */
62
-static int dot_product(const int16_t* a, const int16_t* b, int length, int shift)
63
-{
64
-    int sum = 0;
65
-    int i;
66
-
67
-    for(i=0; i<length; i++)
68
-        sum += (a[i] * b[i]) >> shift;
69
-
70
-    return sum;
71
-}
72
-
73
-/**
74
- * Shift value left or right depending on sign of offset parameter.
75
- * @param value value to shift
76
- * @param offset shift offset
77
- *
78
- * @return value << offset, if offset>=0; value >> -offset - otherwise
79
- */
80
-static inline int bidir_sal(int value, int offset)
81
-{
82
-    if(offset < 0) return value >> -offset;
83
-    else           return value <<  offset;
84
-}
85
-
86
-#endif /* AVCODEC_ACELP_MATH_H */
... ...
@@ -22,7 +22,7 @@
22 22
 
23 23
 #include "avcodec.h"
24 24
 #include "acelp_pitch_delay.h"
25
-#include "acelp_math.h"
25
+#include "celp_math.h"
26 26
 
27 27
 int ff_acelp_decode_8bit_to_1st_delay3(int ac_index)
28 28
 {
29 29
new file mode 100644
... ...
@@ -0,0 +1,197 @@
0
+/*
1
+ * Various fixed-point math operations
2
+ *
3
+ * Copyright (c) 2008 Vladimir Voroshilov
4
+ *
5
+ * This file is part of FFmpeg.
6
+ *
7
+ * FFmpeg is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * FFmpeg is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with FFmpeg; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
+ */
21
+
22
+#include <inttypes.h>
23
+#include <limits.h>
24
+#include <assert.h>
25
+
26
+#include "avcodec.h"
27
+#include "celp_math.h"
28
+
29
+#ifdef G729_BITEXACT
30
+/**
31
+ * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
32
+ */
33
+static const int16_t base_cos[64] =
34
+{
35
+  32767,  32729,  32610,  32413,  32138,  31786,  31357,  30853,
36
+  30274,  29622,  28899,  28106,  27246,  26320,  25330,  24279,
37
+  23170,  22006,  20788,  19520,  18205,  16846,  15447,  14010,
38
+  12540,  11039,   9512,   7962,   6393,   4808,   3212,   1608,
39
+      0,  -1608,  -3212,  -4808,  -6393,  -7962,  -9512, -11039,
40
+ -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
41
+ -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
42
+ -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729
43
+};
44
+
45
+/**
46
+ * Slope used to compute cos(x)
47
+ *
48
+ * cos(ind*64+offset) = base_cos[ind]+offset*slope_cos[ind]
49
+ * values multiplied by 1<<19
50
+ */
51
+static const int16_t slope_cos[64] =
52
+{
53
+   -632,  -1893,  -3150,  -4399,  -5638,  -6863,  -8072,  -9261,
54
+ -10428, -11570, -12684, -13767, -14817, -15832, -16808, -17744,
55
+ -18637, -19486, -20287, -21039, -21741, -22390, -22986, -23526,
56
+ -24009, -24435, -24801, -25108, -25354, -25540, -25664, -25726,
57
+ -25726, -25664, -25540, -25354, -25108, -24801, -24435, -24009,
58
+ -23526, -22986, -22390, -21741, -21039, -20287, -19486, -18637,
59
+ -17744, -16808, -15832, -14817, -13767, -12684, -11570, -10428,
60
+  -9261,  -8072,  -6863,  -5638,  -4399,  -3150,  -1893,   -632
61
+};
62
+
63
+/**
64
+ * Table used to compute exp2(x)
65
+ *
66
+ * tab_exp2[i] = (1<<14) * exp2(i/32) = 2^(i/32) i=0..32
67
+ */
68
+static const uint16_t tab_exp2[33] =
69
+{
70
+  16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
71
+  20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
72
+  25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
73
+  31379, 32066, 32767
74
+};
75
+
76
+int16_t ff_cos(uint16_t arg)
77
+{
78
+    uint8_t offset= arg;
79
+    uint8_t ind = arg >> 8;
80
+
81
+    assert(arg < 0x4000);
82
+
83
+    return FFMAX(base_cos[ind] + ((slope_cos[ind] * offset) >> 12), -0x8000);
84
+}
85
+
86
+int ff_exp2(uint16_t power)
87
+{
88
+    uint16_t frac_x0;
89
+    uint16_t frac_dx;
90
+    int result;
91
+
92
+    assert(power <= 0x7fff);
93
+
94
+    frac_x0 = power >> 10;
95
+    frac_dx = (power & 0x03ff) << 5;
96
+
97
+    result = tab_exp2[frac_x0] << 15;
98
+    result += frac_dx * (tab_exp2[frac_x0+1] - tab_exp2[frac_x0]);
99
+
100
+    return result >> 10;
101
+}
102
+
103
+#else // G729_BITEXACT
104
+
105
+/**
106
+ * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
107
+ */
108
+static const int16_t tab_cos[65] =
109
+{
110
+  32767,  32738,  32617,  32421,  32145,  31793,  31364,  30860,
111
+  30280,  29629,  28905,  28113,  27252,  26326,  25336,  24285,
112
+  23176,  22011,  20793,  19525,  18210,  16851,  15451,  14014,
113
+  12543,  11043,   9515,   7965,   6395,   4810,   3214,   1609,
114
+      1,  -1607,  -3211,  -4808,  -6393,  -7962,  -9513, -11040,
115
+ -12541, -14012, -15449, -16848, -18207, -19523, -20791, -22009,
116
+ -23174, -24283, -25334, -26324, -27250, -28111, -28904, -29627,
117
+ -30279, -30858, -31363, -31792, -32144, -32419, -32616, -32736, -32768,
118
+};
119
+
120
+static const uint16_t exp2a[]=
121
+{
122
+     0,  1435,  2901,  4400,  5931,  7496,  9096, 10730,
123
+ 12400, 14106, 15850, 17632, 19454, 21315, 23216, 25160,
124
+ 27146, 29175, 31249, 33368, 35534, 37747, 40009, 42320,
125
+ 44682, 47095, 49562, 52082, 54657, 57289, 59979, 62727,
126
+};
127
+
128
+static const uint16_t exp2b[]=
129
+{
130
+     3,   712,  1424,  2134,  2845,  3557,  4270,  4982,
131
+  5696,  6409,  7124,  7839,  8554,  9270,  9986, 10704,
132
+ 11421, 12138, 12857, 13576, 14295, 15014, 15734, 16455,
133
+ 17176, 17898, 18620, 19343, 20066, 20790, 21514, 22238,
134
+};
135
+
136
+int16_t ff_cos(uint16_t arg)
137
+{
138
+    uint8_t offset= arg;
139
+    uint8_t ind = arg >> 8;
140
+
141
+    assert(arg <= 0x3fff);
142
+
143
+    return tab_cos[ind] + (offset * (tab_cos[ind+1] - tab_cos[ind]) >> 8);
144
+}
145
+
146
+int ff_exp2(uint16_t power)
147
+{
148
+    unsigned int result= exp2a[power>>10] + 0x10000;
149
+
150
+    assert(arg <= 0x7fff);
151
+
152
+    result= (result<<3) + ((result*exp2b[(power>>5)&31])>>17);
153
+    return result + ((result*(power&31)*89)>>22);
154
+}
155
+
156
+#endif // else G729_BITEXACT
157
+
158
+/**
159
+ * Table used to compute log2(x)
160
+ *
161
+ * tab_log2[i] = (1<<15) * log2(1 + i/32), i=0..32
162
+ */
163
+static const uint16_t tab_log2[33] =
164
+{
165
+#ifdef G729_BITEXACT
166
+      0,   1455,   2866,   4236,   5568,   6863,   8124,   9352,
167
+  10549,  11716,  12855,  13967,  15054,  16117,  17156,  18172,
168
+  19167,  20142,  21097,  22033,  22951,  23852,  24735,  25603,
169
+  26455,  27291,  28113,  28922,  29716,  30497,  31266,  32023,  32767,
170
+#else
171
+      4,   1459,   2870,   4240,   5572,   6867,   8127,   9355,
172
+  10552,  11719,  12858,  13971,  15057,  16120,  17158,  18175,
173
+  19170,  20145,  21100,  22036,  22954,  23854,  24738,  25605,
174
+  26457,  27294,  28116,  28924,  29719,  30500,  31269,  32025,  32769,
175
+#endif
176
+};
177
+
178
+int ff_log2(uint32_t value)
179
+{
180
+    uint8_t  power_int;
181
+    uint8_t  frac_x0;
182
+    uint16_t frac_dx;
183
+
184
+    // Stripping zeros from beginning
185
+    power_int = av_log2(value);
186
+    value <<= (31 - power_int);
187
+
188
+    // b31 is always non-zero now
189
+    frac_x0 = (value & 0x7c000000) >> 26; // b26-b31 and [32..63] -> [0..31]
190
+    frac_dx = (value & 0x03fff800) >> 11;
191
+
192
+    value = tab_log2[frac_x0];
193
+    value += (frac_dx * (tab_log2[frac_x0+1] - tab_log2[frac_x0])) >> 15;
194
+
195
+    return (power_int << 15) + value;
196
+}
0 197
new file mode 100644
... ...
@@ -0,0 +1,86 @@
0
+/*
1
+ * Various fixed-point math operations
2
+ *
3
+ * Copyright (c) 2008 Vladimir Voroshilov
4
+ *
5
+ * This file is part of FFmpeg.
6
+ *
7
+ * FFmpeg is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * FFmpeg is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with FFmpeg; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
+ */
21
+
22
+#ifndef AVCODEC_CELP_MATH_H
23
+#define AVCODEC_CELP_MATH_H
24
+
25
+#include <stdint.h>
26
+
27
+/**
28
+ * fixed-point implementation of cosine in [0; PI) domain.
29
+ * @param arg fixed-point cosine argument, 0 <= arg < 0x4000
30
+ *
31
+ * @return value of (1<<15) * cos(arg * PI / (1<<14)), -0x8000 <= result <= 0x7fff
32
+ */
33
+int16_t ff_cos(uint16_t arg);
34
+
35
+/**
36
+ * fixed-point implementation of exp2(x) in [0; 1] domain.
37
+ * @param power argument to exp2, 0 <= power <= 0x7fff
38
+ *
39
+ * @return value of (1<<20) * exp2(power / (1<<15))
40
+ *         0x8000c <= result <= 0xfffea
41
+ */
42
+int ff_exp2(uint16_t power);
43
+
44
+/**
45
+ * Calculates log2(x).
46
+ * @param value function argument, 0 < value <= 7fff ffff
47
+ *
48
+ * @return value of (1<<15) * log2(value)
49
+ */
50
+int ff_log2(uint32_t value);
51
+
52
+/**
53
+ * returns the dot product.
54
+ * @param a input data array
55
+ * @param b input data array
56
+ * @param length number of elements
57
+ * @param shift right shift by this value will be done after multiplication
58
+ *
59
+ * @return dot product = sum of elementwise products
60
+ */
61
+static int dot_product(const int16_t* a, const int16_t* b, int length, int shift)
62
+{
63
+    int sum = 0;
64
+    int i;
65
+
66
+    for(i=0; i<length; i++)
67
+        sum += (a[i] * b[i]) >> shift;
68
+
69
+    return sum;
70
+}
71
+
72
+/**
73
+ * Shift value left or right depending on sign of offset parameter.
74
+ * @param value value to shift
75
+ * @param offset shift offset
76
+ *
77
+ * @return value << offset, if offset>=0; value >> -offset - otherwise
78
+ */
79
+static inline int bidir_sal(int value, int offset)
80
+{
81
+    if(offset < 0) return value >> -offset;
82
+    else           return value <<  offset;
83
+}
84
+
85
+#endif /* AVCODEC_CELP_MATH_H */
... ...
@@ -32,7 +32,7 @@
32 32
 
33 33
 #include "g729.h"
34 34
 #include "lsp.h"
35
-#include "acelp_math.h"
35
+#include "celp_math.h"
36 36
 #include "acelp_filters.h"
37 37
 #include "acelp_pitch_delay.h"
38 38
 #include "acelp_vectors.h"
... ...
@@ -26,7 +26,7 @@
26 26
 #define FRAC_BITS 14
27 27
 #include "mathops.h"
28 28
 #include "lsp.h"
29
-#include "acelp_math.h"
29
+#include "celp_math.h"
30 30
 
31 31
 void ff_acelp_reorder_lsf(int16_t* lsfq, int lsfq_min_distance, int lsfq_min, int lsfq_max, int lp_order)
32 32
 {