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