blob: 6d2668dfaced1553e67709cbccd993271830aa7c [file] [log] [blame]
Patrik Stridvall29c08dd1998-10-11 17:00:29 +00001/*
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00002 * Declarations for MSACM driver
3 *
4 * Copyright 1998 Patrik Stridvall
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000019 */
20
21#ifndef __WINE_MSACMDRV_H
22#define __WINE_MSACMDRV_H
23
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000024#include <stdarg.h>
25
Jim Aston2e1cafa1999-03-14 16:35:05 +000026#include "windef.h"
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000027#include "winbase.h"
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000028#include "mmsystem.h"
29#include "mmreg.h"
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000030#include "msacm.h"
31
32/***********************************************************************
33 * Types
34 */
35
36/***********************************************************************
37 * Defines/Enums
38 */
39
40#define MAKE_ACM_VERSION(mjr, mnr, bld) \
41 (((long)(mjr)<<24) | ((long)(mnr)<<16) | ((long)bld))
42
Vincent Béron9a624912002-05-31 23:06:46 +000043#define ACMDRVOPENDESC_SECTIONNAME_CHARS
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000044
45#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1)
46#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10)
47
48#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20)
49#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21)
50
51#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25)
52#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26)
53#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27)
54
55#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50)
56#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51)
57
58#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76)
59#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77)
60#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78)
61#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79)
62#define ACMDM_STREAM_RESET (ACMDM_BASE + 80)
63#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81)
64#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82)
65#define ACMDM_STREAM_UPDATE (ACMDM_BASE + 83)
66
67/***********************************************************************
68 * Structures
69 */
70
Alexandre Julliarda3960291999-02-26 11:11:13 +000071typedef struct _ACMDRVOPENDESCA
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000072{
73 DWORD cbStruct;
74 FOURCC fccType;
75 FOURCC fccComp;
76 DWORD dwVersion;
77 DWORD dwFlags;
78 DWORD dwError;
79 LPCSTR pszSectionName;
80 LPCSTR pszAliasName;
81 DWORD dnDevNode;
Alexandre Julliarda3960291999-02-26 11:11:13 +000082} ACMDRVOPENDESCA, *PACMDRVOPENDESCA;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000083
Alexandre Julliarda3960291999-02-26 11:11:13 +000084typedef struct _ACMDRVOPENDESCW
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000085{
86 DWORD cbStruct;
87 FOURCC fccType;
88 FOURCC fccComp;
89 DWORD dwVersion;
90 DWORD dwFlags;
91 DWORD dwError;
92 LPCWSTR pszSectionName;
93 LPCWSTR pszAliasName;
94 DWORD dnDevNode;
Alexandre Julliarda3960291999-02-26 11:11:13 +000095} ACMDRVOPENDESCW, *PACMDRVOPENDESCW;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000096
Alexandre Julliarda3960291999-02-26 11:11:13 +000097typedef struct _ACMDRVSTREAMINSTANCE
Patrik Stridvall29c08dd1998-10-11 17:00:29 +000098{
99 DWORD cbStruct;
Bertho Stultiens27a0ced1999-02-14 09:41:42 +0000100 PWAVEFORMATEX pwfxSrc;
101 PWAVEFORMATEX pwfxDst;
102 PWAVEFILTER pwfltr;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000103 DWORD dwCallback;
104 DWORD dwInstance;
105 DWORD fdwOpen;
106 DWORD fdwDriver;
107 DWORD dwDriver;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000108 HACMSTREAM has;
109} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000110
Alexandre Julliarda3960291999-02-26 11:11:13 +0000111typedef struct _ACMDRVSTREAMHEADER *PACMDRVSTREAMHEADER;
112typedef struct _ACMDRVSTREAMHEADER {
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000113 DWORD cbStruct;
114 DWORD fdwStatus;
115 DWORD dwUser;
116 LPBYTE pbSrc;
117 DWORD cbSrcLength;
118 DWORD cbSrcLengthUsed;
119 DWORD dwSrcUser;
120 LPBYTE pbDst;
121 DWORD cbDstLength;
122 DWORD cbDstLengthUsed;
123 DWORD dwDstUser;
124
125 DWORD fdwConvert;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000126 PACMDRVSTREAMHEADER *padshNext;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000127 DWORD fdwDriver;
128 DWORD dwDriver;
129
130 /* Internal fields for ACM */
131 DWORD fdwPrepared;
132 DWORD dwPrepared;
133 LPBYTE pbPreparedSrc;
134 DWORD cbPreparedSrcLength;
135 LPBYTE pbPreparedDst;
136 DWORD cbPreparedDstLength;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000137} ACMDRVSTREAMHEADER;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000138
139typedef struct _ACMDRVSTREAMSIZE
140{
141 DWORD cbStruct;
142 DWORD fdwSize;
143 DWORD cbSrcLength;
144 DWORD cbDstLength;
Alexandre Julliard32b1e672004-01-20 21:55:28 +0000145} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000146
Alexandre Julliarda3960291999-02-26 11:11:13 +0000147typedef struct _ACMDRVFORMATSUGGEST
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000148{
149 DWORD cbStruct;
150 DWORD fdwSuggest;
Bertho Stultiens27a0ced1999-02-14 09:41:42 +0000151 PWAVEFORMATEX pwfxSrc;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000152 DWORD cbwfxSrc;
Bertho Stultiens27a0ced1999-02-14 09:41:42 +0000153 PWAVEFORMATEX pwfxDst;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000154 DWORD cbwfxDst;
Alexandre Julliarda3960291999-02-26 11:11:13 +0000155} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST;
Patrik Stridvall29c08dd1998-10-11 17:00:29 +0000156
157#endif /* __WINE_MSACMDRV_H */