msacm.h 24 KB
Newer Older
1
/*
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 * 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
18
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 20 21 22 23
 */

#ifndef __WINE_MSACM_H
#define __WINE_MSACM_H

24 25 26 27
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */

28 29
#include <pshpack1.h>

Eric Pouech's avatar
Eric Pouech committed
30 31
#define ACMAPI              WINAPI

32 33 34 35 36 37 38 39 40 41 42 43 44
/***********************************************************************
 * 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

45
#define ACM_DRIVERADDF_NAME       0x00000001L
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
#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

108
#define ACMHELPMSGSTRINGA       "acmchoose_help"
109 110 111 112 113 114
#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
115 116
static const WCHAR ACMHELPMSGSTRINGW[] = { 'a','c','m',
  'c','h','o','o','s','e','_','h','e','l','p',0 };
117
#endif
Eric Pouech's avatar
Eric Pouech committed
118
#define ACMHELPMSGSTRING WINELIB_NAME_AW(ACMHELPMSGSTRING)
119

120
#define ACMHELPMSGCONTEXTMENUA  "acmchoose_contextmenu"
121 122 123 124 125 126
#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
127 128
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 };
129
#endif
Eric Pouech's avatar
Eric Pouech committed
130
#define ACMHELPMSGCONTEXTMENU WINELIB_NAME_AW(ACMHELPMSGCONTEXTMENU)
131

132
#define ACMHELPMSGCONTEXTHELPA  "acmchoose_contexthelp"
133 134 135 136 137 138
#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
139 140
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 };
141
#endif
Eric Pouech's avatar
Eric Pouech committed
142
#define ACMHELPMSGCONTEXTHELP WINELIB_NAME_AW(ACMHELPMSGCONTEXTHELP)
143 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

#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)

229 230
/* handles */

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

240 241 242 243
/***********************************************************************
 * Callbacks
 */

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

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

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

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

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

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

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

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

287
  HICON  hicon;
288 289 290 291 292 293

  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
294
} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
295

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

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

313
  HICON  hicon;
314 315 316 317 318 319

  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
320
} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
321

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

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

331
  HWND        hwndOwner;
332

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

  LPCSTR        pszTitle;

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

  DWORD         fdwEnum;
344
  PWAVEFILTER   pwfltrEnum;
345

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

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

357
  HWND        hwndOwner;
358

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

  LPCWSTR       pszTitle;

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

  DWORD         fdwEnum;
370
  PWAVEFILTER   pwfltrEnum;
371

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

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

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

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

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

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

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

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

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

439
  HWND          hwndOwner;
440

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

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

  LPSTR           pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
452
  PWAVEFORMATEX   pwfxEnum;
453

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

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

465
  HWND          hwndOwner;
466

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

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

  LPWSTR          pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
  LPWAVEFORMATEX  pwfxEnum;
479

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

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

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

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

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

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

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

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

542 543 544 545 546 547
#ifdef _WIN64
#  define _ACMSTREAMHEADERRESERVE 15
#else
#  define _ACMSTREAMHEADERRESERVE 10
#endif

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

564 565
#undef _ACMSTREAMHEADERRESERVE

566 567 568 569
/***********************************************************************
 * Callbacks 2
 */

570
typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
571
  HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
572
  DWORD_PTR dwInstance, DWORD fdwSupport
573 574
);

575
typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
576
  HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
577
  DWORD_PTR dwInstance, DWORD fdwSupport
578 579
);

580 581
#define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)

582
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
583
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
584
  DWORD_PTR dwInstance, DWORD fdwSupport
585 586
);

587
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
588
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
589
  DWORD_PTR dwInstance, DWORD fdwSupport
590 591
);

592 593
#define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)

594
typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
595
  HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
596
  DWORD_PTR dwInstance, DWORD fdwSupport
597 598
);

599
typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
600
  HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
601
  DWORD_PTR dwInstance, DWORD fdwSupport
602 603
);

604 605
#define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)

606
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
607
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
608
  DWORD_PTR dwInstance, DWORD fdwSupport
609 610
);

611
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
612
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
613
  DWORD_PTR dwInstance, DWORD fdwSupport
614 615
);

616 617
#define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)

618 619 620 621
/***********************************************************************
 * Functions - Win32
 */

622 623
MMRESULT WINAPI acmDriverAddA(
  PHACMDRIVERID phadid, HINSTANCE hinstModule,
624 625
  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
626 627
MMRESULT WINAPI acmDriverAddW(
  PHACMDRIVERID phadid, HINSTANCE hinstModule,
628 629
  LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
);
630 631
#define acmDriverAdd WINELIB_NAME_AW(acmDriverAdd)

632 633
MMRESULT WINAPI acmDriverClose(
  HACMDRIVER had, DWORD fdwClose
634
);
635 636
MMRESULT WINAPI acmDriverDetailsA(
  HACMDRIVERID hadid, PACMDRIVERDETAILSA padd, DWORD fdwDetails
637
);
638 639
MMRESULT WINAPI acmDriverDetailsW(
  HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails
640
);
641 642
#define acmDriverDetails WINELIB_NAME_AW(acmDriverDetails)

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

669 670
MMRESULT WINAPI acmFilterDetailsA(
  HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails
671
);
672 673
MMRESULT WINAPI acmFilterDetailsW(
  HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails
674
);
675 676
#define acmFilterDetails WINELIB_NAME_AW(acmFilterDetails)

677
MMRESULT WINAPI acmFilterEnumA(
678
  HACMDRIVER had, PACMFILTERDETAILSA pafd,
679
  ACMFILTERENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
680
);
681
MMRESULT WINAPI acmFilterEnumW(
682
  HACMDRIVER had, PACMFILTERDETAILSW pafd,
683
  ACMFILTERENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
684
);
685 686
#define acmFilterEnum WINELIB_NAME_AW(acmFilterEnum)

687 688
MMRESULT WINAPI acmFilterTagDetailsA(
  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails
689
);
690 691
MMRESULT WINAPI acmFilterTagDetailsW(
  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails
692
);
693 694
#define acmFilterTagDetails WINELIB_NAME_AW(acmFilterTagDetails)

695 696
MMRESULT WINAPI acmFilterTagEnumA(
  HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
697
  ACMFILTERTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
698
);
699 700
MMRESULT WINAPI acmFilterTagEnumW(
  HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
701
  ACMFILTERTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
702
);
703 704
#define acmFilterTagEnum WINELIB_NAME_AW(acmFilterTagEnum)

705 706
MMRESULT WINAPI acmFormatChooseA(
  PACMFORMATCHOOSEA pafmtc
707
);
708 709
MMRESULT WINAPI acmFormatChooseW(
  PACMFORMATCHOOSEW pafmtc
710
);
711 712
#define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)

713 714
MMRESULT WINAPI acmFormatDetailsA(
  HACMDRIVER had, PACMFORMATDETAILSA pafd, DWORD fdwDetails
715
);
716 717
MMRESULT WINAPI acmFormatDetailsW(
  HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD fdwDetails
718
);
719 720
#define acmFormatDetails WINELIB_NAME_AW(acmFormatDetails)

721 722
MMRESULT WINAPI acmFormatEnumA(
  HACMDRIVER had, PACMFORMATDETAILSA pafd,
723
  ACMFORMATENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
724
);
725 726
MMRESULT WINAPI acmFormatEnumW(
  HACMDRIVER had, PACMFORMATDETAILSW pafd,
727
  ACMFORMATENUMCBW fnCallback, DWORD_PTR dwInstance,  DWORD fdwEnum
728
);
729 730
#define acmFormatEnum WINELIB_NAME_AW(acmFormatEnum)

731 732
MMRESULT WINAPI acmFormatSuggest(
  HACMDRIVER had, PWAVEFORMATEX pwfxSrc, PWAVEFORMATEX pwfxDst,
733 734
  DWORD cbwfxDst, DWORD fdwSuggest
);
735 736
MMRESULT WINAPI acmFormatTagDetailsA(
  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd, DWORD fdwDetails
737
);
738 739
MMRESULT WINAPI acmFormatTagDetailsW(
  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, DWORD fdwDetails
740
);
741 742
#define acmFormatTagDetails WINELIB_NAME_AW(acmFormatTagDetails)

743 744
MMRESULT WINAPI acmFormatTagEnumA(
  HACMDRIVER had, PACMFORMATTAGDETAILSA paftd,
745
  ACMFORMATTAGENUMCBA fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
746
);
747 748
MMRESULT WINAPI acmFormatTagEnumW(
  HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
749
  ACMFORMATTAGENUMCBW fnCallback, DWORD_PTR dwInstance, DWORD fdwEnum
750
);
751 752
#define acmFormatTagEnum WINELIB_NAME_AW(acmFormatTagEnum)

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

786 787
#include <poppack.h>

788 789 790 791
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */

792
#endif  /* __WINE_MSACM_H */