OSDN Git Service

Redo the filters based on assumptions discussed in mingw-dvlpr list.
[mingw/mingw-org-wsl.git] / include / msacm.h
1 /**
2  * @file msacm.h
3  * @copy 2012 MinGW.org project
4  *
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:
11  * 
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
14  * Software.
15  * 
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.
23  */
24 #ifndef _MSACM_H
25 #define _MSACM_H
26 #pragma GCC system_header
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
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;
44
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
50
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
55
56 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatdetails_str.asp*/
57 typedef struct {
58         DWORD          cbStruct;
59         DWORD          dwFormatIndex;
60         DWORD          dwFormatTag;
61         DWORD          fdwSupport;
62         LPWAVEFORMATEX pwfx;
63         DWORD          cbwfx;
64         char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
65 } ACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
66 typedef struct {
67         DWORD          cbStruct;
68         DWORD          dwFormatIndex;
69         DWORD          dwFormatTag;
70         DWORD          fdwSupport;
71         LPWAVEFORMATEX pwfx;
72         DWORD          cbwfx;
73         WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
74 } ACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
75
76 /*msdn.microsoft.com/en-us/library/dd742926%28VS.85%29.aspx*/
77 typedef struct {
78   DWORD     cbStruct;
79   DWORD     fdwStatus;
80   DWORD_PTR dwUser;
81   LPBYTE    pbSrc;
82   DWORD     cbSrcLength;
83   DWORD     cbSrcLengthUsed;
84   DWORD_PTR dwSrcUser;
85   LPBYTE    pbDst;
86   DWORD     cbDstLength;
87   DWORD     cbDstLengthUsed;
88   DWORD_PTR dwDstUser;
89   DWORD     dwReservedDriver[10];
90 } ACMSTREAMHEADER, *LPACMSTREAMHEADER;
91
92 /*msdn.microsoft.com/en-us/library/dd757711%28v=VS.85%29.aspx*/
93 typedef struct {
94   DWORD cbStruct;
95   DWORD dwFilterTag;
96   DWORD fdwFilter;
97   DWORD dwReserved[5];
98 } WAVEFILTER, *LPWAVEFILTER;
99
100 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagdetails_str.asp*/
101 typedef struct {
102         DWORD cbStruct;
103         DWORD dwFormatTagIndex;
104         DWORD dwFormatTag;
105         DWORD cbFormatSize;
106         DWORD fdwSupport;
107         DWORD cStandardFormats;
108         char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
109 } ACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
110 typedef struct {
111         DWORD cbStruct;
112         DWORD dwFormatTagIndex;
113         DWORD dwFormatTag;
114         DWORD cbFormatSize;
115         DWORD fdwSupport;
116         DWORD cStandardFormats;
117         WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
118 } ACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
119
120 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverdetails_str.asp*/
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         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;
139 typedef struct {
140         DWORD  cbStruct;
141         FOURCC fccType;
142         FOURCC fccComp;
143         WORD   wMid;
144         WORD   wPid;
145         DWORD  vdwACM;
146         DWORD  vdwDriver;
147         DWORD  fdwSupport;
148         DWORD  cFormatTags;
149         DWORD  cFilterTags;
150         HICON  hicon;
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;
157
158 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformatenumcallback.asp*/
159 typedef BOOL (CALLBACK *ACMFORMATENUMCBA) (
160         HACMDRIVERID        hadid,
161         LPACMFORMATDETAILSA pafd,
162         DWORD_PTR           dwInstance,
163         DWORD               fdwSupport
164 );
165 typedef BOOL (CALLBACK *ACMFORMATENUMCBW) (
166         HACMDRIVERID        hadid,
167         LPACMFORMATDETAILSW pafd,
168         DWORD_PTR           dwInstance,
169         DWORD               fdwSupport
170 );
171
172 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmformattagenumcallback.asp*/
173 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA) (
174         HACMDRIVERID           hadid,
175         LPACMFORMATTAGDETAILSA paftd,
176         DWORD_PTR              dwInstance,
177         DWORD                  fdwSupport
178 );
179 typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW) (
180         HACMDRIVERID           hadid,
181         LPACMFORMATTAGDETAILSW paftd,
182         DWORD_PTR              dwInstance,
183         DWORD                  fdwSupport
184 );
185
186 /*msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_acmdriverenumcallback.asp*/
187 typedef BOOL (CALLBACK *ACMDRIVERENUMCB) (
188         HACMDRIVERID hadid,
189         DWORD_PTR    dwInstance,
190         DWORD        fdwSupport
191 );
192
193 /*and now the functions...*/
194
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);
202
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);
206
207 /*msdn.microsoft.com/en-us/library/dd742897%28v=VS.85%29.aspx*/
208 MMRESULT WINAPI acmDriverRemove(HACMDRIVERID hadid, DWORD fdwRemove);
209
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);
218
219 /*msdn.microsoft.com/en-us/library/dd742922(VS.85).aspx*/
220 MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric);
221
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);
224
225 /*msdn.microsoft.com/en-us/library/dd742931%28VS.85%29.aspx*/
226 MMRESULT WINAPI acmStreamSize(HACMSTREAM has, DWORD cbInput, LPDWORD pdwOutputBytes, DWORD fdwSize);
227
228 /*msdn.microsoft.com/en-us/library/dd742929%28VS.85%29.aspx*/
229 MMRESULT WINAPI acmStreamPrepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwPrepare);
230
231 /*msdn.microsoft.com/en-us/library/dd742932%28VS.85%29.aspx*/
232 MMRESULT WINAPI acmStreamUnprepareHeader(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwUnprepare);
233
234 /*msdn.microsoft.com/en-us/library/dd742930%28VS.85%29.aspx*/
235 MMRESULT WINAPI acmStreamReset(HACMSTREAM has, DWORD fdwReset);
236
237 /*msdn.microsoft.com/en-us/library/dd742923%28VS.85%29.aspx*/
238 MMRESULT WINAPI acmStreamClose(HACMSTREAM has, DWORD fdwClose);
239
240 /*msdn.microsoft.com/en-us/library/dd742924%28VS.85%29.aspx*/
241 MMRESULT WINAPI acmStreamConvert(HACMSTREAM has, LPACMSTREAMHEADER pash, DWORD fdwConvert);
242
243 #ifdef UNICODE
244
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
254
255 #else /*ifdef UNICODE*/
256
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
266
267 #endif /*ifdef UNICODE*/
268
269 #ifdef __cplusplus
270 }
271 #endif
272
273 #endif