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