3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
32 DECLARE_HANDLE(HACMDRIVERID);
33 typedef HACMDRIVERID *PHACMDRIVERID;
34 typedef HACMDRIVERID *LPHACMDRIVERID;
35 DECLARE_HANDLE(HACMDRIVER);
36 typedef HACMDRIVER *PHACMDRIVER;
37 typedef HACMDRIVER *LPHACMDRIVER;
38 DECLARE_HANDLE(HACMSTREAM);
39 typedef HACMSTREAM *PHACMSTREAM;
40 typedef HACMSTREAM *LPHACMSTREAM;
41 DECLARE_HANDLE(HACMOBJ);
42 typedef HACMOBJ *PHACMOBJ;
43 typedef HACMOBJ *LPHACMOBJ;
45 /*found through experimentation*/
46 #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
47 #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
48 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
49 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
51 /*I don't know the right values for these macros*/
52 #define ACMFORMATDETAILS_FORMAT_CHARS 256
53 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256
54 #define ACMDRIVERDETAILS_FEATURES_CHARS 256
56 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/
64 char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
65 } ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
73 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
74 } ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
76 /*msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx*/
83 DWORD cbSrcLengthUsed;
87 DWORD cbDstLengthUsed;
89 DWORD dwReservedDriver[10];
90 } ACMSTREAMHEADER, *LPACMSTREAMHEADER;
92 /*msdn.microsoft.com/en-us/library/dd757711%28v=VS.85%29.aspx*/
98 } WAVEFILTER, *LPWAVEFILTER;
100 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/
103 DWORD dwFormatTagIndex;
107 DWORD cStandardFormats;
108 char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
109 } ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
112 DWORD dwFormatTagIndex;
116 DWORD cStandardFormats;
117 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
118 } ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
120 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/
133 char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
134 char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
135 char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
136 char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
137 char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
138 } ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
151 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
152 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
153 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
154 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
155 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
156 } ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
158 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/
159 typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (
161 LPACMFORMATDETAILSA pafd,
162 DWORD_PTR dwInstance,
165 typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (
167 LPACMFORMATDETAILSW pafd,
168 DWORD_PTR dwInstance,
172 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/
173 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (
175 LPACMFORMATTAGDETAILSA paftd,
176 DWORD_PTR dwInstance,
179 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (
181 LPACMFORMATTAGDETAILSW paftd,
182 DWORD_PTR dwInstance,
186 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/
187 typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (
189 DWORD_PTR dwInstance,
193 /*and now the functions...*/
195 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/
196 MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen);
197 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/
198 MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
199 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/
200 MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
201 MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
203 /*msdn.microsoft.com/en-us/library/dd742885%28VS.85%29.aspx*/
204 MMRESULT WINAPI acmDriverAddA(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
205 MMRESULT WINAPI acmDriverAddW(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
207 /*msdn.microsoft.com/en-us/library/dd742897%28v=VS.85%29.aspx*/
208 MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove);
210 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/
211 MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose);
212 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/
213 MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails);
214 MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails);
215 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/
216 MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
217 MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
219 /*msdn.microsoft.com/en-us/library/dd742922(VS.85).aspx*/
220 MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric);
222 /*msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx*/
223 MMRESULT WINAPI acmStreamOpen(LPHACMSTREAM phas, HACMDRIVER had, LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst, LPWAVEFILTER pwfltr, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
225 /*msdn.microsoft.com/en-us/library/dd742931%28VS.85%29.aspx*/
226 MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize);
228 /*msdn.microsoft.com/en-us/library/dd742929%28VS.85%29.aspx*/
229 MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwPrepare);
231 /*msdn.microsoft.com/en-us/library/dd742932%28VS.85%29.aspx*/
232 MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwUnprepare);
234 /*msdn.microsoft.com/en-us/library/dd742930%28VS.85%29.aspx*/
235 MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset);
237 /*msdn.microsoft.com/en-us/library/dd742923%28VS.85%29.aspx*/
238 MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose);
240 /*msdn.microsoft.com/en-us/library/dd742924%28VS.85%29.aspx*/
241 MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert);
245 typedef ACMFORMATDETAILSW ACMFORMATDETAILS, *LPACMFORMATDETAILS;
246 typedef ACMFORMATTAGDETAILSW ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
247 typedef ACMDRIVERDETAILSW ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
248 typedef ACMFORMATENUMCBW ACMFORMATENUMCB;
249 typedef ACMFORMATTAGENUMCBW ACMFORMATTAGENUMCB;
250 #define acmFormatEnum acmFormatEnumW
251 #define acmDriverDetails acmDriverDetailsW
252 #define acmFormatTagEnum acmFormatTagEnumW
253 #define acmDriverAdd acmDriverAddW
255 #else /*ifdef UNICODE*/
257 typedef ACMFORMATDETAILSA ACMFORMATDETAILS, *LPACMFORMATDETAILS;
258 typedef ACMFORMATTAGDETAILSA ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
259 typedef ACMDRIVERDETAILSA ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
260 typedef ACMFORMATENUMCBA ACMFORMATENUMCB;
261 typedef ACMFORMATTAGENUMCBA ACMFORMATTAGENUMCB;
262 #define acmFormatEnum acmFormatEnumA
263 #define acmDriverDetails acmDriverDetailsA
264 #define acmFormatTagEnum acmFormatTagEnumA
265 #define acmDriverAdd acmDriverAddA
267 #endif /*ifdef UNICODE*/