ReactOS  0.4.13-dev-464-g6b95727
filter.c
Go to the documentation of this file.
1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
2 
3 /*
4  * MSACM32 library
5  *
6  * Copyright 1998 Patrik Stridvall
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21  */
22 
23 #include <stdarg.h>
24 #include <string.h>
25 #include "windef.h"
26 #include "winbase.h"
27 #include "winnls.h"
28 #include "winerror.h"
29 #include "mmsystem.h"
30 #define NOBITMAP
31 #include "mmreg.h"
32 #include "msacm.h"
33 #include "msacmdrv.h"
34 #include "wineacm.h"
35 #include "wine/debug.h"
36 
38 
39 /***********************************************************************
40  * acmFilterChooseA (MSACM32.@)
41  */
43 {
44  FIXME("(%p): stub\n", pafltrc);
46  return MMSYSERR_ERROR;
47 }
48 
49 /***********************************************************************
50  * acmFilterChooseW (MSACM32.@)
51  */
53 {
54  FIXME("(%p): stub\n", pafltrc);
56  return MMSYSERR_ERROR;
57 }
58 
59 /***********************************************************************
60  * acmFilterDetailsA (MSACM32.@)
61  */
63  DWORD fdwDetails)
64 {
65  ACMFILTERDETAILSW afdw;
66  MMRESULT mmr;
67 
68  memset(&afdw, 0, sizeof(afdw));
69  afdw.cbStruct = sizeof(afdw);
70  afdw.dwFilterIndex = pafd->dwFilterIndex;
71  afdw.dwFilterTag = pafd->dwFilterTag;
72  afdw.pwfltr = pafd->pwfltr;
73  afdw.cbwfltr = pafd->cbwfltr;
74 
75  mmr = acmFilterDetailsW(had, &afdw, fdwDetails);
76  if (mmr == MMSYSERR_NOERROR) {
77  pafd->dwFilterTag = afdw.dwFilterTag;
78  pafd->fdwSupport = afdw.fdwSupport;
79  WideCharToMultiByte( CP_ACP, 0, afdw.szFilter, -1, pafd->szFilter,
80  sizeof(pafd->szFilter), NULL, NULL );
81  }
82  return mmr;
83 }
84 
85 /***********************************************************************
86  * acmFilterDetailsW (MSACM32.@)
87  */
89  DWORD fdwDetails)
90 {
91  MMRESULT mmr;
93 
94  TRACE("(%p, %p, %d)\n", had, pafd, fdwDetails);
95 
96  memset(&aftd, 0, sizeof(aftd));
97  aftd.cbStruct = sizeof(aftd);
98 
99  if (pafd->cbStruct < sizeof(*pafd)) return MMSYSERR_INVALPARAM;
100 
101  switch (fdwDetails) {
103  if (pafd->dwFilterTag != pafd->pwfltr->dwFilterTag) {
104  mmr = MMSYSERR_INVALPARAM;
105  break;
106  }
107  if (had == NULL) {
108  PWINE_ACMDRIVERID padid;
109 
110  mmr = ACMERR_NOTPOSSIBLE;
111  for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
112  /* should check for codec only */
114  acmDriverOpen(&had, (HACMDRIVERID)padid, 0) == 0) {
116  (LPARAM)pafd, (LPARAM)fdwDetails);
117  acmDriverClose(had, 0);
118  if (mmr == MMSYSERR_NOERROR) break;
119  }
120  }
121  } else {
122  mmr = MSACM_Message(had, ACMDM_FILTER_DETAILS, (LPARAM)pafd, fdwDetails);
123  }
124  break;
126  /* should check pafd->dwFilterIndex < aftd->cStandardFilters */
127  mmr = MSACM_Message(had, ACMDM_FILTER_DETAILS, (LPARAM)pafd, fdwDetails);
128  break;
129  default:
130  WARN("Unknown fdwDetails %08x\n", fdwDetails);
131  mmr = MMSYSERR_INVALFLAG;
132  break;
133  }
134 
135  TRACE("=> %d\n", mmr);
136  return mmr;
137 }
138 
143 };
144 
145 static BOOL CALLBACK MSACM_FilterEnumCallbackWtoA(HACMDRIVERID hadid,
146  PACMFILTERDETAILSW pafdw,
147  DWORD_PTR dwInstance,
148  DWORD fdwSupport)
149 {
150  struct MSACM_FilterEnumWtoA_Instance* pafei;
151 
152  pafei = (struct MSACM_FilterEnumWtoA_Instance*)dwInstance;
153 
154  pafei->pafda->dwFilterIndex = pafdw->dwFilterIndex;
155  pafei->pafda->dwFilterTag = pafdw->dwFilterTag;
156  pafei->pafda->fdwSupport = pafdw->fdwSupport;
157  WideCharToMultiByte( CP_ACP, 0, pafdw->szFilter, -1, pafei->pafda->szFilter,
158  sizeof(pafei->pafda->szFilter), NULL, NULL );
159 
160  return (pafei->fnCallback)(hadid, pafei->pafda,
161  pafei->dwInstance, fdwSupport);
162 }
163 
164 /***********************************************************************
165  * acmFilterEnumA (MSACM32.@)
166  */
169  DWORD_PTR dwInstance, DWORD fdwEnum)
170 {
171  ACMFILTERDETAILSW afdw;
172  struct MSACM_FilterEnumWtoA_Instance afei;
173 
174  memset(&afdw, 0, sizeof(afdw));
175  afdw.cbStruct = sizeof(afdw);
177  afdw.dwFilterTag = pafda->dwFilterTag;
178  afdw.pwfltr = pafda->pwfltr;
179  afdw.cbwfltr = pafda->cbwfltr;
180 
181  afei.pafda = pafda;
182  afei.dwInstance = dwInstance;
183  afei.fnCallback = fnCallback;
184 
185  return acmFilterEnumW(had, &afdw, MSACM_FilterEnumCallbackWtoA,
186  (DWORD_PTR)&afei, fdwEnum);
187 }
188 
189 static BOOL MSACM_FilterEnumHelper(PWINE_ACMDRIVERID padid, HACMDRIVER had,
190  PACMFILTERDETAILSW pafd,
192  DWORD_PTR dwInstance, DWORD fdwEnum)
193 {
195  unsigned int i, j;
196 
197  for (i = 0; i < padid->cFilterTags; i++) {
198  memset(&aftd, 0, sizeof(aftd));
199  aftd.cbStruct = sizeof(aftd);
200  aftd.dwFilterTagIndex = i;
202  continue;
203 
204  if ((fdwEnum & ACM_FILTERENUMF_DWFILTERTAG) &&
205  aftd.dwFilterTag != pafd->pwfltr->dwFilterTag)
206  continue;
207 
208  for (j = 0; j < aftd.cStandardFilters; j++) {
209  pafd->dwFilterIndex = j;
210  pafd->dwFilterTag = aftd.dwFilterTag;
212  continue;
213 
214  if (!(fnCallback)((HACMDRIVERID)padid, pafd, dwInstance, padid->fdwSupport))
215  return FALSE;
216  }
217  }
218  return TRUE;
219 }
220 
221 /***********************************************************************
222  * acmFilterEnumW (MSACM32.@)
223  */
226  DWORD_PTR dwInstance, DWORD fdwEnum)
227 {
228  PWINE_ACMDRIVERID padid;
229  BOOL ret;
230 
231  TRACE("(%p, %p, %p, %ld, %d)\n",
232  had, pafd, fnCallback, dwInstance, fdwEnum);
233 
234  if (pafd->cbStruct < sizeof(*pafd)) return MMSYSERR_INVALPARAM;
235 
236  if (fdwEnum & ~(ACM_FILTERENUMF_DWFILTERTAG))
237  FIXME("Unsupported fdwEnum values\n");
238 
239  if (had) {
240  HACMDRIVERID hadid;
241 
242  if (acmDriverID((HACMOBJ)had, &hadid, 0) != MMSYSERR_NOERROR)
243  return MMSYSERR_INVALHANDLE;
244  MSACM_FilterEnumHelper(MSACM_GetDriverID(hadid), had, pafd,
245  fnCallback, dwInstance, fdwEnum);
246  return MMSYSERR_NOERROR;
247  }
248  for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
249  /* should check for codec only */
251  acmDriverOpen(&had, (HACMDRIVERID)padid, 0) != MMSYSERR_NOERROR)
252  continue;
253  ret = MSACM_FilterEnumHelper(padid, had, pafd,
254  fnCallback, dwInstance, fdwEnum);
255  acmDriverClose(had, 0);
256  if (!ret) break;
257  }
258  return MMSYSERR_NOERROR;
259 }
260 
261 /***********************************************************************
262  * acmFilterTagDetailsA (MSACM32.@)
263  */
265  DWORD fdwDetails)
266 {
267  ACMFILTERTAGDETAILSW aftdw;
268  MMRESULT mmr;
269 
270  memset(&aftdw, 0, sizeof(aftdw));
271  aftdw.cbStruct = sizeof(aftdw);
272  aftdw.dwFilterTagIndex = paftda->dwFilterTagIndex;
273  aftdw.dwFilterTag = paftda->dwFilterTag;
274 
275  mmr = acmFilterTagDetailsW(had, &aftdw, fdwDetails);
276  if (mmr == MMSYSERR_NOERROR) {
277  paftda->dwFilterTag = aftdw.dwFilterTag;
278  paftda->dwFilterTagIndex = aftdw.dwFilterTagIndex;
279  paftda->cbFilterSize = aftdw.cbFilterSize;
280  paftda->fdwSupport = aftdw.fdwSupport;
281  paftda->cStandardFilters = aftdw.cStandardFilters;
282  WideCharToMultiByte( CP_ACP, 0, aftdw.szFilterTag, -1, paftda->szFilterTag,
283  sizeof(paftda->szFilterTag), NULL, NULL );
284  }
285  return mmr;
286 }
287 
288 /***********************************************************************
289  * acmFilterTagDetailsW (MSACM32.@)
290  */
292  DWORD fdwDetails)
293 {
294  PWINE_ACMDRIVERID padid;
295  MMRESULT mmr;
296 
297  TRACE("(%p, %p, %d)\n", had, paftd, fdwDetails);
298 
301  return MMSYSERR_INVALFLAG;
302 
303  switch (fdwDetails) {
305  if (had == NULL) {
306  mmr = ACMERR_NOTPOSSIBLE;
307  for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
308  /* should check for codec only */
310  acmDriverOpen(&had, (HACMDRIVERID)padid, 0) == 0) {
311  mmr = MSACM_Message(had, ACMDM_FILTERTAG_DETAILS, (LPARAM)paftd, fdwDetails);
312  acmDriverClose(had, 0);
313  if (mmr == MMSYSERR_NOERROR) break;
314  }
315  }
316  } else {
317  mmr = MSACM_Message(had, ACMDM_FILTERTAG_DETAILS, (LPARAM)paftd, fdwDetails);
318  }
319  break;
320 
322  /* FIXME should check paftd->dwFilterTagIndex < add.cFilterTags */
323  mmr = MSACM_Message(had, ACMDM_FILTERTAG_DETAILS, (LPARAM)paftd, fdwDetails);
324  break;
325 
327  if (had == NULL) {
329  DWORD ft = paftd->dwFilterTag;
330 
331  mmr = ACMERR_NOTPOSSIBLE;
332  for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
333  /* should check for codec only */
335  acmDriverOpen(&had, (HACMDRIVERID)padid, 0) == 0) {
336 
337  memset(&tmp, 0, sizeof(tmp));
338  tmp.cbStruct = sizeof(tmp);
339  tmp.dwFilterTag = ft;
340 
342  (LPARAM)&tmp, fdwDetails) == MMSYSERR_NOERROR) {
343  if (mmr == ACMERR_NOTPOSSIBLE ||
344  paftd->cbFilterSize < tmp.cbFilterSize) {
345  *paftd = tmp;
346  mmr = MMSYSERR_NOERROR;
347  }
348  }
349  acmDriverClose(had, 0);
350  }
351  }
352  } else {
353  mmr = MSACM_Message(had, ACMDM_FILTERTAG_DETAILS, (LPARAM)paftd, fdwDetails);
354  }
355  break;
356 
357  default:
358  WARN("Unsupported fdwDetails=%08x\n", fdwDetails);
359  mmr = MMSYSERR_ERROR;
360  }
361 
362  if (mmr == MMSYSERR_NOERROR &&
363  paftd->dwFilterTag == WAVE_FORMAT_PCM && paftd->szFilterTag[0] == 0)
364  MultiByteToWideChar(CP_ACP, 0, "PCM", -1, paftd->szFilterTag,
365  ARRAY_SIZE(paftd->szFilterTag));
366 
367  return mmr;
368 }
369 
374 };
375 
377  PACMFILTERTAGDETAILSW paftdw,
378  DWORD_PTR dwInstance,
379  DWORD fdwSupport)
380 {
381  struct MSACM_FilterTagEnumWtoA_Instance* paftei;
382 
384 
385  paftei->paftda->dwFilterTagIndex = paftdw->dwFilterTagIndex;
386  paftei->paftda->dwFilterTag = paftdw->dwFilterTag;
387  paftei->paftda->cbFilterSize = paftdw->cbFilterSize;
388  paftei->paftda->fdwSupport = paftdw->fdwSupport;
389  paftei->paftda->cStandardFilters = paftdw->cStandardFilters;
390  WideCharToMultiByte( CP_ACP, 0, paftdw->szFilterTag, -1, paftei->paftda->szFilterTag,
391  sizeof(paftei->paftda->szFilterTag), NULL, NULL );
392 
393  return (paftei->fnCallback)(hadid, paftei->paftda,
394  paftei->dwInstance, fdwSupport);
395 }
396 
397 /***********************************************************************
398  * acmFilterTagEnumA (MSACM32.@)
399  */
402  DWORD_PTR dwInstance, DWORD fdwEnum)
403 {
404  ACMFILTERTAGDETAILSW aftdw;
406 
407  memset(&aftdw, 0, sizeof(aftdw));
408  aftdw.cbStruct = sizeof(aftdw);
410  aftdw.dwFilterTag = paftda->dwFilterTag;
411 
412  aftei.paftda = paftda;
413  aftei.dwInstance = dwInstance;
414  aftei.fnCallback = fnCallback;
415 
417  (DWORD_PTR)&aftei, fdwEnum);
418 }
419 
420 /***********************************************************************
421  * acmFilterTagEnumW (MSACM32.@)
422  */
425  DWORD_PTR dwInstance, DWORD fdwEnum)
426 {
427  PWINE_ACMDRIVERID padid;
428  unsigned int i;
429 
430  TRACE("(%p, %p, %p, %ld, %d)\n",
431  had, paftd, fnCallback, dwInstance, fdwEnum);
432 
433  if (paftd->cbStruct < sizeof(*paftd)) return MMSYSERR_INVALPARAM;
434 
435  if (had) FIXME("had != NULL, not supported\n");
436 
437  for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID) {
438  /* should check for codec only */
440  acmDriverOpen(&had, (HACMDRIVERID)padid, 0) == MMSYSERR_NOERROR) {
441 
442  for (i = 0; i < padid->cFilterTags; i++) {
443  paftd->dwFilterTagIndex = i;
445  if (!(fnCallback)((HACMDRIVERID)padid, paftd, dwInstance, padid->fdwSupport)) {
446  padid = NULL;
447  break;
448  }
449  }
450  }
451  acmDriverClose(had, 0);
452  }
453  }
454  return MMSYSERR_NOERROR;
455 }
DWORD fdwSupport
Definition: wineacm.h:97
CHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]
Definition: msacm.h:416
#define TRUE
Definition: types.h:120
BOOL(CALLBACK * ACMFILTERTAGENUMCBW)(HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: msacm.h:587
static BOOL CALLBACK MSACM_FilterTagEnumCallbackWtoA(HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftdw, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: filter.c:376
#define WideCharToMultiByte
Definition: compat.h:101
#define ACM_FILTERDETAILSF_INDEX
Definition: msacm.h:95
PWAVEFILTER pwfltr
Definition: msacm.h:399
DWORD dwFilterIndex
Definition: msacm.h:385
#define CP_ACP
Definition: compat.h:99
CHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]
Definition: msacm.h:390
DWORD cStandardFilters
Definition: msacm.h:426
#define WARN(fmt,...)
Definition: debug.h:111
DWORD dwFilterTagIndex
Definition: msacm.h:422
BOOL(CALLBACK * ACMFILTERTAGENUMCBA)(HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: msacm.h:582
#define CALLBACK
Definition: compat.h:27
DWORD dwFilterTag
Definition: mmreg.h:50
MMRESULT WINAPI acmFilterTagEnumW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, ACMFILTERTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum)
Definition: filter.c:423
UINT MMRESULT
Definition: mmsystem.h:962
#define MMSYSERR_INVALHANDLE
Definition: mmsystem.h:101
DWORD dwFilterTag
Definition: msacm.h:386
PWAVEFILTER pwfltr
Definition: msacm.h:388
DWORD cFilterTags
Definition: wineacm.h:95
#define ACM_FILTERTAGDETAILSF_INDEX
Definition: msacm.h:101
static BOOL MSACM_FilterEnumHelper(PWINE_ACMDRIVERID padid, HACMDRIVER had, PACMFILTERDETAILSW pafd, ACMFILTERENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum)
Definition: filter.c:189
MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose)
Definition: driver.c:182
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define WAVE_FORMAT_PCM
Definition: constants.h:425
DWORD cStandardFilters
Definition: msacm.h:415
unsigned int BOOL
Definition: ntddk_ex.h:94
static BOOL CALLBACK MSACM_FilterEnumCallbackWtoA(HACMDRIVERID hadid, PACMFILTERDETAILSW pafdw, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: filter.c:145
DWORD dwFilterTagIndex
Definition: msacm.h:411
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
LONG_PTR LPARAM
Definition: windef.h:208
PWINE_ACMDRIVERID pNextACMDriverID
Definition: wineacm.h:92
MMRESULT WINAPI acmFilterDetailsW(HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails)
Definition: filter.c:88
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
MMRESULT WINAPI acmDriverID(HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID)
Definition: driver.c:355
#define TRACE(s)
Definition: solgame.cpp:4
#define ACM_FILTERTAGDETAILSF_LARGESTSIZE
Definition: msacm.h:103
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define MMSYSERR_ERROR
Definition: mmsystem.h:97
PACMFILTERTAGDETAILSA paftda
Definition: filter.c:371
MMRESULT WINAPI acmFilterEnumW(HACMDRIVER had, PACMFILTERDETAILSW pafd, ACMFILTERENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum)
Definition: filter.c:224
#define WINAPI
Definition: msvc.h:8
MMRESULT WINAPI acmFilterChooseW(PACMFILTERCHOOSEW pafltrc)
Definition: filter.c:52
unsigned long DWORD
Definition: ntddk_ex.h:95
#define MMSYSERR_INVALFLAG
Definition: mmsystem.h:106
#define SetLastError(x)
Definition: compat.h:409
MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen)
Definition: driver.c:494
MMRESULT MSACM_Message(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
Definition: internal.c:865
ACMFILTERTAGENUMCBA fnCallback
Definition: filter.c:373
BOOL(CALLBACK * ACMFILTERENUMCBW)(HACMDRIVERID hadid, PACMFILTERDETAILSW pafd, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: msacm.h:575
#define ACMDM_FILTERTAG_DETAILS
Definition: msacmdrv.h:55
int ret
WINE_DEFAULT_DEBUG_CHANNEL(msacm)
#define ACM_FILTERENUMF_DWFILTERTAG
Definition: msacm.h:106
PWINE_ACMDRIVERID MSACM_pFirstACMDriverID
Definition: internal.c:46
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define ACMERR_NOTPOSSIBLE
Definition: msacm.h:36
DWORD fdwSupport
Definition: msacm.h:387
#define ACM_FILTERDETAILSF_FILTER
Definition: msacm.h:96
WCHAR szFilter[ACMFILTERDETAILS_FILTER_CHARS]
Definition: msacm.h:401
MMRESULT WINAPI acmFilterChooseA(PACMFILTERCHOOSEA pafltrc)
Definition: filter.c:42
MMRESULT WINAPI acmFilterEnumA(HACMDRIVER had, PACMFILTERDETAILSA pafda, ACMFILTERENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum)
Definition: filter.c:167
#define MMSYSERR_INVALPARAM
Definition: mmsystem.h:107
DWORD dwFilterTag
Definition: msacm.h:397
#define ARRAY_SIZE(a)
Definition: main.h:24
DWORD dwFilterIndex
Definition: msacm.h:396
WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS]
Definition: msacm.h:427
MMRESULT WINAPI acmFilterTagEnumA(HACMDRIVER had, PACMFILTERTAGDETAILSA paftda, ACMFILTERTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum)
Definition: filter.c:400
#define MultiByteToWideChar
Definition: compat.h:100
#define ACMDRIVERDETAILS_SUPPORTF_DISABLED
Definition: msacm.h:67
PACMFILTERDETAILSA pafda
Definition: filter.c:140
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:92
PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
Definition: internal.c:829
MMRESULT WINAPI acmFilterTagDetailsA(HACMDRIVER had, PACMFILTERTAGDETAILSA paftda, DWORD fdwDetails)
Definition: filter.c:264
#define ACM_FILTERTAGDETAILSF_FILTERTAG
Definition: msacm.h:102
#define memset(x, y, z)
Definition: compat.h:39
MMRESULT WINAPI acmFilterTagDetailsW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails)
Definition: filter.c:291
DWORD cbStruct
Definition: msacm.h:395
MMRESULT WINAPI acmFilterDetailsA(HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails)
Definition: filter.c:62
BOOL(CALLBACK * ACMFILTERENUMCBA)(HACMDRIVERID hadid, PACMFILTERDETAILSA pafd, DWORD_PTR dwInstance, DWORD fdwSupport)
Definition: msacm.h:570
DWORD fdwSupport
Definition: msacm.h:398
#define ACMDM_FILTER_DETAILS
Definition: msacmdrv.h:56
ACMFILTERENUMCBA fnCallback
Definition: filter.c:142