1 | /* $Id: ossidc.h,v 1.1.1.1 2003/07/02 13:56:58 eleph Exp $ */
|
---|
2 | /*
|
---|
3 | * Header for IDC definitions & declarations
|
---|
4 | *
|
---|
5 | * (C) 2000-2002 InnoTek Systemberatung GmbH
|
---|
6 | * (C) 2000-2001 Sander van Leeuwen (sandervl@xs4all.nl)
|
---|
7 | *
|
---|
8 | * This program is free software; you can redistribute it and/or
|
---|
9 | * modify it under the terms of the GNU General Public License as
|
---|
10 | * published by the Free Software Foundation; either version 2 of
|
---|
11 | * the License, or (at your option) any later version.
|
---|
12 | *
|
---|
13 | * This program is distributed in the hope that it will be useful,
|
---|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
16 | * GNU General Public License for more details.
|
---|
17 | *
|
---|
18 | * You should have received a copy of the GNU General Public
|
---|
19 | * License along with this program; if not, write to the Free
|
---|
20 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
|
---|
21 | * USA.
|
---|
22 | *
|
---|
23 | */
|
---|
24 |
|
---|
25 | #ifndef __OSSIDC_H__
|
---|
26 | #define __OSSIDC_H__
|
---|
27 |
|
---|
28 | #include <ossdefos2.h>
|
---|
29 | #include <osssound.h>
|
---|
30 | #include <osserror.h>
|
---|
31 |
|
---|
32 | #pragma pack(4)
|
---|
33 |
|
---|
34 | typedef BOOL (FAR48 __cdecl *IDC16_HANDLER)(ULONG cmd, ULONG param);
|
---|
35 |
|
---|
36 | //OSS types
|
---|
37 | typedef ULONG OSSSTREAMID; //stream id
|
---|
38 | typedef ULONG OSSRET; //OSS error code
|
---|
39 |
|
---|
40 | //IDC communication packet
|
---|
41 | typedef struct
|
---|
42 | {
|
---|
43 | OSSSTREAMID streamid; //IN: stream id
|
---|
44 | ULONG fileid;
|
---|
45 | union {
|
---|
46 | struct {
|
---|
47 | ULONG handler16; //IN: 16:16 address of pdd idc handler
|
---|
48 | } init;
|
---|
49 | struct {
|
---|
50 | ULONG devicenr; //IN: nr of detected device
|
---|
51 | ULONG streamtype; //IN: stream type
|
---|
52 | } open;
|
---|
53 | struct {
|
---|
54 | ULONG devicenr; //IN: nr of detected device
|
---|
55 | ULONG pDevCaps; //IN: 16:16 stack based pointer to OSS32_DEVCAPS structure
|
---|
56 | } devcaps;
|
---|
57 | struct {
|
---|
58 | ULONG position; //OUT: stream position
|
---|
59 | } getpos;
|
---|
60 | struct {
|
---|
61 | ULONG state; //OUT: stream state
|
---|
62 | } status;
|
---|
63 | struct {
|
---|
64 | ULONG hwparams; //IN: 16:16 pointer to OSS32_HWPARAMS structure
|
---|
65 | } sethwparams;
|
---|
66 | struct {
|
---|
67 | ULONG bytesavail; //OUT: bytes available in dma buffer
|
---|
68 | } getspace;
|
---|
69 | struct {
|
---|
70 | ULONG volume; //IN: wave stream volume
|
---|
71 | } setwavevol;
|
---|
72 | struct {
|
---|
73 | ULONG buffer; //IN: physical address of mmpm/2 buffer
|
---|
74 | ULONG size; //IN: size of mmpm/2 buffer
|
---|
75 | ULONG transferred; //OUT: nr of bytes transferred
|
---|
76 | } buffer;
|
---|
77 | struct {
|
---|
78 | ULONG midiByte;
|
---|
79 | } midiwrite;
|
---|
80 | struct {
|
---|
81 | ULONG buffer; //IN: data buffer
|
---|
82 | ULONG bufsize; //IN: size of data buffer
|
---|
83 | ULONG transferred; //OUT: nr of bytes transferred
|
---|
84 | } midiread;
|
---|
85 | struct {
|
---|
86 | ULONG pCaps; //IN: 16:16 stack based pointer to OSSMIDICAPS structure
|
---|
87 | } midicaps;
|
---|
88 | struct {
|
---|
89 | BYTE channel; //IN: channel nr
|
---|
90 | BYTE param1; //IN: midi command parameter 1
|
---|
91 | BYTE param2; //IN: midi command parameter 2
|
---|
92 | } midicmd;
|
---|
93 | struct {
|
---|
94 | ULONG line; //IN: mixer line
|
---|
95 | ULONG volume; //IN/OUT: volume (set/get)
|
---|
96 | } mixvol;
|
---|
97 | struct {
|
---|
98 | ULONG property; //IN: mixer property
|
---|
99 | ULONG value; //IN/OUT: property value (set/get)
|
---|
100 | } mixprop;
|
---|
101 | struct {
|
---|
102 | ULONG pCaps; //IN: 16:16 stack based pointer to OSSMIXCAPS structure
|
---|
103 | } mixcaps;
|
---|
104 | struct {
|
---|
105 | ULONG param1;
|
---|
106 | ULONG param2;
|
---|
107 | ULONG param3;
|
---|
108 | };
|
---|
109 | };
|
---|
110 | } IDC32_PACKET, NEAR *PIDC32_PACKET;
|
---|
111 |
|
---|
112 | //IOCTL commands
|
---|
113 | #define CAT_IOCTL_OSS32 0x92
|
---|
114 | #define IOCTL_OSS32_ATTACH 0x40
|
---|
115 | #define IOCTL_OSS32_VERSION 0x41
|
---|
116 | #define IOCTL_OSS32_GET_PCM_NUM 0x42
|
---|
117 | #define IOCTL_OSS32_PCM_CAPS 0x43
|
---|
118 | #define IOCTL_OSS32_SET_PCM 0x44
|
---|
119 | #define IOCTL_OSS32_GET_PCM 0x45
|
---|
120 | #define IOCTL_OSS32_CARDS_NUM 0x48
|
---|
121 | #define IOCTL_OSS32_CARD_INFO 0x49
|
---|
122 | #define IOCTL_OSS32_GET_POWER_STATE 0x4A
|
---|
123 | #define IOCTL_OSS32_SET_POWER_STATE 0x4B
|
---|
124 | #define IOCTL_OSS32_GET_CNTRLS_NUM 0x50
|
---|
125 | #define IOCTL_OSS32_GET_CNTRLS 0x51
|
---|
126 | #define IOCTL_OSS32_CNTRL_INFO 0x52
|
---|
127 | #define IOCTL_OSS32_CNTRL_GET 0x53
|
---|
128 | #define IOCTL_OSS32_CNTRL_PUT 0x54
|
---|
129 | #define IOCTL_OSS32_CNTRL_WAIT 0x55
|
---|
130 |
|
---|
131 | #define IOCTL_OSS32_PCM_OPEN 0x60
|
---|
132 | #define IOCTL_OSS32_PCM_CLOSE 0x61
|
---|
133 | #define IOCTL_OSS32_PCM_READ 0x62
|
---|
134 | #define IOCTL_OSS32_PCM_WRITE 0x63
|
---|
135 | #define IOCTL_OSS32_PCM_PAUSE 0x64
|
---|
136 | #define IOCTL_OSS32_PCM_RESUME 0x65
|
---|
137 | #define IOCTL_OSS32_PCM_DROP 0x66
|
---|
138 | #define IOCTL_OSS32_PCM_DRAIN 0x67
|
---|
139 | #define IOCTL_OSS32_PCM_STATUS 0x68
|
---|
140 | #define IOCTL_OSS32_PCM_REFINEHWPARAMS 0x69
|
---|
141 | #define IOCTL_OSS32_PCM_SETHWPARAMS 0x70
|
---|
142 | #define IOCTL_OSS32_PCM_SETSWPARAMS 0x71
|
---|
143 | #define IOCTL_OSS32_PCM_PREPARE 0x72
|
---|
144 | #define IOCTL_OSS32_PCM_WAIT_INT 0x73
|
---|
145 | #define IOCTL_OSS32_PCM_START 0x74
|
---|
146 |
|
---|
147 | #define IOCTL_OSS32_PCM_CLOSE_ALL 0x1F
|
---|
148 | #define IOCTL_OSS32_PCM_CLOSE_16 0x1F+1
|
---|
149 | //IDC commands (16->32 bits)
|
---|
150 | #define IDC32_OSS32_INIT 0x00
|
---|
151 | #define IDC32_OSS32_EXIT 0x01
|
---|
152 | #define IDC32_OSS32_QUERYDEVCAPS 0x02
|
---|
153 | #define IDC32_OSS32_APM_SUSPEND 0x03
|
---|
154 | #define IDC32_OSS32_APM_RESUME 0x04
|
---|
155 |
|
---|
156 | #define IDC32_WAVE_OPEN 0x10
|
---|
157 | #define IDC32_WAVE_CLOSE 0x11
|
---|
158 | #define IDC32_WAVE_ADDBUFFER 0x12
|
---|
159 | #define IDC32_WAVE_PREPARE 0x13
|
---|
160 | #define IDC32_WAVE_START 0x14
|
---|
161 | #define IDC32_WAVE_STOP 0x15
|
---|
162 | #define IDC32_WAVE_RESET 0x16
|
---|
163 | #define IDC32_WAVE_RESUME 0x17
|
---|
164 | #define IDC32_WAVE_PAUSE 0x18
|
---|
165 | #define IDC32_WAVE_GETSPACE 0x19
|
---|
166 | #define IDC32_WAVE_SETHWPARAMS 0x1A
|
---|
167 | #define IDC32_WAVE_GETPOS 0x1B
|
---|
168 | #define IDC32_WAVE_SETVOLUME 0x1C
|
---|
169 | #define IDC32_WAVE_GETHWPTR 0x1D
|
---|
170 | #define IDC32_WAVE_GETSTATUS 0x1E
|
---|
171 |
|
---|
172 | #define IDC32_MIXER_OPEN 0x20
|
---|
173 | #define IDC32_MIXER_SETVOLUME 0x21
|
---|
174 | #define IDC32_MIXER_GETVOLUME 0x22
|
---|
175 | #define IDC32_MIXER_SETPROPERTY 0x23
|
---|
176 | #define IDC32_MIXER_GETPROPERTY 0x24
|
---|
177 | #define IDC32_MIXER_QUERYCAPS 0x25
|
---|
178 | #define IDC32_MIXER_CLOSE 0x26
|
---|
179 |
|
---|
180 | #define IDC32_MIDI_OPEN 0x30
|
---|
181 | #define IDC32_MIDI_WRITE 0x31
|
---|
182 | #define IDC32_MIDI_READ 0x32
|
---|
183 | #define IDC32_MIDI_QUERYCAPS 0x33
|
---|
184 | #define IDC32_MIDI_NOTEON 0x34
|
---|
185 | #define IDC32_MIDI_NOTEOFF 0x35
|
---|
186 | #define IDC32_MIDI_KEY_PRESSURE 0x36
|
---|
187 | #define IDC32_MIDI_CONTROL_CHANGE 0x37
|
---|
188 | #define IDC32_MIDI_PROGRAM_CHANGE 0x38
|
---|
189 | #define IDC32_MIDI_CHANNEL_PRESSURE 0x39
|
---|
190 | #define IDC32_MIDI_PITCH_BEND 0x3A
|
---|
191 | #define IDC32_MIDI_CLOSE 0x3B
|
---|
192 | #define IDC32_DEBUG_STRING 0x3C
|
---|
193 |
|
---|
194 | #define IDC16_INIT 0
|
---|
195 | #define IDC16_EXIT 1
|
---|
196 | #define IDC16_WAVEOUT_BUFFER_DONE 2
|
---|
197 | #define IDC16_WAVEIN_BUFFER_DONE 3
|
---|
198 | #define IDC16_PROCESS 4
|
---|
199 |
|
---|
200 | #define IDC16_WAVEIN_IRQ 0
|
---|
201 | #define IDC16_WAVEOUT_IRQ 1
|
---|
202 | #define IDC16_MIDI_IRQ 2
|
---|
203 | #define IDC16_CLOSE_UNI16 3
|
---|
204 |
|
---|
205 | // Default device nr (first detected audio device)
|
---|
206 | #define OSS32_DEFAULT_DEVICE 0
|
---|
207 | #define OSS32_DEFAULT_WAVE_DEVICE OSS32_DEFAULT_DEVICE
|
---|
208 | #define OSS32_DEFAULT_MIXER_DEVICE OSS32_DEFAULT_DEVICE
|
---|
209 | #define OSS32_DEFAULT_FMSYNTH_DEVICE OSS32_DEFAULT_DEVICE
|
---|
210 | #define OSS32_DEFAULT_WAVETABLE_DEVICE OSS32_DEFAULT_DEVICE
|
---|
211 | #define OSS32_DEFAULT_MPU401_DEVICE OSS32_DEFAULT_DEVICE
|
---|
212 | #define OSS32_MAX_AUDIOCARDS 8
|
---|
213 |
|
---|
214 |
|
---|
215 | // PCM data types: (DO NOT CHANGE without changing conversion table in sound.c!)
|
---|
216 | #define OSS32_PCM_FORMAT_S8 0 //signed 8 bits sample
|
---|
217 | #define OSS32_PCM_FORMAT_U8 1 //unsigned 8 bits sample
|
---|
218 | #define OSS32_PCM_FORMAT_S16_LE 2 //signed 16 bits sample (little endian/Intel)
|
---|
219 | #define OSS32_PCM_FORMAT_S16_BE 3 //signed 16 bits sample (big endian/Motorola)
|
---|
220 | #define OSS32_PCM_FORMAT_U16_LE 4 //unsigned 16 bits sample (little endian/Intel)
|
---|
221 | #define OSS32_PCM_FORMAT_U16_BE 5 //unsigned 16 bits sample (big endian/Motorola)
|
---|
222 | #define OSS32_PCM_FORMAT_S24_LE 6 //signed 24 bits sample (little endian/Intel)
|
---|
223 | #define OSS32_PCM_FORMAT_S24_BE 7 //signed 24 bits sample (big endian/Motorola)
|
---|
224 | #define OSS32_PCM_FORMAT_U24_LE 8 //unsigned 24 bits sample (little endian/Intel)
|
---|
225 | #define OSS32_PCM_FORMAT_U24_BE 9 //unsigned 24 bits sample (big endian/Motorola)
|
---|
226 | #define OSS32_PCM_FORMAT_S32_LE 10 //signed 32 bits sample (little endian/Intel)
|
---|
227 | #define OSS32_PCM_FORMAT_S32_BE 11 //signed 32 bits sample (big endian/Motorola)
|
---|
228 | #define OSS32_PCM_FORMAT_U32_LE 12 //unsigned 32 bits sample (little endian/Intel)
|
---|
229 | #define OSS32_PCM_FORMAT_U32_BE 13 //unsigned 32 bits sample (big endian/Motorola)
|
---|
230 | #define OSS32_PCM_FORMAT_MULAW 14 //8 bps (compressed 16 bits sample)
|
---|
231 | #define OSS32_PCM_FORMAT_ALAW 15 //8 bps (compressed 16 bits sample)
|
---|
232 | #define OSS32_PCM_FORMAT_ADPCM 16 //4 bps (compressed 16 bits sample)
|
---|
233 | #define OSS32_PCM_FORMAT_MPEG 17 //AC3?
|
---|
234 | #define OSS32_PCM_MAX_FORMATS 18
|
---|
235 |
|
---|
236 | #define OSS32_MIX_VOLUME_MASTER_FRONT 0 //front DAC volume
|
---|
237 | #define OSS32_MIX_VOLUME_MASTER_REAR 1 //rear DAC volume
|
---|
238 | #define OSS32_MIX_VOLUME_PCM 2 //PCM volume (affects all wave streams)
|
---|
239 | #define OSS32_MIX_VOLUME_MIDI 3 //MIDI volume
|
---|
240 | #define OSS32_MIX_VOLUME_LINEIN 4 //Line-In volume
|
---|
241 | #define OSS32_MIX_VOLUME_MIC 5 //Microphone volume
|
---|
242 | #define OSS32_MIX_VOLUME_CD 6 //CD volume
|
---|
243 | #define OSS32_MIX_VOLUME_SPDIF 7 //SPDIF volume
|
---|
244 | #define OSS32_MIX_VOLUME_VIDEO 8 //Video volume
|
---|
245 | #define OSS32_MIX_VOLUME_PCSPEAKER 9 //PC speaker volume
|
---|
246 | #define OSS32_MIX_VOLUME_PHONE 10 //Phone volume
|
---|
247 | #define OSS32_MIX_VOLUME_HEADPHONE 11 //Headphone volume
|
---|
248 | #define OSS32_MIX_VOLUME_AUX 12 //Auxiliary volume
|
---|
249 | #define OSS32_MIX_VOLUME_CAPTURE 13 //Recording volume
|
---|
250 | #define OSS32_MIX_VOLUME_SPEAKER 14 //Speaker volume
|
---|
251 | //DAZ not used #define OSS32_MIX_VOLUME_MAX OSS32_MIX_VOLUME_SPEAKER
|
---|
252 |
|
---|
253 | #define OSS32_MIX_FIRST_PROPERTY 20
|
---|
254 | #define OSS32_MIX_INPUTSRC 20 //Recording source
|
---|
255 | #define OSS32_MIX_LEVEL_BASS 21 //Bass level
|
---|
256 | #define OSS32_MIX_LEVEL_TREBLE 22 //Treble level
|
---|
257 | #define OSS32_MIX_LEVEL_3DCENTER 23 //3D center level
|
---|
258 | #define OSS32_MIX_LEVEL_3DDEPTH 24 //3D depth level
|
---|
259 | #define OSS32_MIX_SWITCH_MICBOOST 25 //Microphone boost switch
|
---|
260 | #define OSS32_MIX_MAX_PROPERTY OSS32_MIX_SWITCH_MICBOOST
|
---|
261 | #define OSS32_MIX_MAX_CONTROLS 26
|
---|
262 |
|
---|
263 | #define MAKE_VOLUME_LR(l, r) ((r << 8) | l)
|
---|
264 | #define OSS32_MAX_VOLUME 100UL
|
---|
265 | #define GET_VOLUME_R(vol) (vol >> 8)
|
---|
266 | #define GET_VOLUME_L(vol) (vol & 0xff)
|
---|
267 |
|
---|
268 | //Do NOT change these definitions without changing string array in gpl\lib32\soundmixer.c!
|
---|
269 | #define OSS32_MIX_RECSRC_MIC 0
|
---|
270 | #define OSS32_MIX_RECSRC_CD 1
|
---|
271 | #define OSS32_MIX_RECSRC_LINE 2
|
---|
272 | #define OSS32_MIX_RECSRC_VIDEO 3
|
---|
273 | #define OSS32_MIX_RECSRC_AUX 4
|
---|
274 | #define OSS32_MIX_RECSRC_MIXER 5
|
---|
275 | #define OSS32_MIX_RECSRC_MIXER_MONO 6
|
---|
276 | #define OSS32_MIX_RECSRC_PHONE 7
|
---|
277 | #define OSS32_MIX_RECSRC_SYNTH 8
|
---|
278 | #define OSS32_MIX_RECSRC_MAX 9
|
---|
279 |
|
---|
280 | #define OSS32_SETBIT(a) (1UL<<a)
|
---|
281 | #define OSS32_MIX_FLAG(a) OSS32_SETBIT(a)
|
---|
282 |
|
---|
283 | #define SIZE_DEVICE_NAME 32
|
---|
284 |
|
---|
285 |
|
---|
286 | typedef struct
|
---|
287 | {
|
---|
288 | char name[SIZE_DEVICE_NAME];
|
---|
289 | ULONG fuCtrlCaps;
|
---|
290 | ULONG fuRecCaps;
|
---|
291 | } OSS32_MIXCAPS, *POSS32_MIXCAPS, FAR *LPOSS32_MIXCAPS;
|
---|
292 |
|
---|
293 |
|
---|
294 | #define SIZE_DEVICE_NAME 32
|
---|
295 | typedef struct
|
---|
296 | {
|
---|
297 | ULONG nrchannels;
|
---|
298 | ULONG devicetype;
|
---|
299 | char name[SIZE_DEVICE_NAME];
|
---|
300 | //TODO:
|
---|
301 | } OSS32_MIDICAPS, *POSS32_MIDICAPS, FAR *LPOSS32_MIDICAPS;
|
---|
302 |
|
---|
303 | #define OSS32_CAPS_WAVE_PLAYBACK 1
|
---|
304 | #define OSS32_CAPS_WAVE_CAPTURE 2
|
---|
305 | #define OSS32_CAPS_FMSYNTH_PLAYBACK 4
|
---|
306 | #define OSS32_CAPS_WAVETABLE_PLAYBACK 8
|
---|
307 | #define OSS32_CAPS_MPU401_PLAYBACK 16
|
---|
308 | #define OSS32_CAPS_MPU401_CAPTURE 32
|
---|
309 |
|
---|
310 | #define OSS32_CAPS_PCM_FORMAT_S8 OSS32_SETBIT(OSS32_PCM_FORMAT_S8)
|
---|
311 | #define OSS32_CAPS_PCM_FORMAT_U8 OSS32_SETBIT(OSS32_PCM_FORMAT_U8)
|
---|
312 | #define OSS32_CAPS_PCM_FORMAT_S16_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S16_LE)
|
---|
313 | #define OSS32_CAPS_PCM_FORMAT_S16_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S16_BE)
|
---|
314 | #define OSS32_CAPS_PCM_FORMAT_U16_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U16_LE)
|
---|
315 | #define OSS32_CAPS_PCM_FORMAT_U16_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U16_BE)
|
---|
316 | #define OSS32_CAPS_PCM_FORMAT_S24_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S24_LE)
|
---|
317 | #define OSS32_CAPS_PCM_FORMAT_S24_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S24_BE)
|
---|
318 | #define OSS32_CAPS_PCM_FORMAT_U24_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U24_LE)
|
---|
319 | #define OSS32_CAPS_PCM_FORMAT_U24_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U24_BE)
|
---|
320 | #define OSS32_CAPS_PCM_FORMAT_S32_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S32_LE)
|
---|
321 | #define OSS32_CAPS_PCM_FORMAT_S32_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S32_BE)
|
---|
322 | #define OSS32_CAPS_PCM_FORMAT_U32_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U32_LE)
|
---|
323 | #define OSS32_CAPS_PCM_FORMAT_U32_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U32_BE)
|
---|
324 | #define OSS32_CAPS_PCM_FORMAT_MULAW OSS32_SETBIT(OSS32_PCM_FORMAT_MULAW)
|
---|
325 | #define OSS32_CAPS_PCM_FORMAT_ALAW OSS32_SETBIT(OSS32_PCM_FORMAT_ALAW)
|
---|
326 | #define OSS32_CAPS_PCM_FORMAT_ADPCM OSS32_SETBIT(OSS32_PCM_FORMAT_ADPCM)
|
---|
327 | #define OSS32_CAPS_PCM_FORMAT_MPEG OSS32_SETBIT(OSS32_PCM_FORMAT_MPEG)
|
---|
328 |
|
---|
329 | #define OSS32_CAPS_PCM_FORMAT_8BPS (OSS32_CAPS_PCM_FORMAT_S8|OSS32_CAPS_PCM_FORMAT_U8)
|
---|
330 | #define OSS32_CAPS_PCM_FORMAT_16BPS (OSS32_CAPS_PCM_FORMAT_S16_LE|OSS32_CAPS_PCM_FORMAT_S16_BE|OSS32_CAPS_PCM_FORMAT_U16_LE|OSS32_CAPS_PCM_FORMAT_U16_BE)
|
---|
331 | #define OSS32_CAPS_PCM_FORMAT_16BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S16_LE|OSS32_CAPS_PCM_FORMAT_S16_BE)
|
---|
332 | #define OSS32_CAPS_PCM_FORMAT_16BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U16_LE|OSS32_CAPS_PCM_FORMAT_U16_BE)
|
---|
333 | #define OSS32_CAPS_PCM_FORMAT_16BPS_LE (OSS32_CAPS_PCM_FORMAT_S16_LE|OSS32_CAPS_PCM_FORMAT_U16_LE)
|
---|
334 | #define OSS32_CAPS_PCM_FORMAT_16BPS_BE (OSS32_CAPS_PCM_FORMAT_S16_BE|OSS32_CAPS_PCM_FORMAT_U16_BE)
|
---|
335 | #define OSS32_CAPS_PCM_FORMAT_24BPS (OSS32_CAPS_PCM_FORMAT_S24_LE|OSS32_CAPS_PCM_FORMAT_S24_BE|OSS32_CAPS_PCM_FORMAT_U24_LE|OSS32_CAPS_PCM_FORMAT_U24_BE)
|
---|
336 | #define OSS32_CAPS_PCM_FORMAT_24BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S24_LE|OSS32_CAPS_PCM_FORMAT_S24_BE)
|
---|
337 | #define OSS32_CAPS_PCM_FORMAT_24BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U24_LE|OSS32_CAPS_PCM_FORMAT_U24_BE)
|
---|
338 | #define OSS32_CAPS_PCM_FORMAT_24BPS_LE (OSS32_CAPS_PCM_FORMAT_S24_LE|OSS32_CAPS_PCM_FORMAT_U24_LE)
|
---|
339 | #define OSS32_CAPS_PCM_FORMAT_24BPS_BE (OSS32_CAPS_PCM_FORMAT_S24_BE|OSS32_CAPS_PCM_FORMAT_U24_BE)
|
---|
340 | #define OSS32_CAPS_PCM_FORMAT_32BPS (OSS32_CAPS_PCM_FORMAT_S32_LE|OSS32_CAPS_PCM_FORMAT_S32_BE|OSS32_CAPS_PCM_FORMAT_U32_LE|OSS32_CAPS_PCM_FORMAT_U32_BE)
|
---|
341 | #define OSS32_CAPS_PCM_FORMAT_32BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S32_LE|OSS32_CAPS_PCM_FORMAT_S32_BE)
|
---|
342 | #define OSS32_CAPS_PCM_FORMAT_32BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U32_LE|OSS32_CAPS_PCM_FORMAT_U32_BE)
|
---|
343 | #define OSS32_CAPS_PCM_FORMAT_32BPS_LE (OSS32_CAPS_PCM_FORMAT_S32_LE|OSS32_CAPS_PCM_FORMAT_U32_LE)
|
---|
344 | #define OSS32_CAPS_PCM_FORMAT_32BPS_BE (OSS32_CAPS_PCM_FORMAT_S32_BE|OSS32_CAPS_PCM_FORMAT_U32_BE)
|
---|
345 |
|
---|
346 | #define OSS32_CAPS_PCM_RATE_5512 OSS32_SETBIT(0) /* 5512Hz */
|
---|
347 | #define OSS32_CAPS_PCM_RATE_8000 OSS32_SETBIT(1) /* 8000Hz */
|
---|
348 | #define OSS32_CAPS_PCM_RATE_11025 OSS32_SETBIT(2) /* 11025Hz */
|
---|
349 | #define OSS32_CAPS_PCM_RATE_16000 OSS32_SETBIT(3) /* 16000Hz */
|
---|
350 | #define OSS32_CAPS_PCM_RATE_22050 OSS32_SETBIT(4) /* 22050Hz */
|
---|
351 | #define OSS32_CAPS_PCM_RATE_32000 OSS32_SETBIT(5) /* 32000Hz */
|
---|
352 | #define OSS32_CAPS_PCM_RATE_44100 OSS32_SETBIT(6) /* 44100Hz */
|
---|
353 | #define OSS32_CAPS_PCM_RATE_48000 OSS32_SETBIT(7) /* 48000Hz */
|
---|
354 | #define OSS32_CAPS_PCM_RATE_64000 OSS32_SETBIT(8) /* 64000Hz */
|
---|
355 | #define OSS32_CAPS_PCM_RATE_88200 OSS32_SETBIT(9) /* 88200Hz */
|
---|
356 | #define OSS32_CAPS_PCM_RATE_96000 OSS32_SETBIT(10) /* 96000Hz */
|
---|
357 | #define OSS32_CAPS_PCM_RATE_176400 OSS32_SETBIT(11) /* 176400Hz */
|
---|
358 | #define OSS32_CAPS_PCM_RATE_192000 OSS32_SETBIT(12) /* 192000Hz */
|
---|
359 |
|
---|
360 | #define OSS32_CAPS_PCM_RATE_HALFDUPLEX OSS32_SETBIT(29) /* playback & record sample rates must be identical if both active */
|
---|
361 | #define OSS32_CAPS_PCM_RATE_CONTINUOUS OSS32_SETBIT(30) /* continuous range */
|
---|
362 | #define OSS32_CAPS_PCM_RATE_KNOT OSS32_SETBIT(31) /* supports more non-continuos rates */
|
---|
363 |
|
---|
364 | // Channel flags
|
---|
365 | #define OSS32_CAPS_PCM_CHAN_MONO OSS32_SETBIT(0) // Mono
|
---|
366 | #define OSS32_CAPS_PCM_CHAN_STEREO OSS32_SETBIT(1) // Stereo
|
---|
367 | #define OSS32_CAPS_PCM_CHAN_QUAD OSS32_SETBIT(2) // 4 channels
|
---|
368 | #define OSS32_CAPS_PCM_CHAN_5_1 OSS32_SETBIT(3) // 5.1 channels
|
---|
369 |
|
---|
370 | #define OSS32_MAX_WAVE_PLAYBACK_STREAMS 32
|
---|
371 | #define OSS32_MAX_WAVE_CAPTURE_STREAMS 1
|
---|
372 |
|
---|
373 | typedef struct {
|
---|
374 | ULONG nrStreams; //nr of activate wave streams supported
|
---|
375 | ULONG ulMinChannels; //min nr of channels
|
---|
376 | ULONG ulMaxChannels; //max nr of channels
|
---|
377 | ULONG ulChanFlags; //channel flags
|
---|
378 | ULONG ulMinRate; //min sample rate
|
---|
379 | ULONG ulMaxRate; //max sample rate
|
---|
380 | ULONG ulRateFlags; //sample rate flags
|
---|
381 | ULONG ulDataFormats; //supported wave formats
|
---|
382 | } WAVE_CAPS, *PWAVE_CAPS, FAR *LPWAVE_CAPS;
|
---|
383 |
|
---|
384 | typedef struct {
|
---|
385 | ULONG nrDevices; //total nr of audio devices
|
---|
386 | ULONG ulCaps; //device caps
|
---|
387 | char szDeviceName[SIZE_DEVICE_NAME];
|
---|
388 | char szMixerName[SIZE_DEVICE_NAME];
|
---|
389 | WAVE_CAPS waveOutCaps;
|
---|
390 | WAVE_CAPS waveInCaps;
|
---|
391 | } OSS32_DEVCAPS, *POSS32_DEVCAPS, FAR *LPOSS32_DEVCAPS;
|
---|
392 |
|
---|
393 | typedef struct {
|
---|
394 | ULONG ulSampleRate;
|
---|
395 | ULONG ulBitsPerSample;
|
---|
396 | ULONG ulNumChannels;
|
---|
397 | ULONG ulDataType;
|
---|
398 | ULONG ulPeriodSize;
|
---|
399 | } OSS32_HWPARAMS, *POSS32_HWPARAMS, FAR *LPOSS32_HWPARAMS;
|
---|
400 |
|
---|
401 | #pragma pack()
|
---|
402 |
|
---|
403 | #endif
|
---|