1 #ifndef __MIX_H
2 #define __MIX_H
3 
4 struct mixchannel
5 {
6 	void *samp;
7 	union
8 	{
9 		int8_t *fmt8;
10 		int16_t *fmt16;
11 		float *fmtfloat;
12 		void *fmt;
13 	} realsamp;
14 	uint32_t length;
15 	uint32_t loopstart;
16 	uint32_t loopend;
17 	uint32_t replen;
18 	int32_t step;
19 	uint32_t pos;
20 	uint16_t fpos;
21 	uint16_t status;
22 	union
23 	{
24 		uint32_t *voltabs[2];
25 		int16_t vols[2];
26 		float volfs[2];
27 	} vol;
28 };
29 
30 extern int mixInit(void (*getchan)(unsigned int ch, struct mixchannel *chn, uint32_t rate), int resamp, unsigned int chan, int amp);
31 extern void mixClose(void);
32 extern void mixSetAmplify(int amp);
33 extern void mixGetRealVolume(int ch, int *l, int *r);
34 extern void mixGetMasterSample(int16_t *s, unsigned int len, uint32_t rate, int opt);
35 extern int mixGetChanSample(unsigned int ch, int16_t *s, unsigned int len, uint32_t rate, int opt);
36 extern int mixAddChanSample(unsigned int ch, int16_t *s, unsigned int len, uint32_t rate);
37 extern void mixGetRealMasterVolume(int *l, int *r);
38 
39 #define MIX_PLAYING 1
40 #define MIX_MUTE 2
41 #define MIX_LOOPED 4
42 #define MIX_PINGPONGLOOP 8
43 #define MIX_PLAY16BIT 16
44 #define MIX_INTERPOLATE 32
45 #define MIX_MAX 64
46 #define MIX_PLAYFLOAT 128
47 #define MIX_ALL 255
48 
49 #endif
50