1 |
/*author: Adrian Sandor |
2 |
written for MinGW*/ |
3 |
#ifndef _MSACM_H |
4 |
#define _MSACM_H |
5 |
|
6 |
#if __GNUC__ >= 3 |
7 |
#pragma GCC system_header |
8 |
#endif |
9 |
|
10 |
#ifdef __cplusplus |
11 |
extern "C" { |
12 |
#endif |
13 |
|
14 |
DECLARE_HANDLE(HACMDRIVERID); |
15 |
typedef HACMDRIVERID *PHACMDRIVERID; |
16 |
typedef HACMDRIVERID *LPHACMDRIVERID; |
17 |
DECLARE_HANDLE(HACMDRIVER); |
18 |
typedef HACMDRIVER *PHACMDRIVER; |
19 |
typedef HACMDRIVER *LPHACMDRIVER; |
20 |
DECLARE_HANDLE(HACMSTREAM); |
21 |
typedef HACMSTREAM *PHACMSTREAM; |
22 |
typedef HACMSTREAM *LPHACMSTREAM; |
23 |
DECLARE_HANDLE(HACMOBJ); |
24 |
typedef HACMOBJ *PHACMOBJ; |
25 |
typedef HACMOBJ *LPHACMOBJ; |
26 |
|
27 |
/*found through experimentation*/ |
28 |
#define ACMDRIVERDETAILS_SHORTNAME_CHARS 32 |
29 |
#define ACMDRIVERDETAILS_LONGNAME_CHARS 128 |
30 |
#define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80 |
31 |
#define ACMDRIVERDETAILS_LICENSING_CHARS 128 |
32 |
|
33 |
/*I don't know the right values for these macros*/ |
34 |
#define ACMFORMATDETAILS_FORMAT_CHARS 256 |
35 |
#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256 |
36 |
#define ACMDRIVERDETAILS_FEATURES_CHARS 256 |
37 |
|
38 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/ |
39 |
typedef struct { |
40 |
DWORD cbStruct; |
41 |
DWORD dwFormatIndex; |
42 |
DWORD dwFormatTag; |
43 |
DWORD fdwSupport; |
44 |
LPWAVEFORMATEX pwfx; |
45 |
DWORD cbwfx; |
46 |
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; |
47 |
} ACMFORMATDETAILSA, *LPACMFORMATDETAILSA; |
48 |
typedef struct { |
49 |
DWORD cbStruct; |
50 |
DWORD dwFormatIndex; |
51 |
DWORD dwFormatTag; |
52 |
DWORD fdwSupport; |
53 |
LPWAVEFORMATEX pwfx; |
54 |
DWORD cbwfx; |
55 |
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]; |
56 |
} ACMFORMATDETAILSW, *LPACMFORMATDETAILSW; |
57 |
|
58 |
/*msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx*/ |
59 |
typedef struct { |
60 |
DWORD cbStruct; |
61 |
DWORD fdwStatus; |
62 |
DWORD_PTR dwUser; |
63 |
LPBYTE pbSrc; |
64 |
DWORD cbSrcLength; |
65 |
DWORD cbSrcLengthUsed; |
66 |
DWORD_PTR dwSrcUser; |
67 |
LPBYTE pbDst; |
68 |
DWORD cbDstLength; |
69 |
DWORD cbDstLengthUsed; |
70 |
DWORD_PTR dwDstUser; |
71 |
DWORD dwReservedDriver[10]; |
72 |
} ACMSTREAMHEADER, *LPACMSTREAMHEADER; |
73 |
|
74 |
/*msdn.microsoft.com/en-us/library/dd757711%28v=VS.85%29.aspx*/ |
75 |
typedef struct { |
76 |
DWORD cbStruct; |
77 |
DWORD dwFilterTag; |
78 |
DWORD fdwFilter; |
79 |
DWORD dwReserved[5]; |
80 |
} WAVEFILTER, *LPWAVEFILTER; |
81 |
|
82 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/ |
83 |
typedef struct { |
84 |
DWORD cbStruct; |
85 |
DWORD dwFormatTagIndex; |
86 |
DWORD dwFormatTag; |
87 |
DWORD cbFormatSize; |
88 |
DWORD fdwSupport; |
89 |
DWORD cStandardFormats; |
90 |
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; |
91 |
} ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA; |
92 |
typedef struct { |
93 |
DWORD cbStruct; |
94 |
DWORD dwFormatTagIndex; |
95 |
DWORD dwFormatTag; |
96 |
DWORD cbFormatSize; |
97 |
DWORD fdwSupport; |
98 |
DWORD cStandardFormats; |
99 |
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]; |
100 |
} ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW; |
101 |
|
102 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/ |
103 |
typedef struct { |
104 |
DWORD cbStruct; |
105 |
FOURCC fccType; |
106 |
FOURCC fccComp; |
107 |
WORD wMid; |
108 |
WORD wPid; |
109 |
DWORD vdwACM; |
110 |
DWORD vdwDriver; |
111 |
DWORD fdwSupport; |
112 |
DWORD cFormatTags; |
113 |
DWORD cFilterTags; |
114 |
HICON hicon; |
115 |
char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS]; |
116 |
char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS]; |
117 |
char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS]; |
118 |
char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS]; |
119 |
char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS]; |
120 |
} ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA; |
121 |
typedef struct { |
122 |
DWORD cbStruct; |
123 |
FOURCC fccType; |
124 |
FOURCC fccComp; |
125 |
WORD wMid; |
126 |
WORD wPid; |
127 |
DWORD vdwACM; |
128 |
DWORD vdwDriver; |
129 |
DWORD fdwSupport; |
130 |
DWORD cFormatTags; |
131 |
DWORD cFilterTags; |
132 |
HICON hicon; |
133 |
WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS]; |
134 |
WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS]; |
135 |
WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS]; |
136 |
WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS]; |
137 |
WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS]; |
138 |
} ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW; |
139 |
|
140 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/ |
141 |
typedef BOOL (CALLBACK *ACMFORMATENUMCBA) ( |
142 |
HACMDRIVERID hadid, |
143 |
LPACMFORMATDETAILSA pafd, |
144 |
DWORD_PTR dwInstance, |
145 |
DWORD fdwSupport |
146 |
); |
147 |
typedef BOOL (CALLBACK *ACMFORMATENUMCBW) ( |
148 |
HACMDRIVERID hadid, |
149 |
LPACMFORMATDETAILSW pafd, |
150 |
DWORD_PTR dwInstance, |
151 |
DWORD fdwSupport |
152 |
); |
153 |
|
154 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/ |
155 |
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) ( |
156 |
HACMDRIVERID hadid, |
157 |
LPACMFORMATTAGDETAILSA paftd, |
158 |
DWORD_PTR dwInstance, |
159 |
DWORD fdwSupport |
160 |
); |
161 |
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) ( |
162 |
HACMDRIVERID hadid, |
163 |
LPACMFORMATTAGDETAILSW paftd, |
164 |
DWORD_PTR dwInstance, |
165 |
DWORD fdwSupport |
166 |
); |
167 |
|
168 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/ |
169 |
typedef BOOL (CALLBACK *ACMDRIVERENUMCB) ( |
170 |
HACMDRIVERID hadid, |
171 |
DWORD_PTR dwInstance, |
172 |
DWORD fdwSupport |
173 |
); |
174 |
|
175 |
/*and now the functions...*/ |
176 |
|
177 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/ |
178 |
MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen); |
179 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/ |
180 |
MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); |
181 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/ |
182 |
MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); |
183 |
MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); |
184 |
|
185 |
/*msdn.microsoft.com/en-us/library/dd742885%28VS.85%29.aspx*/ |
186 |
MMRESULT WINAPI acmDriverAddA(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd); |
187 |
MMRESULT WINAPI acmDriverAddW(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd); |
188 |
|
189 |
/*msdn.microsoft.com/en-us/library/dd742897%28v=VS.85%29.aspx*/ |
190 |
MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove); |
191 |
|
192 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/ |
193 |
MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose); |
194 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/ |
195 |
MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails); |
196 |
MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails); |
197 |
/*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/ |
198 |
MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); |
199 |
MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum); |
200 |
|
201 |
/*msdn.microsoft.com/en-us/library/dd742922(VS.85).aspx*/ |
202 |
MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric); |
203 |
|
204 |
/*msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx*/ |
205 |
MMRESULT WINAPI acmStreamOpen(LPHACMSTREAM phas, HACMDRIVER had, LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst, LPWAVEFILTER pwfltr, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); |
206 |
|
207 |
/*msdn.microsoft.com/en-us/library/dd742931%28VS.85%29.aspx*/ |
208 |
MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize); |
209 |
|
210 |
/*msdn.microsoft.com/en-us/library/dd742929%28VS.85%29.aspx*/ |
211 |
MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwPrepare); |
212 |
|
213 |
/*msdn.microsoft.com/en-us/library/dd742932%28VS.85%29.aspx*/ |
214 |
MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwUnprepare); |
215 |
|
216 |
/*msdn.microsoft.com/en-us/library/dd742930%28VS.85%29.aspx*/ |
217 |
MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset); |
218 |
|
219 |
/*msdn.microsoft.com/en-us/library/dd742923%28VS.85%29.aspx*/ |
220 |
MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose); |
221 |
|
222 |
/*msdn.microsoft.com/en-us/library/dd742924%28VS.85%29.aspx*/ |
223 |
MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert); |
224 |
|
225 |
#ifdef UNICODE |
226 |
|
227 |
typedef ACMFORMATDETAILSW ACMFORMATDETAILS, *LPACMFORMATDETAILS; |
228 |
typedef ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS; |
229 |
typedef ACMDRIVERDETAILSW ACMDRIVERDETAILS, *LPACMDRIVERDETAILS; |
230 |
typedef ACMFORMATENUMCBW ACMFORMATENUMCB; |
231 |
typedef ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB; |
232 |
#define acmFormatEnum acmFormatEnumW |
233 |
#define acmDriverDetails acmDriverDetailsW |
234 |
#define acmFormatTagEnum acmFormatTagEnumW |
235 |
#define acmDriverAdd acmDriverAddW |
236 |
|
237 |
#else /*ifdef UNICODE*/ |
238 |
|
239 |
typedef ACMFORMATDETAILSA ACMFORMATDETAILS, *LPACMFORMATDETAILS; |
240 |
typedef ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS; |
241 |
typedef ACMDRIVERDETAILSA ACMDRIVERDETAILS, *LPACMDRIVERDETAILS; |
242 |
typedef ACMFORMATENUMCBA ACMFORMATENUMCB; |
243 |
typedef ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB; |
244 |
#define acmFormatEnum acmFormatEnumA |
245 |
#define acmDriverDetails acmDriverDetailsA |
246 |
#define acmFormatTagEnum acmFormatTagEnumA |
247 |
#define acmDriverAdd acmDriverAddA |
248 |
|
249 |
#endif /*ifdef UNICODE*/ |
250 |
|
251 |
#ifdef __cplusplus |
252 |
} |
253 |
#endif |
254 |
|
255 |
#endif |