DOSBox-X
|
00001 00002 #ifndef SOUNDCALL 00003 #define SOUNDCALL 00004 #endif 00005 00006 #if !defined(DISABLE_SOUND) 00007 00008 typedef void (SOUNDCALL * SOUNDCB)(void *hdl, SINT32 *pcm, UINT count); 00009 00010 typedef struct { 00011 UINT rate; 00012 UINT32 hzbase; 00013 UINT32 clockbase; 00014 UINT32 minclock; 00015 UINT32 lastclock; 00016 UINT writecount; 00017 } SOUNDCFG; 00018 00019 00020 #ifdef __cplusplus 00021 extern "C" { 00022 #endif 00023 00024 extern SOUNDCFG soundcfg; 00025 00026 BOOL sound_create(UINT rate, UINT ms); 00027 void sound_destroy(void); 00028 00029 void sound_reset(void); 00030 void sound_changeclock(void); 00031 void sound_streamregist(void *hdl, SOUNDCB cbfn); 00032 00033 void sound_sync(void); 00034 00035 const SINT32 *sound_pcmlock(void); 00036 void sound_pcmunlock(const SINT32 *hdl); 00037 00038 #if defined(SUPPORT_WAVEREC) 00039 BOOL sound_recstart(const OEMCHAR *filename); 00040 void sound_recstop(void); 00041 #endif 00042 00043 #ifdef __cplusplus 00044 } 00045 #endif 00046 00047 00048 00049 // ---- PCM MIX 00050 00051 enum { 00052 PMIXFLAG_L = 0x0001, 00053 PMIXFLAG_R = 0x0002, 00054 PMIXFLAG_LOOP = 0x0004 00055 }; 00056 00057 typedef struct { 00058 UINT32 playing; 00059 UINT32 enable; 00060 } PMIXHDR; 00061 00062 typedef struct { 00063 SINT16 *sample; 00064 UINT samples; 00065 } PMIXDAT; 00066 00067 typedef struct { 00068 const SINT16 *pcm; 00069 UINT remain; 00070 PMIXDAT data; 00071 UINT flag; 00072 SINT32 volume; 00073 } PMIXTRK; 00074 00075 typedef struct { 00076 PMIXHDR hdr; 00077 PMIXTRK trk[1]; 00078 } _PCMMIX, *PCMMIX; 00079 00080 00081 #ifdef __cplusplus 00082 extern "C" { 00083 #endif 00084 00085 BRESULT pcmmix_regist(PMIXDAT *dat, void *datptr, UINT datsize, UINT rate); 00086 BRESULT pcmmix_regfile(PMIXDAT *dat, const OEMCHAR *fname, UINT rate); 00087 00088 void SOUNDCALL pcmmix_getpcm(PCMMIX hdl, SINT32 *pcm, UINT count); 00089 00090 #ifdef __cplusplus 00091 } 00092 #endif 00093 00094 #else 00095 00096 #define sound_pcmlock() (NULL) 00097 #define sound_pcmunlock(h) 00098 #define sound_reset() 00099 #define sound_changeclock() 00100 #define sound_sync() 00101 00102 #endif 00103