menu bg, pc linux build
[picodrive.git] / Pico / sound / mix.c
CommitLineData
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
13void memcpy32(int *dest, int *src, int count)
14{
15 while (count--)
16 *dest++ = *src++;
17}
18
19
20void memset32(int *dest, int c, int count)
21{
22 while (count--)
23 *dest++ = c;
24}
25
26
27void 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
44void 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