1 /*
2  * SoX bit-rot detection file; cobbled together
3  */
4 #define HWAVEIN HANDLE
5 #define HWAVEOUT HANDLE
6 #define MMRESULT UINT
7 #define MMVERSION UINT
8 #define UNALIGNED
9 
10 enum {
11   MMSYSERR_NOERROR,
12   MAXPNAMELEN,
13   WAVE_FORMAT_PCM,
14   WAVE_FORMAT_EXTENSIBLE,
15   WAVE_FORMAT_QUERY,
16   WAVE_MAPPER,
17   WAVERR_STILLPLAYING,
18   WHDR_DONE,
19   WHDR_INQUEUE
20 };
21 
22 typedef struct wavehdr_tag {
23   LPSTR lpData;
24   DWORD dwBufferLength;
25   DWORD dwBytesRecorded;
26   DWORD dwUser;
27   DWORD dwFlags;
28   DWORD dwLoops;
29   struct wavehdr_tag *lpNext;
30   DWORD reserved;
31 } WAVEHDR,*PWAVEHDR,*LPWAVEHDR;
32 
33 typedef struct _WAVEFORMATEX {
34   WORD   wFormatTag;
35   WORD   nChannels;
36   DWORD  nSamplesPerSec;
37   DWORD  nAvgBytesPerSec;
38   WORD   nBlockAlign;
39   WORD   wBitsPerSample;
40   WORD   cbSize;
41 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
42 
43 typedef struct tagWAVEINCAPSA {
44   WORD wMid;
45   WORD wPid;
46   MMVERSION vDriverVersion;
47   CHAR szPname[MAXPNAMELEN];
48   DWORD dwFormats;
49   WORD wChannels;
50   WORD wReserved1;
51 } WAVEINCAPSA,*PWAVEINCAPSA,*LPWAVEINCAPSA;
52 
53 typedef struct tagWAVEOUTCAPSA {
54   WORD wMid;
55   WORD wPid;
56   MMVERSION vDriverVersion;
57   CHAR szPname[MAXPNAMELEN];
58   DWORD dwFormats;
59   WORD wChannels;
60   WORD wReserved1;
61   DWORD dwSupport;
62 } WAVEOUTCAPSA,*PWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
63 
64 MMRESULT WINAPI waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT);
65 MMRESULT WINAPI waveInClose(HWAVEIN);
66 MMRESULT WINAPI waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
67 MMRESULT WINAPI waveInGetNumDevs(void);
68 MMRESULT WINAPI waveInOpen(HWAVEIN*,UINT,WAVEFORMATEX*,DWORD*,DWORD*,DWORD);
69 MMRESULT WINAPI waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
70 MMRESULT WINAPI waveInReset(HWAVEIN);
71 MMRESULT WINAPI waveInStart(HWAVEIN);
72 MMRESULT WINAPI waveOutClose(HWAVEOUT);
73 MMRESULT WINAPI waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
74 MMRESULT WINAPI waveOutGetNumDevs(void);
75 MMRESULT WINAPI waveOutOpen(HWAVEOUT*,UINT,WAVEFORMATEX*,DWORD*,DWORD*,DWORD);
76 MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
77 MMRESULT WINAPI waveOutReset(HWAVEOUT);
78 MMRESULT WINAPI waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT);
79 
80 typedef struct {
81   WAVEFORMATEX Format;
82   union {
83     WORD wValidBitsPerSample;
84     WORD wSamplesPerBlock;
85     WORD wReserved;
86   } Samples;
87   DWORD        dwChannelMask;
88   GUID         SubFormat;
89 } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
90