4f265db7 |
1 | #define MAXOUT (+32767) |
2 | #define MINOUT (-32768) |
3 | |
4 | /* limitter */ |
5 | #define Limit(val, max,min) { \ |
6 | if ( val > max ) val = max; \ |
7 | else if ( val < min ) val = min; \ |
8 | } |
9 | |
10 | |
11 | |
12 | |
13 | void memcpy32(int *dest, int *src, int count) |
14 | { |
15 | while (count--) |
16 | *dest++ = *src++; |
17 | } |
18 | |
19 | |
20 | void memset32(int *dest, int c, int count) |
21 | { |
22 | while (count--) |
23 | *dest++ = c; |
24 | } |
25 | |
26 | |
27 | void mix_32_to_16l_stereo(short *dest, int *src, int count) |
28 | { |
29 | int l, r; |
30 | |
31 | for (; count > 0; count--) |
32 | { |
33 | l = r = *dest; |
34 | l += *src++; |
35 | r += *src++; |
36 | Limit( l, MAXOUT, MINOUT ); |
37 | Limit( r, MAXOUT, MINOUT ); |
38 | *dest++ = l; |
39 | *dest++ = r; |
40 | } |
41 | } |
42 | |
43 | |
44 | void mix_32_to_16_mono(short *dest, int *src, int count) |
45 | { |
46 | int l; |
47 | |
48 | for (; count > 0; count--) |
49 | { |
50 | l = *dest; |
51 | l += *src++; |
52 | Limit( l, MAXOUT, MINOUT ); |
53 | *dest++ = l; |
54 | } |
55 | } |
56 | |
57 | |