msacm.h 23.8 KB
Newer Older
1
/*
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 * Declarations for MSACM
 *
 * Copyright (C) the Wine project
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 20 21 22 23
 */

#ifndef __WINE_MSACM_H
#define __WINE_MSACM_H

24
#include "windef.h"
25 26 27
#include "mmsystem.h"
#include "mmreg.h"

28 29 30 31
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */

Eric Pouech's avatar
Eric Pouech committed
32 33
#define ACMAPI              WINAPI

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
/***********************************************************************
 * Defines/Enums
 */
#define ACMERR_BASE        512
#define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
#define ACMERR_BUSY        (ACMERR_BASE + 1)
#define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
#define ACMERR_CANCELED    (ACMERR_BASE + 3)

#define MM_ACM_OPEN  MM_STREAM_OPEN
#define MM_ACM_CLOSE MM_STREAM_CLOSE
#define MM_ACM_DONE  MM_STREAM_DONE

#define ACM_DRIVERADDF_FUNCTION   0x00000003L
#define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
#define ACM_DRIVERADDF_TYPEMASK   0x00000007L
#define ACM_DRIVERADDF_LOCAL      0x00000000L
#define ACM_DRIVERADDF_GLOBAL     0x00000008L

#define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
#define ACMDRIVERDETAILS_LONGNAME_CHARS  128
#define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
#define ACMDRIVERDETAILS_LICENSING_CHARS 128
#define ACMDRIVERDETAILS_FEATURES_CHARS  512

#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')

#define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
#define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
#define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
#define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
#define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
#define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
#define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L

#define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
#define ACM_DRIVERENUMF_DISABLED 0x80000000L

#define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
#define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
#define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
#define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
#define ACM_DRIVERPRIORITYF_END       0x00020000L
#define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L

#define MM_ACM_FILTERCHOOSE 0x8000

#define FILTERCHOOSE_MESSAGE          0
#define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
#define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
#define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)

#define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
#define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
#define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
#define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L

#define ACMFILTERDETAILS_FILTER_CHARS 128

#define ACM_FILTERDETAILSF_INDEX     0x00000000L
#define ACM_FILTERDETAILSF_FILTER    0x00000001L
#define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL

#define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48

#define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
#define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
#define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL

#define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L

109
#define ACMHELPMSGSTRINGA       "acmchoose_help"
110 111 112 113 114 115
#if defined(__GNUC__)
# define ACMHELPMSGSTRINGW (const WCHAR []){ 'a','c','m', \
  'c','h','o','o','s','e','_','h','e','l','p',0 }
#elif defined(_MSC_VER)
# define ACMHELPMSGSTRINGW      L"acmchoose_help"
#else
116 117
static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
  'c','h','o','o','s','e','_','h','e','l','p',0 };
118
#endif
Eric Pouech's avatar
Eric Pouech committed
119
#define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
120

121
#define ACMHELPMSGCONTEXTMENUA  "acmchoose_contextmenu"
122 123 124 125 126 127
#if defined(__GNUC__)
# define ACMHELPMSGCONTEXTMENUW (const WCHAR []){ 'a','c','m', \
  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 }
#elif defined(_MSC_VER)
# define ACMHELPMSGCONTEXTMENUW L"acmchoose_contextmenu"
#else
128 129
static const WCHAR ACMHELPMSGCONTEXTMENUW[] = { 'a','c','m',
  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','m','e','n','u',0 };
130
#endif
Eric Pouech's avatar
Eric Pouech committed
131
#define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
132

133
#define ACMHELPMSGCONTEXTHELPA  "acmchoose_contexthelp"
134 135 136 137 138 139
#if defined(__GNUC__)
# define ACMHELPMSGCONTEXTHELPW (const WCHAR []){ 'a','c','m', \
  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 }
#elif defined(_MSC_VER)
# define ACMHELPMSGCONTEXTHELPW L"acmchoose_contexthelp"
#else
140 141
static const WCHAR ACMHELPMSGCONTEXTHELPW[] = { 'a','c','m',
  'c','h','o','o','s','e','_','c','o','n','t','e','x','t','h','e','l','p',0 };
142
#endif
Eric Pouech's avatar
Eric Pouech committed
143
#define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229

#define MM_ACM_FORMATCHOOSE 0x8000

#define FORMATCHOOSE_MESSAGE          0
#define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
#define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
#define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)

#define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
#define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
#define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
#define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
#define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L

#define ACMFORMATDETAILS_FORMAT_CHARS   128

#define ACM_FORMATDETAILSF_INDEX     0x00000000L
#define ACM_FORMATDETAILSF_FORMAT    0x00000001L
#define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL

#define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
#define ACM_FORMATENUMF_NCHANNELS      0x00020000L
#define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATENUMF_CONVERT        0x00100000L
#define ACM_FORMATENUMF_SUGGEST        0x00200000L
#define ACM_FORMATENUMF_HARDWARE       0x00400000L
#define ACM_FORMATENUMF_INPUT          0x00800000L
#define ACM_FORMATENUMF_OUTPUT         0x01000000L

#define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
#define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
#define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L

#define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48

#define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
#define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
#define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
#define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL

#define ACM_METRIC_COUNT_DRIVERS            1
#define ACM_METRIC_COUNT_CODECS             2
#define ACM_METRIC_COUNT_CONVERTERS         3
#define ACM_METRIC_COUNT_FILTERS            4
#define ACM_METRIC_COUNT_DISABLED           5
#define ACM_METRIC_COUNT_HARDWARE           6
#define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
#define ACM_METRIC_COUNT_LOCAL_CODECS      21
#define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
#define ACM_METRIC_COUNT_LOCAL_FILTERS     23
#define ACM_METRIC_COUNT_LOCAL_DISABLED    24
#define ACM_METRIC_HARDWARE_WAVE_INPUT     30
#define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
#define ACM_METRIC_MAX_SIZE_FORMAT         50
#define ACM_METRIC_MAX_SIZE_FILTER         51
#define ACM_METRIC_DRIVER_SUPPORT         100
#define ACM_METRIC_DRIVER_PRIORITY        101

#define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
#define ACM_STREAMCONVERTF_START      0x00000010
#define ACM_STREAMCONVERTF_END        0x00000020

#define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
#define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
#define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L

#define ACM_STREAMOPENF_QUERY       0x00000001
#define ACM_STREAMOPENF_ASYNC       0x00000002
#define ACM_STREAMOPENF_NONREALTIME 0x00000004

#define ACM_STREAMSIZEF_SOURCE      0x00000000L
#define ACM_STREAMSIZEF_DESTINATION 0x00000001L
#define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL

#define ACMDM_USER                  (DRV_USER + 0x0000)
#define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
#define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)

#define ACMDM_BASE                  ACMDM_RESERVED_LOW

#define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)

230 231
/* handles */

232 233 234
DECLARE_HANDLE(HACMDRIVERID);
DECLARE_HANDLE(HACMDRIVER);
DECLARE_HANDLE(HACMSTREAM);
235
DECLARE_HANDLE(HACMOBJ);
236 237 238 239
typedef HACMDRIVERID *PHACMDRIVERID, *LPHACMDRIVERID;
typedef HACMDRIVER   *PHACMDRIVER, *LPHACMDRIVER;
typedef HACMSTREAM   *PHACMSTREAM, *LPHACMSTREAM;
typedef HACMOBJ      *PHACMOBJ, *LPHACMOBJ;
240

241 242 243 244
/***********************************************************************
 * Callbacks
 */

245
typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
246
  HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
247 248
);

249
typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCA)(
250
  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
251 252
);

253
typedef UINT (CALLBACK *ACMFILTERCHOOSEHOOKPROCW)(
254
  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
255
);
256
#define	ACMFILTERCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFILTERCHOOSEHOOKPROC)
257

258
typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCA)(
259
  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
260 261
);

262
typedef UINT (CALLBACK *ACMFORMATCHOOSEHOOKPROCW)(
263
  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
264
);
265
#define	ACMFORMATCHOOSEHOOKPROC WINELIB_NAME_AW(ACMFORMATCHOOSEHOOKPROC)
266 267 268 269 270

/***********************************************************************
 * Structures
 */

271
typedef struct _ACMDRIVERDETAILSA
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
{
  DWORD    cbStruct;

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

288
  HICON  hicon;
289 290 291 292 293 294

  CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
Eric Pouech's avatar
Eric Pouech committed
295
} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
296

297
typedef struct _ACMDRIVERDETAILSW
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
{
  DWORD    cbStruct;

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

314
  HICON  hicon;
315 316 317 318 319 320

  WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
  WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
  WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
  WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
  WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
Eric Pouech's avatar
Eric Pouech committed
321
} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
322

323 324
DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
Eric Pouech's avatar
Eric Pouech committed
325
DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
326

327
typedef struct _ACMFILTERCHOOSEA
328 329 330 331
{
  DWORD         cbStruct;
  DWORD         fdwStyle;

332
  HWND        hwndOwner;
333

334
  PWAVEFILTER   pwfltr;
335 336 337 338 339 340 341 342 343 344
  DWORD         cbwfltr;

  LPCSTR        pszTitle;

  CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  LPSTR         pszName;
  DWORD         cchName;

  DWORD         fdwEnum;
345
  PWAVEFILTER   pwfltrEnum;
346

347
  HINSTANCE   hInstance;
348 349
  LPCSTR        pszTemplateName;
  LPARAM        lCustData;
350
  ACMFILTERCHOOSEHOOKPROCA pfnHook;
Eric Pouech's avatar
Eric Pouech committed
351
} ACMFILTERCHOOSEA, *PACMFILTERCHOOSEA, *LPACMFILTERCHOOSEA;
352

353
typedef struct _ACMFILTERCHOOSEW
354 355 356 357
{
  DWORD         cbStruct;
  DWORD         fdwStyle;

358
  HWND        hwndOwner;
359

360
  PWAVEFILTER   pwfltr;
361 362 363 364 365 366 367 368 369 370
  DWORD         cbwfltr;

  LPCWSTR       pszTitle;

  WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
  WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
  LPWSTR        pszName;
  DWORD         cchName;

  DWORD         fdwEnum;
371
  PWAVEFILTER   pwfltrEnum;
372

373
  HINSTANCE   hInstance;
374 375
  LPCWSTR       pszTemplateName;
  LPARAM        lCustData;
376
  ACMFILTERCHOOSEHOOKPROCW pfnHook;
Eric Pouech's avatar
Eric Pouech committed
377
} ACMFILTERCHOOSEW, *PACMFILTERCHOOSEW, *LPACMFILTERCHOOSEW;
378

379 380
DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
Eric Pouech's avatar
Eric Pouech committed
381
DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
382

383
typedef struct _ACMFILTERDETAILSA
384 385 386 387 388
{
  DWORD           cbStruct;
  DWORD           dwFilterIndex;
  DWORD           dwFilterTag;
  DWORD           fdwSupport;
389
  PWAVEFILTER     pwfltr;
390 391
  DWORD           cbwfltr;
  CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
Eric Pouech's avatar
Eric Pouech committed
392
} ACMFILTERDETAILSA, *PACMFILTERDETAILSA, *LPACMFILTERDETAILSA;
393

394
typedef struct _ACMFILTERDETAILSW
395 396 397 398 399
{
  DWORD          cbStruct;
  DWORD          dwFilterIndex;
  DWORD          dwFilterTag;
  DWORD          fdwSupport;
400
  PWAVEFILTER    pwfltr;
401 402
  DWORD          cbwfltr;
  WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
Eric Pouech's avatar
Eric Pouech committed
403
} ACMFILTERDETAILSW, *PACMFILTERDETAILSW, *LPACMFILTERDETAILSW;
404

405 406
DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
Eric Pouech's avatar
Eric Pouech committed
407
DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
408

409
typedef struct _ACMFILTERTAGDETAILSA
410 411 412 413 414 415 416 417
{
  DWORD cbStruct;
  DWORD dwFilterTagIndex;
  DWORD dwFilterTag;
  DWORD cbFilterSize;
  DWORD fdwSupport;
  DWORD cStandardFilters;
  CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
Eric Pouech's avatar
Eric Pouech committed
418
} ACMFILTERTAGDETAILSA, *PACMFILTERTAGDETAILSA, *LPACMFILTERTAGDETAILSA;
419

420
typedef struct _ACMFILTERTAGDETAILSW
421 422 423 424 425 426 427 428
{
  DWORD cbStruct;
  DWORD dwFilterTagIndex;
  DWORD dwFilterTag;
  DWORD cbFilterSize;
  DWORD fdwSupport;
  DWORD cStandardFilters;
  WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
Eric Pouech's avatar
Eric Pouech committed
429
} ACMFILTERTAGDETAILSW, *PACMFILTERTAGDETAILSW, *LPACMFILTERTAGDETAILSW;
430

431 432
DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
Eric Pouech's avatar
Eric Pouech committed
433
DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
434

435
typedef struct _ACMFORMATCHOOSEA
436 437 438
{
  DWORD           cbStruct;
  DWORD           fdwStyle;
439

440
  HWND          hwndOwner;
441

442
  PWAVEFORMATEX   pwfx;
443 444
  DWORD           cbwfx;
  LPCSTR          pszTitle;
445

446
  CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
447
  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
448 449 450 451 452

  LPSTR           pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
453
  PWAVEFORMATEX   pwfxEnum;
454

455
  HINSTANCE     hInstance;
456 457
  LPCSTR          pszTemplateName;
  LPARAM          lCustData;
458
  ACMFORMATCHOOSEHOOKPROCA pfnHook;
Eric Pouech's avatar
Eric Pouech committed
459
} ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, *LPACMFORMATCHOOSEA;
460

461
typedef struct _ACMFORMATCHOOSEW
462 463 464
{
  DWORD           cbStruct;
  DWORD           fdwStyle;
465

466
  HWND          hwndOwner;
467

468
  PWAVEFORMATEX   pwfx;
469 470
  DWORD           cbwfx;
  LPCWSTR         pszTitle;
471

472
  WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
473
  WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
474 475 476 477 478 479

  LPWSTR          pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
  LPWAVEFORMATEX  pwfxEnum;
480

481
  HINSTANCE     hInstance;
482 483
  LPCWSTR         pszTemplateName;
  LPARAM          lCustData;
484
  ACMFORMATCHOOSEHOOKPROCW pfnHook;
Eric Pouech's avatar
Eric Pouech committed
485
} ACMFORMATCHOOSEW, *PACMFORMATCHOOSEW, *LPACMFORMATCHOOSEW;
486

487 488
DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
Eric Pouech's avatar
Eric Pouech committed
489
DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
490

491
typedef struct _ACMFORMATDETAILSA
492 493 494 495 496
{
  DWORD           cbStruct;
  DWORD           dwFormatIndex;
  DWORD           dwFormatTag;
  DWORD           fdwSupport;
497
  PWAVEFORMATEX   pwfx;
498 499
  DWORD           cbwfx;
  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
Eric Pouech's avatar
Eric Pouech committed
500
} ACMFORMATDETAILSA, *PACMFORMATDETAILSA, *LPACMFORMATDETAILSA;
501

502
typedef struct _ACMFORMATDETAILSW
503 504 505 506 507
{
    DWORD           cbStruct;
    DWORD           dwFormatIndex;
    DWORD           dwFormatTag;
    DWORD           fdwSupport;
508
    PWAVEFORMATEX   pwfx;
509 510
    DWORD           cbwfx;
    WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
Eric Pouech's avatar
Eric Pouech committed
511
} ACMFORMATDETAILSW, *PACMFORMATDETAILSW, *LPACMFORMATDETAILSW;
512

513 514
DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
Eric Pouech's avatar
Eric Pouech committed
515
DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
516

517
typedef struct _ACMFORMATTAGDETAILSA
518 519 520 521 522 523 524 525
{
  DWORD cbStruct;
  DWORD dwFormatTagIndex;
  DWORD dwFormatTag;
  DWORD cbFormatSize;
  DWORD fdwSupport;
  DWORD cStandardFormats;
  CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
Eric Pouech's avatar
Eric Pouech committed
526
} ACMFORMATTAGDETAILSA, *PACMFORMATTAGDETAILSA, *LPACMFORMATTAGDETAILSA;
527

528
typedef struct _ACMFORMATTAGDETAILSW
529 530 531 532 533 534 535 536
{
  DWORD cbStruct;
  DWORD dwFormatTagIndex;
  DWORD dwFormatTag;
  DWORD cbFormatSize;
  DWORD fdwSupport;
  DWORD cStandardFormats;
  WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
Eric Pouech's avatar
Eric Pouech committed
537
} ACMFORMATTAGDETAILSW, *PACMFORMATTAGDETAILSW, *LPACMFORMATTAGDETAILSW;
538

539 540
DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
Eric Pouech's avatar
Eric Pouech committed
541
DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
542

543 544 545 546 547 548 549 550 551 552 553 554 555 556
typedef struct _ACMSTREAMHEADER
{
  DWORD  cbStruct;
  DWORD  fdwStatus;
  DWORD  dwUser;
  LPBYTE pbSrc;
  DWORD  cbSrcLength;
  DWORD  cbSrcLengthUsed;
  DWORD  dwSrcUser;
  LPBYTE pbDst;
  DWORD  cbDstLength;
  DWORD  cbDstLengthUsed;
  DWORD  dwDstUser;
  DWORD  dwReservedDriver[10];
Eric Pouech's avatar
Eric Pouech committed
557
} ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
558 559 560 561 562

/***********************************************************************
 * Callbacks 2
 */

563
typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
564
  HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
565 566 567
  DWORD dwInstance, DWORD fdwSupport
);

568
typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
569
  HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
570 571 572
  DWORD dwInstance, DWORD fdwSupport
);

573 574
#define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)

575
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
576
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
577 578 579
  DWORD dwInstance, DWORD fdwSupport
);

580
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
581
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
582 583 584
  DWORD dwInstance, DWORD fdwSupport
);

585 586
#define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)

587
typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
588
  HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
589 590 591
  DWORD dwInstance, DWORD fdwSupport
);

592
typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
593
  HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
594 595 596
  DWORD dwInstance, DWORD fdwSupport
);

597 598
#define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)

599
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
600
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
601 602 603
  DWORD dwInstance, DWORD fdwSupport
);

604
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
605
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
606 607 608
  DWORD dwInstance, DWORD fdwSupport
);

609 610
#define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)

611 612 613 614
/***********************************************************************
 * Functions - Win32
 */

615 616
MMRESULT WINAPI acmDriverAddA(
  PHACMDRIVERID phadid, HINSTANCE hinstModule,
617 618
  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
619 620
MMRESULT WINAPI acmDriverAddW(
  PHACMDRIVERID phadid, HINSTANCE hinstModule,
621 622
  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
623 624
#define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)

625 626
MMRESULT WINAPI acmDriverClose(
  HACMDRIVER had, DWORD fdwClose
627
);
628 629
MMRESULT WINAPI acmDriverDetailsA(
  HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
630
);
631 632
MMRESULT WINAPI acmDriverDetailsW(
  HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
633
);
634 635
#define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)

636 637
MMRESULT WINAPI acmDriverEnum(
  ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum
638
);
639 640
MMRESULT WINAPI acmDriverID(
  HACMOBJ hao, PHACMDRIVERID phadid, DWORD fdwDriverID
641
);
642 643
LRESULT WINAPI acmDriverMessage(
  HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2
644
);
645 646
MMRESULT WINAPI acmDriverOpen(
  PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen
647
);
648 649
MMRESULT WINAPI acmDriverPriority(
  HACMDRIVERID hadid, DWORD dwPriority, DWORD fdwPriority
650
);
651 652
MMRESULT WINAPI acmDriverRemove(
  HACMDRIVERID hadid, DWORD fdwRemove
653
);
654 655
MMRESULT WINAPI acmFilterChooseA(
  PACMFILTERCHOOSEA pafltrc
656
);
657 658
MMRESULT WINAPI acmFilterChooseW(
  PACMFILTERCHOOSEW pafltrc
659
);
660 661
#define acmFilterChoose WINELIB_NAME_AW(acmFilterChoose)

662 663
MMRESULT WINAPI acmFilterDetailsA(
  HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
664
);
665 666
MMRESULT WINAPI acmFilterDetailsW(
  HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
667
);
668 669
#define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)

670
MMRESULT WINAPI acmFilterEnumA(
671
  HACMDRIVER had, PACMFILTERDETAILSA pafd,
672
  ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
673
);
674
MMRESULT WINAPI acmFilterEnumW(
675
  HACMDRIVER had, PACMFILTERDETAILSW pafd,
676
  ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
677
);
678 679
#define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)

680 681
MMRESULT WINAPI acmFilterTagDetailsA(
  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
682
);
683 684
MMRESULT WINAPI acmFilterTagDetailsW(
  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
685
);
686 687
#define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)

688 689 690
MMRESULT WINAPI acmFilterTagEnumA(
  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
  ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
691
);
692 693 694
MMRESULT WINAPI acmFilterTagEnumW(
  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
  ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
695
);
696 697
#define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)

698 699
MMRESULT WINAPI acmFormatChooseA(
  PACMFORMATCHOOSEA pafmtc
700
);
701 702
MMRESULT WINAPI acmFormatChooseW(
  PACMFORMATCHOOSEW pafmtc
703
);
704 705
#define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)

706 707
MMRESULT WINAPI acmFormatDetailsA(
  HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
708
);
709 710
MMRESULT WINAPI acmFormatDetailsW(
  HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
711
);
712 713
#define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)

714 715 716
MMRESULT WINAPI acmFormatEnumA(
  HACMDRIVER had, PACMFORMATDETAILSA pafd,
  ACMFORMATENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
717
);
718 719 720
MMRESULT WINAPI acmFormatEnumW(
  HACMDRIVER had, PACMFORMATDETAILSW pafd,
  ACMFORMATENUMCBW fnCallback, DWORD dwInstance,  DWORD fdwEnum
721
);
722 723
#define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)

724 725
MMRESULT WINAPI acmFormatSuggest(
  HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
726 727
  DWORD cbwfxDst, DWORD fdwSuggest
);
728 729
MMRESULT WINAPI acmFormatTagDetailsA(
  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
730
);
731 732
MMRESULT WINAPI acmFormatTagDetailsW(
  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
733
);
734 735
#define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)

736 737 738
MMRESULT WINAPI acmFormatTagEnumA(
  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
  ACMFORMATTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum
739
);
740 741 742
MMRESULT WINAPI acmFormatTagEnumW(
  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
  ACMFORMATTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum
743
);
744 745
#define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)

Eric Pouech's avatar
Eric Pouech committed
746
DWORD WINAPI acmGetVersion(void
747
);
748 749
MMRESULT WINAPI acmMetrics(
  HACMOBJ hao, UINT  uMetric, LPVOID  pMetric
750
);
751 752
MMRESULT WINAPI acmStreamClose(
  HACMSTREAM has, DWORD fdwClose
753
);
754 755
MMRESULT WINAPI acmStreamConvert(
  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwConvert
756
);
757 758
MMRESULT WINAPI acmStreamMessage(
  HACMSTREAM has, UINT uMsg, LPARAM lParam1, LPARAM lParam2
759
);
760 761
MMRESULT WINAPI acmStreamOpen(
  PHACMSTREAM phas, HACMDRIVER had, PWAVEFORMATEX pwfxSrc,
762
  PWAVEFORMATEX pwfxDst, PWAVEFILTER pwfltr, DWORD dwCallback,
763 764
  DWORD dwInstance, DWORD fdwOpen
);
765 766
MMRESULT WINAPI acmStreamPrepareHeader(
  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwPrepare
767
);
768 769
MMRESULT WINAPI acmStreamReset(
  HACMSTREAM has, DWORD fdwReset
770
);
771
MMRESULT WINAPI acmStreamSize(
772
  HACMSTREAM has, DWORD cbInput,
773 774
  LPDWORD pdwOutputBytes, DWORD fdwSize
);
775 776
MMRESULT WINAPI acmStreamUnprepareHeader(
  HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
777 778
);

779 780 781 782
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */

783
#endif  /* __WINE_MSACM_H */