source: GPL/trunk/include/ossidc.h@ 485

Last change on this file since 485 was 485, checked in by David Azarewicz, 15 years ago

Added quirk for Gateway 2000 ICH2/AD1885

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