msacm.h 23.7 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) */

Eric Pouech's avatar
Eric Pouech committed
28 29
#define ACMAPI              WINAPI

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

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

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

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

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

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

227 228
/* handles */

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

238 239 240 241
/***********************************************************************
 * Callbacks
 */

242
typedef BOOL (CALLBACK *ACMDRIVERENUMCB)(
243
  HACMDRIVERID hadid, DWORD dwInstance, DWORD fdwSupport
244 245
);

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

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

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

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

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

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

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

285
  HICON  hicon;
286 287 288 289 290 291

  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
292
} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, *LPACMDRIVERDETAILSA;
293

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

  FOURCC   fccType;
  FOURCC   fccComp;

  WORD     wMid;
  WORD     wPid;

  DWORD    vdwACM;
  DWORD    vdwDriver;

  DWORD    fdwSupport;
  DWORD    cFormatTags;
  DWORD    cFilterTags;

311
  HICON  hicon;
312 313 314 315 316 317

  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
318
} ACMDRIVERDETAILSW, *PACMDRIVERDETAILSW, *LPACMDRIVERDETAILSW;
319

320 321
DECL_WINELIB_TYPE_AW(ACMDRIVERDETAILS)
DECL_WINELIB_TYPE_AW(PACMDRIVERDETAILS)
Eric Pouech's avatar
Eric Pouech committed
322
DECL_WINELIB_TYPE_AW(LPACMDRIVERDETAILS)
323

324
typedef struct _ACMFILTERCHOOSEA
325 326 327 328
{
  DWORD         cbStruct;
  DWORD         fdwStyle;

329
  HWND        hwndOwner;
330

331
  PWAVEFILTER   pwfltr;
332 333 334 335 336 337 338 339 340 341
  DWORD         cbwfltr;

  LPCSTR        pszTitle;

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

  DWORD         fdwEnum;
342
  PWAVEFILTER   pwfltrEnum;
343

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

350
typedef struct _ACMFILTERCHOOSEW
351 352 353 354
{
  DWORD         cbStruct;
  DWORD         fdwStyle;

355
  HWND        hwndOwner;
356

357
  PWAVEFILTER   pwfltr;
358 359 360 361 362 363 364 365 366 367
  DWORD         cbwfltr;

  LPCWSTR       pszTitle;

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

  DWORD         fdwEnum;
368
  PWAVEFILTER   pwfltrEnum;
369

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

376 377
DECL_WINELIB_TYPE_AW(ACMFILTERCHOOSE)
DECL_WINELIB_TYPE_AW(PACMFILTERCHOOSE)
Eric Pouech's avatar
Eric Pouech committed
378
DECL_WINELIB_TYPE_AW(LPACMFILTERCHOOSE)
379

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

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

402 403
DECL_WINELIB_TYPE_AW(ACMFILTERDETAILS)
DECL_WINELIB_TYPE_AW(PACMFILTERDETAILS)
Eric Pouech's avatar
Eric Pouech committed
404
DECL_WINELIB_TYPE_AW(LPACMFILTERDETAILS)
405

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

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

428 429
DECL_WINELIB_TYPE_AW(ACMFILTERTAGDETAILS)
DECL_WINELIB_TYPE_AW(PACMFILTERTAGDETAILS)
Eric Pouech's avatar
Eric Pouech committed
430
DECL_WINELIB_TYPE_AW(LPACMFILTERTAGDETAILS)
431

432
typedef struct _ACMFORMATCHOOSEA
433 434 435
{
  DWORD           cbStruct;
  DWORD           fdwStyle;
436

437
  HWND          hwndOwner;
438

439
  PWAVEFORMATEX   pwfx;
440 441
  DWORD           cbwfx;
  LPCSTR          pszTitle;
442

443
  CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
444
  CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
445 446 447 448 449

  LPSTR           pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
450
  PWAVEFORMATEX   pwfxEnum;
451

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

458
typedef struct _ACMFORMATCHOOSEW
459 460 461
{
  DWORD           cbStruct;
  DWORD           fdwStyle;
462

463
  HWND          hwndOwner;
464

465
  PWAVEFORMATEX   pwfx;
466 467
  DWORD           cbwfx;
  LPCWSTR         pszTitle;
468

469
  WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
470
  WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
471 472 473 474 475 476

  LPWSTR          pszName;
  DWORD           cchName;

  DWORD           fdwEnum;
  LPWAVEFORMATEX  pwfxEnum;
477

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

484 485
DECL_WINELIB_TYPE_AW(ACMFORMATCHOOSE)
DECL_WINELIB_TYPE_AW(PACMFORMATCHOOSE)
Eric Pouech's avatar
Eric Pouech committed
486
DECL_WINELIB_TYPE_AW(LPACMFORMATCHOOSE)
487

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

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

510 511
DECL_WINELIB_TYPE_AW(ACMFORMATDETAILS)
DECL_WINELIB_TYPE_AW(PACMFORMATDETAILS)
Eric Pouech's avatar
Eric Pouech committed
512
DECL_WINELIB_TYPE_AW(LPACMFORMATDETAILS)
513

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

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

536 537
DECL_WINELIB_TYPE_AW(ACMFORMATTAGDETAILS)
DECL_WINELIB_TYPE_AW(PACMFORMATTAGDETAILS)
Eric Pouech's avatar
Eric Pouech committed
538
DECL_WINELIB_TYPE_AW(LPACMFORMATTAGDETAILS)
539

540 541 542 543 544 545 546 547 548 549 550 551 552 553
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
554
} ACMSTREAMHEADER, *PACMSTREAMHEADER, *LPACMSTREAMHEADER;
555 556 557 558 559

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

560
typedef BOOL (CALLBACK *ACMFILTERENUMCBA)(
561
  HACMDRIVERID hadid, PACMFILTERDETAILSA pafd,
562 563 564
  DWORD dwInstance, DWORD fdwSupport
);

565
typedef BOOL (CALLBACK *ACMFILTERENUMCBW)(
566
  HACMDRIVERID hadid, PACMFILTERDETAILSW pafd,
567 568 569
  DWORD dwInstance, DWORD fdwSupport
);

570 571
#define ACMFILTERENUMCB WINELIB_NAME_AW(ACMFILTERENUMCB)

572
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBA)(
573
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSA paftd,
574 575 576
  DWORD dwInstance, DWORD fdwSupport
);

577
typedef BOOL (CALLBACK *ACMFILTERTAGENUMCBW)(
578
  HACMDRIVERID hadid, PACMFILTERTAGDETAILSW paftd,
579 580 581
  DWORD dwInstance, DWORD fdwSupport
);

582 583
#define ACMFILTERTAGENUMCB WINELIB_NAME_AW(ACMFILTERTAGENUMCB)

584
typedef BOOL (CALLBACK *ACMFORMATENUMCBA)(
585
  HACMDRIVERID hadid, PACMFORMATDETAILSA pafd,
586 587 588
  DWORD dwInstance, DWORD fdwSupport
);

589
typedef BOOL (CALLBACK *ACMFORMATENUMCBW)(
590
  HACMDRIVERID hadid, PACMFORMATDETAILSW pafd,
591 592 593
  DWORD dwInstance, DWORD fdwSupport
);

594 595
#define ACMFORMATENUMCB WINELIB_NAME_AW(ACMFORMATENUMCB)

596
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBA)(
597
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSA paftd,
598 599 600
  DWORD dwInstance, DWORD fdwSupport
);

601
typedef BOOL (CALLBACK *ACMFORMATTAGENUMCBW)(
602
  HACMDRIVERID hadid, PACMFORMATTAGDETAILSW paftd,
603 604 605
  DWORD dwInstance, DWORD fdwSupport
);

606 607
#define ACMFORMATTAGENUMCB WINELIB_NAME_AW(ACMFORMATTAGENUMCB)

608 609 610 611
/***********************************************************************
 * Functions - Win32
 */

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

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

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

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

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

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

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

695 696
MMRESULT WINAPI acmFormatChooseA(
  PACMFORMATCHOOSEA pafmtc
697
);
698 699
MMRESULT WINAPI acmFormatChooseW(
  PACMFORMATCHOOSEW pafmtc
700
);
701 702
#define acmFormatChoose WINELIB_NAME_AW(acmFormatChoose)

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

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

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

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

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

776 777 778 779
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */

780
#endif  /* __WINE_MSACM_H */