mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
7.7 KiB
193 lines
7.7 KiB
/*[
|
|
* Product: SoftWindows Revision 2.0
|
|
*
|
|
* Name: msw_sound.h
|
|
*
|
|
* Derived From: Original
|
|
*
|
|
* Authors: Rob Tizzard
|
|
*
|
|
* Created On: 16th April 1994
|
|
*
|
|
* Purpose: All definitions for the SoftWindows Windows audio
|
|
* wave driver interface.
|
|
*
|
|
* (c)Copyright Insignia Solutions Ltd., 1994. All rights reserved.
|
|
*
|
|
]*/
|
|
|
|
#ifdef SCCSID
|
|
static char SccsID[]="@(#)msw_snd.h 1.1 07/13/94";
|
|
#endif
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Function return values.
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* Signal host error */
|
|
|
|
#define WAVE_SUCCESS (IU32) 0
|
|
#define WAVE_FAILURE (IU32) 1
|
|
|
|
/* Base error codes */
|
|
|
|
#define MMSYSERR_BASE 0
|
|
#define WAVERR_BASE 32
|
|
|
|
/* Waveform audio error return values */
|
|
|
|
#define WAVERR_BADFORMAT (WAVERR_BASE + 0) /* unsupported wave format */
|
|
#define WAVERR_STILLPLAYING (WAVERR_BASE + 1) /* still something playing */
|
|
#define WAVERR_UNPREPARED (WAVERR_BASE + 2) /* header not prepared */
|
|
#define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */
|
|
#define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */
|
|
|
|
/* General error return values */
|
|
|
|
#define MMSYSERR_NOERROR 0 /* no error */
|
|
#define MMSYSERR_ERROR (MMSYSERR_BASE + 1) /* unspecified error */
|
|
#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2) /* device ID out of range */
|
|
#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3) /* driver failed enable */
|
|
#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4) /* device already allocated */
|
|
#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5) /* device handle is invalid */
|
|
#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6) /* no device driver present */
|
|
#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7) /* memory allocation error */
|
|
#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8) /* function isn't supported */
|
|
#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9) /* error value out of range */
|
|
#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10) /* invalid flag passed */
|
|
#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11) /* invalid parameter passed */
|
|
#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 11) /* last error in range */
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Windows Data structure sizes.
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define MAXPNAMELEN 32 /* Product Name string length */
|
|
#define SIZEOF_MMTIME 6 /* Size of MMTIME structure in bytes */
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Flags for dwSupport field of WAVEOUTCAPS.
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define WAVECAPS_PITCH 0x0001 /* supports pitch control */
|
|
#define WAVECAPS_PLAYBACKRATE 0x0002 /* supports playback rate control */
|
|
#define WAVECAPS_VOLUME 0x0004 /* supports volume control */
|
|
#define WAVECAPS_LRVOLUME 0x0008 /* separate left-right volume control */
|
|
#define WAVECAPS_SYNC 0x0010 /* Synchronous device */
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Manufacturer IDs, Product IDs & driver version numbers
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define MM_INSIGNIA 2 /* Insignia Solutions */
|
|
|
|
#define MM_SOFTWIN_WAVEOUT 13 /* SoftWindows waveform output */
|
|
#define MM_SOFTWIN_WAVEIN 13 /* SoftWindows waveform input */
|
|
|
|
#define WAV_OUT_VERSION 0x0100 /* Output Wave Sound Driver Version */
|
|
#define WAV_IN_VERSION 0x0100 /* Input Wave Sound Driver Version */
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define WAVE_INVALIDFORMAT 0x00000000 /* invalid format */
|
|
#define WAVE_FORMAT_1M08 0x00000001 /* 11.025 kHz, Mono, 8-bit */
|
|
#define WAVE_FORMAT_1S08 0x00000002 /* 11.025 kHz, Stereo, 8-bit */
|
|
#define WAVE_FORMAT_1M16 0x00000004 /* 11.025 kHz, Mono, 16-bit */
|
|
#define WAVE_FORMAT_1S16 0x00000008 /* 11.025 kHz, Stereo, 16-bit */
|
|
#define WAVE_FORMAT_2M08 0x00000010 /* 22.05 kHz, Mono, 8-bit */
|
|
#define WAVE_FORMAT_2S08 0x00000020 /* 22.05 kHz, Stereo, 8-bit */
|
|
#define WAVE_FORMAT_2M16 0x00000040 /* 22.05 kHz, Mono, 16-bit */
|
|
#define WAVE_FORMAT_2S16 0x00000080 /* 22.05 kHz, Stereo, 16-bit */
|
|
#define WAVE_FORMAT_4M08 0x00000100 /* 44.1 kHz, Mono, 8-bit */
|
|
#define WAVE_FORMAT_4S08 0x00000200 /* 44.1 kHz, Stereo, 8-bit */
|
|
#define WAVE_FORMAT_4M16 0x00000400 /* 44.1 kHz, Mono, 16-bit */
|
|
#define WAVE_FORMAT_4S16 0x00000800 /* 44.1 kHz, Stereo, 16-bit */
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Defines for wave formats
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define WAVE_FORMAT_PCM 1
|
|
|
|
/* General wave format datastructure */
|
|
|
|
typedef struct {
|
|
IU16 wFormatTag; /* format type */
|
|
IU16 nChannels; /* number of channels (i.e. mono, stereo, etc.) */
|
|
IU32 nSamplesPerSec; /* sample rate */
|
|
IU32 nAvgBytesPerSec; /* for buffer estimation */
|
|
IU16 nBlockAlign; /* block size of data */
|
|
} WAVEFORMAT;
|
|
|
|
/* PCM wave datastructure */
|
|
|
|
typedef struct {
|
|
WAVEFORMAT wf;
|
|
IU16 wBitsPerSample;
|
|
} PCMWAVEFORMAT;
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Per allocation structure for wave
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
typedef struct {
|
|
IU32 dwCallback; /* client's callback */
|
|
IU32 dwInstance; /* client's instance data */
|
|
IU32 hWave; /* handle for stream */
|
|
IU32 dwFlags; /* allocation flags */
|
|
IU32 dwByteCount; /* byte count since last reset */
|
|
PCMWAVEFORMAT pcmwf; /* format of wave data */
|
|
}WAVEALLOC;
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Wave header structure.
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* flags for dwFlags field of WAVEHDR */
|
|
|
|
#define WHDR_DONE 0x00000001 /* done bit */
|
|
#define WHDR_PREPARED 0x00000002 /* set if this header has been prepared */
|
|
#define WHDR_BEGINLOOP 0x00000004 /* loop start block */
|
|
#define WHDR_ENDLOOP 0x00000008 /* loop end block */
|
|
#define WHDR_INQUEUE 0x00000010 /* reserved for driver */
|
|
|
|
typedef struct WAVHDR {
|
|
LIN_ADDR lpData; /* pointer to locked data buffer */
|
|
IU32 dwBufferLength; /* length of data buffer */
|
|
IU32 dwBytesRecorded; /* used for input only */
|
|
IU32 dwUser; /* for client's use */
|
|
IU32 dwFlags; /* assorted flags (see defines) */
|
|
IU32 dwLoops; /* loop control counter */
|
|
LIN_ADDR lpNext; /* reserved for driver */
|
|
IU32 reserved; /* reserved for driver */
|
|
} WAVEHDR;
|
|
|
|
/*
|
|
* -----------------------------------------------------------------------------
|
|
* Types for wType field in MMTIME struct
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#define TIME_MS 0x0001 /* time in milliseconds */
|
|
#define TIME_SAMPLES 0x0002 /* number of wave samples */
|
|
#define TIME_BYTES 0x0004 /* current byte offset */
|
|
#define TIME_SMPTE 0x0008 /* SMPTE time */
|
|
#define TIME_MIDI 0x0010 /* MIDI time */
|