DOSBox-X
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
src/hardware/snd_pc98/sound/sound.h
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