source: GPL/branches/uniaud32-next/include/ossidc.h

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

Added status idc function

File size: 17.4 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 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
286typedef 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
295typedef 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
373typedef 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
384typedef 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
393typedef 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
Note: See TracBrowser for help on using the repository browser.