3 * Copyright 2012, 2013 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
33 DECLARE_HANDLE(HACMDRIVERID);
34 typedef HACMDRIVERID *PHACMDRIVERID;
35 typedef HACMDRIVERID *LPHACMDRIVERID;
36 DECLARE_HANDLE(HACMDRIVER);
37 typedef HACMDRIVER *PHACMDRIVER;
38 typedef HACMDRIVER *LPHACMDRIVER;
39 DECLARE_HANDLE(HACMSTREAM);
40 typedef HACMSTREAM *PHACMSTREAM;
41 typedef HACMSTREAM *LPHACMSTREAM;
42 DECLARE_HANDLE(HACMOBJ);
43 typedef HACMOBJ *PHACMOBJ;
44 typedef HACMOBJ *LPHACMOBJ;
46 /*found through experimentation*/
47 #define ACMDRIVERDETAILS_SHORTNAME_CHARS 32
48 #define ACMDRIVERDETAILS_LONGNAME_CHARS 128
49 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS 80
50 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
52 /*I don't know the right values for these macros*/
53 #define ACMFORMATDETAILS_FORMAT_CHARS 256
54 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 256
55 #define ACMDRIVERDETAILS_FEATURES_CHARS 256
57 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/
65 char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
66 } ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
74 WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
75 } ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
77 /*msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx*/
84 DWORD cbSrcLengthUsed;
88 DWORD cbDstLengthUsed;
90 DWORD dwReservedDriver[10];
91 } ACMSTREAMHEADER, *LPACMSTREAMHEADER;
93 /*msdn.microsoft.com/en-us/library/dd757711%28v=VS.85%29.aspx*/
99 } WAVEFILTER, *LPWAVEFILTER;
101 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/
104 DWORD dwFormatTagIndex;
108 DWORD cStandardFormats;
109 char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
110 } ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
113 DWORD dwFormatTagIndex;
117 DWORD cStandardFormats;
118 WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
119 } ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
121 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/
134 char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
135 char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
136 char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
137 char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
138 char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
139 } ACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
152 WCHAR szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
153 WCHAR szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
154 WCHAR szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
155 WCHAR szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
156 WCHAR szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
157 } ACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
159 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/
160 typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (
162 LPACMFORMATDETAILSA pafd,
163 DWORD_PTR dwInstance,
166 typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (
168 LPACMFORMATDETAILSW pafd,
169 DWORD_PTR dwInstance,
173 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/
174 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (
176 LPACMFORMATTAGDETAILSA paftd,
177 DWORD_PTR dwInstance,
180 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (
182 LPACMFORMATTAGDETAILSW paftd,
183 DWORD_PTR dwInstance,
187 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/
188 typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (
190 DWORD_PTR dwInstance,
194 /*and now the functions...*/
196 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriveropen.asp*/
197 MMRESULT WINAPI acmDriverOpen(LPHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen);
198 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenum.asp*/
199 MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
200 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenum.asp*/
201 MMRESULT WINAPI acmFormatEnumA(HACMDRIVER had, LPACMFORMATDETAILSA pafd, ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
202 MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, LPACMFORMATDETAILSW pafd, ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
204 /*msdn.microsoft.com/en-us/library/dd742885%28VS.85%29.aspx*/
205 MMRESULT WINAPI acmDriverAddA(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
206 MMRESULT WINAPI acmDriverAddW(LPHACMDRIVERID phadid, HINSTANCE hinstModule, LPARAM lParam, DWORD dwPriority, DWORD fdwAdd);
208 /*msdn.microsoft.com/en-us/library/dd742897%28v=VS.85%29.aspx*/
209 MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove);
211 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverclose.asp*/
212 MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose);
213 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails.asp*/
214 MMRESULT WINAPI acmDriverDetailsA(HACMDRIVERID hadid, LPACMDRIVERDETAILSA padd, DWORD fdwDetails);
215 MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, LPACMDRIVERDETAILSW padd, DWORD fdwDetails);
216 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenum.asp*/
217 MMRESULT WINAPI acmFormatTagEnumA(HACMDRIVER had, LPACMFORMATTAGDETAILSA paftd, ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
218 MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, LPACMFORMATTAGDETAILSW paftd, ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum);
220 /*msdn.microsoft.com/en-us/library/dd742922(VS.85).aspx*/
221 MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric);
223 /*msdn.microsoft.com/en-us/library/dd742928%28VS.85%29.aspx*/
224 MMRESULT WINAPI acmStreamOpen(LPHACMSTREAM phas, HACMDRIVER had, LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst, LPWAVEFILTER pwfltr, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
226 /*msdn.microsoft.com/en-us/library/dd742931%28VS.85%29.aspx*/
227 MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize);
229 /*msdn.microsoft.com/en-us/library/dd742929%28VS.85%29.aspx*/
230 MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwPrepare);
232 /*msdn.microsoft.com/en-us/library/dd742932%28VS.85%29.aspx*/
233 MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwUnprepare);
235 /*msdn.microsoft.com/en-us/library/dd742930%28VS.85%29.aspx*/
236 MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset);
238 /*msdn.microsoft.com/en-us/library/dd742923%28VS.85%29.aspx*/
239 MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose);
241 /*msdn.microsoft.com/en-us/library/dd742924%28VS.85%29.aspx*/
242 MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert);
244 typedef __AW(ACMFORMATDETAILS) ACMFORMATDETAILS, *LPACMFORMATDETAILS;
245 typedef __AW(ACMFORMATTAGDETAILS) ACMFORMATTAGDETAILS, *LPACMFORMATTAGDETAILS;
246 typedef __AW(ACMDRIVERDETAILS) ACMDRIVERDETAILS, *LPACMDRIVERDETAILS;
247 typedef __AW(ACMFORMATENUMCB) ACMFORMATENUMCB;
248 typedef __AW(ACMFORMATTAGENUMCB) ACMFORMATTAGENUMCB;
249 #define acmFormatEnum __AW(acmFormatEnum)
250 #define acmDriverDetails __AW(acmDriverDetails)
251 #define acmFormatTagEnum __AW(acmFormatTagEnum)
252 #define acmDriverAdd __AW(acmDriverAdd)