Add <string.h> to files that needed it.
[wine] / dlls / msacm / wineacm.h
1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
2 #ifndef __WINE_WINEACM_H
3 #define __WINE_WINEACM_H
4
5 #include "wine/windef16.h"
6 #include "wine/mmsystem16.h"
7
8 /***********************************************************************
9  * Win16 definitions
10  */
11 typedef BOOL16 CALLBACK (*ACMDRIVERENUMCB16)(
12   HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
13 );
14 typedef UINT CALLBACK (*ACMFILTERCHOOSEHOOKPROC16)(
15   HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
16 );
17 typedef UINT16 CALLBACK (*ACMFORMATCHOOSEHOOKPROC16)(
18   HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
19 );
20
21 typedef struct _ACMDRIVERDETAILS16
22 {
23   DWORD   cbStruct;
24
25   FOURCC  fccType;
26   FOURCC  fccComp;
27
28   WORD    wMid;
29   WORD    wPid;
30
31   DWORD   vdwACM;
32   DWORD   vdwDriver;
33
34   DWORD   fdwSupport;
35   DWORD   cFormatTags;
36   DWORD   cFilterTags;
37
38   HICON16 hicon;
39
40   CHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
41   CHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
42   CHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
43   CHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
44   CHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
45 } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
46
47 typedef struct _ACMFILTERCHOOSE16
48 {
49   DWORD          cbStruct;
50   DWORD          fdwStyle;
51
52   HWND16         hwndOwner;
53
54   LPWAVEFILTER   pwfltr;
55   DWORD          cbwfltr;
56
57   LPCSTR         pszTitle;
58
59   char           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
60   char           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
61   LPSTR          pszName;
62   DWORD          cchName;
63
64   DWORD          fdwEnum;
65   LPWAVEFILTER   pwfltrEnum;
66     
67   HINSTANCE16    hInstance;
68   LPCSTR         pszTemplateName;
69   LPARAM         lCustData;
70   ACMFILTERCHOOSEHOOKPROC16 pfnHook;
71 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
72
73 typedef struct _ACMFILTERDETAILS16
74 {
75   DWORD          cbStruct;
76   DWORD          dwFilterIndex;
77   DWORD          dwFilterTag;
78   DWORD          fdwSupport;
79   LPWAVEFILTER   pwfltr;
80   DWORD          cbwfltr;
81   CHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
82 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
83
84 typedef struct _ACMFILTERTAGDETAILS16
85 {
86   DWORD cbStruct;
87   DWORD dwFilterTagIndex;
88   DWORD dwFilterTag;
89   DWORD cbFilterSize;
90   DWORD fdwSupport;
91   DWORD cStandardFilters;
92   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
93 } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
94
95 typedef struct _ACMFORMATCHOOSE16
96 {
97   DWORD            cbStruct;
98   DWORD            fdwStyle;
99     
100   HWND16           hwndOwner;
101
102   LPWAVEFORMATEX   pwfx;
103   DWORD            cbwfx;
104   LPCSTR           pszTitle;
105     
106   CHAR             szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
107   CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
108
109   LPSTR            pszName;
110   DWORD            cchName;
111
112   DWORD            fdwEnum;
113   LPWAVEFORMATEX   pwfxEnum;
114     
115   HINSTANCE16      hInstance;
116   LPCSTR           pszTemplateName;
117   LPARAM           lCustData;
118   ACMFORMATCHOOSEHOOKPROC16 pfnHook;
119 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
120
121 typedef struct _ACMFORMATDETAILS16
122 {
123     DWORD            cbStruct;
124     DWORD            dwFormatIndex;
125     DWORD            dwFormatTag;
126     DWORD            fdwSupport;
127     LPWAVEFORMATEX   pwfx;
128     DWORD            cbwfx;
129     CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
130 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
131
132 typedef struct _ACMFORMATTAGDETAILS16
133 {
134   DWORD cbStruct;
135   DWORD dwFormatTagIndex;
136   DWORD dwFormatTag;
137   DWORD cbFormatSize;
138   DWORD fdwSupport;
139   DWORD cStandardFormats;
140   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
141 } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
142
143 typedef ACMSTREAMHEADER ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16;
144
145 typedef BOOL16 CALLBACK (*ACMFILTERENUMCB16)(
146  HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
147  DWORD dwInstance, DWORD fdwSupport
148 );
149
150 typedef BOOL16 CALLBACK (*ACMFILTERTAGENUMCB16)(
151   HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
152   DWORD dwInstance, DWORD fdwSupport
153 );
154
155 typedef BOOL16 CALLBACK (*ACMFORMATENUMCB16)(
156   HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
157   DWORD dwInstance, DWORD fdwSupport
158 );
159
160 typedef BOOL16 CALLBACK (*ACMFORMATTAGENUMCB16)(
161   HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
162   DWORD dwInstance, DWORD fdwSupport
163 );
164
165 /***********************************************************************
166  * Functions - Win16
167  */
168
169 DWORD WINAPI acmGetVersion16(
170 );
171 MMRESULT16 WINAPI acmMetrics16(
172   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
173 );
174 MMRESULT16 WINAPI acmDriverEnum16(
175   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
176 );
177 MMRESULT16 WINAPI acmDriverDetails16(
178   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
179 );
180 MMRESULT16 WINAPI acmDriverAdd16(
181   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
182   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
183 );
184 MMRESULT16 WINAPI acmDriverRemove16(
185   HACMDRIVERID16 hadid, DWORD fdwRemove
186 );
187 MMRESULT16 WINAPI acmDriverOpen16(
188   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
189 );
190 MMRESULT16 WINAPI acmDriverClose16(
191   HACMDRIVER16 had, DWORD fdwClose
192 );
193 LRESULT WINAPI acmDriverMessage16(
194   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
195 );
196 MMRESULT16 WINAPI acmDriverID16(
197   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
198 );
199 MMRESULT16 WINAPI acmDriverPriority16(
200  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
201 );
202 MMRESULT16 WINAPI acmFormatTagDetails16(
203   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
204 );
205 MMRESULT16 WINAPI acmFormatTagEnum16(
206   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
207   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
208 );
209 MMRESULT16 WINAPI acmFormatChoose16(
210   LPACMFORMATCHOOSE16 pafmtc
211 );
212 MMRESULT16 WINAPI acmFormatDetails16(
213   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
214 );
215 MMRESULT16 WINAPI acmFormatEnum16(
216   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
217   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
218 );
219 MMRESULT16 WINAPI acmFormatSuggest16(
220   HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc, 
221   LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
222 );
223 MMRESULT16 WINAPI acmFilterTagDetails16(
224   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
225 );
226 MMRESULT16 WINAPI acmFilterTagEnum16(
227   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
228   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
229 );
230 MMRESULT16 WINAPI acmFilterChoose16(
231   LPACMFILTERCHOOSE16 pafltrc
232 );
233 MMRESULT16 WINAPI acmFilterDetails16(
234   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
235 );
236 MMRESULT16 WINAPI acmFilterEnum16(
237   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
238   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
239 );
240 MMRESULT16 WINAPI acmStreamOpen16(
241   LPHACMSTREAM16 phas, HACMDRIVER16 had,
242   LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst,
243   LPWAVEFILTER pwfltr, DWORD dwCallback,
244   DWORD dwInstance, DWORD fdwOpen
245 );
246 MMRESULT16 WINAPI acmStreamClose16(
247   HACMSTREAM16 has, DWORD fdwClose
248 );
249 MMRESULT16 WINAPI acmStreamSize16(
250   HACMSTREAM16 has, DWORD cbInput, 
251   LPDWORD pdwOutputBytes, DWORD fdwSize
252 );
253 MMRESULT16 WINAPI acmStreamConvert16(
254   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
255 );
256 MMRESULT16 WINAPI acmStreamReset16(
257   HACMSTREAM16 has, DWORD fdwReset
258 );
259 MMRESULT16 WINAPI acmStreamPrepareHeader16(
260   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
261 );
262 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
263   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
264 );
265
266
267 /***********************************************************************
268  * Wine specific - Win32
269  */
270 typedef struct _WINE_ACMDRIVERID *PWINE_ACMDRIVERID;
271 typedef struct _WINE_ACMDRIVER   *PWINE_ACMDRIVER;
272
273 #define WINE_ACMOBJ_DONTCARE    0x5EED0000
274 #define WINE_ACMOBJ_DRIVERID    0x5EED0001
275 #define WINE_ACMOBJ_DRIVER      0x5EED0002
276 #define WINE_ACMOBJ_STREAM      0x5EED0003
277
278 typedef struct _WINE_ACMOBJ
279 {
280     DWORD               dwType;
281     PWINE_ACMDRIVERID   pACMDriverID;
282 } WINE_ACMOBJ, *PWINE_ACMOBJ;
283
284 typedef struct _WINE_ACMDRIVER
285 {
286     WINE_ACMOBJ         obj;
287     HDRVR               hDrvr;
288     PWINE_ACMDRIVER     pNextACMDriver;
289 } WINE_ACMDRIVER;
290
291 typedef struct _WINE_ACMSTREAM
292 {
293     WINE_ACMOBJ         obj;
294     PWINE_ACMDRIVER     pDrv;
295     ACMDRVSTREAMINSTANCE drvInst;
296     HACMDRIVER          hAcmDriver;
297 } WINE_ACMSTREAM, *PWINE_ACMSTREAM;
298
299 typedef struct _WINE_ACMDRIVERID
300 {
301     WINE_ACMOBJ         obj;
302     LPSTR               pszDriverAlias;
303     LPSTR               pszFileName;
304     HINSTANCE           hInstModule;          /* NULL if global */
305     DWORD               dwProcessID;          /* ID of process which installed a local driver */
306     BOOL                bEnabled;
307     PWINE_ACMDRIVER     pACMDriverList;
308     PWINE_ACMDRIVERID   pNextACMDriverID;
309     PWINE_ACMDRIVERID   pPrevACMDriverID;
310 } WINE_ACMDRIVERID;
311
312 /* From internal.c */
313 extern HANDLE MSACM_hHeap;
314 extern PWINE_ACMDRIVERID MSACM_pFirstACMDriverID;
315 extern PWINE_ACMDRIVERID MSACM_pLastACMDriverID;
316 extern PWINE_ACMDRIVERID MSACM_RegisterDriver(LPSTR pszDriverAlias, LPSTR pszFileName,
317                                               HINSTANCE hinstModule);
318 extern void MSACM_RegisterAllDrivers(void);
319 extern PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p);
320 extern void MSACM_UnregisterAllDrivers(void);
321 extern PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID);
322 extern PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver);
323 extern PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj, DWORD type);
324
325 extern MMRESULT MSACM_Message(HACMDRIVER, UINT, LPARAM, LPARAM);
326
327 /* From msacm32.c */
328 extern HINSTANCE MSACM_hInstance32;
329
330 /* From pcmcnvtr.c */
331 LRESULT CALLBACK        PCM_DriverProc(DWORD dwDevID, HDRVR hDriv, UINT wMsg, 
332                                        LPARAM dwParam1, LPARAM dwParam2);
333
334 /* Dialog box templates */
335 #include "msacmdlg.h"
336
337 #endif /* __WINE_WINEACM_H */