source: GPL/include/ossidc.h@ 18

Last change on this file since 18 was 18, checked in by vladest, 20 years ago

initial import

File size: 17.5 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
167#define IDC32_MIXER_OPEN 0x20
168#define IDC32_MIXER_SETVOLUME 0x21
169#define IDC32_MIXER_GETVOLUME 0x22
170#define IDC32_MIXER_SETPROPERTY 0x23
171#define IDC32_MIXER_GETPROPERTY 0x24
172#define IDC32_MIXER_QUERYCAPS 0x25
173#define IDC32_MIXER_CLOSE 0x26
174
175#define IDC32_MIDI_OPEN 0x30
176#define IDC32_MIDI_WRITE 0x31
177#define IDC32_MIDI_READ 0x32
178#define IDC32_MIDI_QUERYCAPS 0x33
179#define IDC32_MIDI_NOTEON 0x34
180#define IDC32_MIDI_NOTEOFF 0x35
181#define IDC32_MIDI_KEY_PRESSURE 0x36
182#define IDC32_MIDI_CONTROL_CHANGE 0x37
183#define IDC32_MIDI_PROGRAM_CHANGE 0x38
184#define IDC32_MIDI_CHANNEL_PRESSURE 0x39
185#define IDC32_MIDI_PITCH_BEND 0x3A
186#define IDC32_MIDI_CLOSE 0x3B
187
188#define IDC16_INIT 0
189#define IDC16_EXIT 1
190#define IDC16_WAVEOUT_BUFFER_DONE 2
191#define IDC16_WAVEIN_BUFFER_DONE 3
192#define IDC16_PROCESS 4
193
194#define IDC16_WAVEIN_IRQ 0
195#define IDC16_WAVEOUT_IRQ 1
196#define IDC16_MIDI_IRQ 2
197#define IDC16_CLOSE_UNI16 3
198
199// Default device nr (first detected audio device)
200#define OSS32_DEFAULT_DEVICE 0
201#define OSS32_DEFAULT_WAVE_DEVICE OSS32_DEFAULT_DEVICE
202#define OSS32_DEFAULT_MIXER_DEVICE OSS32_DEFAULT_DEVICE
203#define OSS32_DEFAULT_FMSYNTH_DEVICE OSS32_DEFAULT_DEVICE
204#define OSS32_DEFAULT_WAVETABLE_DEVICE OSS32_DEFAULT_DEVICE
205#define OSS32_DEFAULT_MPU401_DEVICE OSS32_DEFAULT_DEVICE
206#define OSS32_MAX_AUDIOCARDS 8
207
208
209// PCM data types: (DO NOT CHANGE without changing conversion table in sound.c!)
210#define OSS32_PCM_FORMAT_S8 0 //signed 8 bits sample
211#define OSS32_PCM_FORMAT_U8 1 //unsigned 8 bits sample
212#define OSS32_PCM_FORMAT_S16_LE 2 //signed 16 bits sample (little endian/Intel)
213#define OSS32_PCM_FORMAT_S16_BE 3 //signed 16 bits sample (big endian/Motorola)
214#define OSS32_PCM_FORMAT_U16_LE 4 //unsigned 16 bits sample (little endian/Intel)
215#define OSS32_PCM_FORMAT_U16_BE 5 //unsigned 16 bits sample (big endian/Motorola)
216#define OSS32_PCM_FORMAT_S24_LE 6 //signed 24 bits sample (little endian/Intel)
217#define OSS32_PCM_FORMAT_S24_BE 7 //signed 24 bits sample (big endian/Motorola)
218#define OSS32_PCM_FORMAT_U24_LE 8 //unsigned 24 bits sample (little endian/Intel)
219#define OSS32_PCM_FORMAT_U24_BE 9 //unsigned 24 bits sample (big endian/Motorola)
220#define OSS32_PCM_FORMAT_S32_LE 10 //signed 32 bits sample (little endian/Intel)
221#define OSS32_PCM_FORMAT_S32_BE 11 //signed 32 bits sample (big endian/Motorola)
222#define OSS32_PCM_FORMAT_U32_LE 12 //unsigned 32 bits sample (little endian/Intel)
223#define OSS32_PCM_FORMAT_U32_BE 13 //unsigned 32 bits sample (big endian/Motorola)
224#define OSS32_PCM_FORMAT_MULAW 14 //8 bps (compressed 16 bits sample)
225#define OSS32_PCM_FORMAT_ALAW 15 //8 bps (compressed 16 bits sample)
226#define OSS32_PCM_FORMAT_ADPCM 16 //4 bps (compressed 16 bits sample)
227#define OSS32_PCM_FORMAT_MPEG 17 //AC3?
228#define OSS32_PCM_MAX_FORMATS 18
229
230#define OSS32_MIX_VOLUME_MASTER_FRONT 0 //front DAC volume
231#define OSS32_MIX_VOLUME_MASTER_REAR 1 //rear DAC volume
232#define OSS32_MIX_VOLUME_PCM 2 //PCM volume (affects all wave streams)
233#define OSS32_MIX_VOLUME_MIDI 3 //MIDI volume
234#define OSS32_MIX_VOLUME_LINEIN 4 //Line-In volume
235#define OSS32_MIX_VOLUME_MIC 5 //Microphone volume
236#define OSS32_MIX_VOLUME_CD 6 //CD volume
237#define OSS32_MIX_VOLUME_SPDIF 7 //SPDIF volume
238#define OSS32_MIX_VOLUME_VIDEO 8 //Video volume
239#define OSS32_MIX_VOLUME_SPEAKER 9 //PC speaker volume
240#define OSS32_MIX_VOLUME_PHONE 10 //Phone volume
241#define OSS32_MIX_VOLUME_HEADPHONE 11 //Headphone volume
242#define OSS32_MIX_VOLUME_AUX 12 //Auxiliary volume
243#define OSS32_MIX_VOLUME_CAPTURE 13 //Recording volume
244#define OSS32_MIX_VOLUME_MAX OSS32_MIX_VOLUME_CAPTURE
245
246#define OSS32_MIX_FIRST_PROPERTY 20
247#define OSS32_MIX_INPUTSRC 20 //Recording source
248#define OSS32_MIX_LEVEL_BASS 21 //Bass level
249#define OSS32_MIX_LEVEL_TREBLE 22 //Treble level
250#define OSS32_MIX_LEVEL_3DCENTER 23 //3D center level
251#define OSS32_MIX_LEVEL_3DDEPTH 24 //3D depth level
252#define OSS32_MIX_SWITCH_MICBOOST 25 //Microphone boost switch
253#define OSS32_MIX_MAX_PROPERTY OSS32_MIX_SWITCH_MICBOOST
254#define OSS32_MIX_MAX_CONTROLS 26
255
256#define MAKE_VOLUME_LR(l, r) ((r << 8) | l)
257#define OSS32_MAX_VOLUME 100UL
258#define GET_VOLUME_R(vol) (vol >> 8)
259#define GET_VOLUME_L(vol) (vol & 0xff)
260
261//Do NOT change these definitions without changing string array in gpl\lib32\soundmixer.c!
262#define OSS32_MIX_RECSRC_MIC 0
263#define OSS32_MIX_RECSRC_CD 1
264#define OSS32_MIX_RECSRC_LINE 2
265#define OSS32_MIX_RECSRC_VIDEO 3
266#define OSS32_MIX_RECSRC_AUX 4
267#define OSS32_MIX_RECSRC_MIXER 5
268#define OSS32_MIX_RECSRC_MIXER_MONO 6
269#define OSS32_MIX_RECSRC_PHONE 7
270#define OSS32_MIX_RECSRC_SYNTH 8
271#define OSS32_MIX_RECSRC_MAX 9
272
273#define OSS32_SETBIT(a) (1UL<<a)
274#define OSS32_MIX_FLAG(a) OSS32_SETBIT(a)
275
276#define SIZE_DEVICE_NAME 32
277
278
279typedef struct
280{
281 char name[SIZE_DEVICE_NAME];
282 ULONG fuCtrlCaps;
283 ULONG fuRecCaps;
284} OSS32_MIXCAPS, *POSS32_MIXCAPS, FAR *LPOSS32_MIXCAPS;
285
286
287#define SIZE_DEVICE_NAME 32
288typedef struct
289{
290 ULONG nrchannels;
291 ULONG devicetype;
292 char name[SIZE_DEVICE_NAME];
293 //TODO:
294} OSS32_MIDICAPS, *POSS32_MIDICAPS, FAR *LPOSS32_MIDICAPS;
295
296#define OSS32_CAPS_WAVE_PLAYBACK 1
297#define OSS32_CAPS_WAVE_CAPTURE 2
298#define OSS32_CAPS_FMSYNTH_PLAYBACK 4
299#define OSS32_CAPS_WAVETABLE_PLAYBACK 8
300#define OSS32_CAPS_MPU401_PLAYBACK 16
301#define OSS32_CAPS_MPU401_CAPTURE 32
302
303#define OSS32_CAPS_PCM_FORMAT_S8 OSS32_SETBIT(OSS32_PCM_FORMAT_S8)
304#define OSS32_CAPS_PCM_FORMAT_U8 OSS32_SETBIT(OSS32_PCM_FORMAT_U8)
305#define OSS32_CAPS_PCM_FORMAT_S16_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S16_LE)
306#define OSS32_CAPS_PCM_FORMAT_S16_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S16_BE)
307#define OSS32_CAPS_PCM_FORMAT_U16_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U16_LE)
308#define OSS32_CAPS_PCM_FORMAT_U16_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U16_BE)
309#define OSS32_CAPS_PCM_FORMAT_S24_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S24_LE)
310#define OSS32_CAPS_PCM_FORMAT_S24_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S24_BE)
311#define OSS32_CAPS_PCM_FORMAT_U24_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U24_LE)
312#define OSS32_CAPS_PCM_FORMAT_U24_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U24_BE)
313#define OSS32_CAPS_PCM_FORMAT_S32_LE OSS32_SETBIT(OSS32_PCM_FORMAT_S32_LE)
314#define OSS32_CAPS_PCM_FORMAT_S32_BE OSS32_SETBIT(OSS32_PCM_FORMAT_S32_BE)
315#define OSS32_CAPS_PCM_FORMAT_U32_LE OSS32_SETBIT(OSS32_PCM_FORMAT_U32_LE)
316#define OSS32_CAPS_PCM_FORMAT_U32_BE OSS32_SETBIT(OSS32_PCM_FORMAT_U32_BE)
317#define OSS32_CAPS_PCM_FORMAT_MULAW OSS32_SETBIT(OSS32_PCM_FORMAT_MULAW)
318#define OSS32_CAPS_PCM_FORMAT_ALAW OSS32_SETBIT(OSS32_PCM_FORMAT_ALAW)
319#define OSS32_CAPS_PCM_FORMAT_ADPCM OSS32_SETBIT(OSS32_PCM_FORMAT_ADPCM)
320#define OSS32_CAPS_PCM_FORMAT_MPEG OSS32_SETBIT(OSS32_PCM_FORMAT_MPEG)
321
322#define OSS32_CAPS_PCM_FORMAT_8BPS (OSS32_CAPS_PCM_FORMAT_S8|OSS32_CAPS_PCM_FORMAT_U8)
323#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)
324#define OSS32_CAPS_PCM_FORMAT_16BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S16_LE|OSS32_CAPS_PCM_FORMAT_S16_BE)
325#define OSS32_CAPS_PCM_FORMAT_16BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U16_LE|OSS32_CAPS_PCM_FORMAT_U16_BE)
326#define OSS32_CAPS_PCM_FORMAT_16BPS_LE (OSS32_CAPS_PCM_FORMAT_S16_LE|OSS32_CAPS_PCM_FORMAT_U16_LE)
327#define OSS32_CAPS_PCM_FORMAT_16BPS_BE (OSS32_CAPS_PCM_FORMAT_S16_BE|OSS32_CAPS_PCM_FORMAT_U16_BE)
328#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)
329#define OSS32_CAPS_PCM_FORMAT_24BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S24_LE|OSS32_CAPS_PCM_FORMAT_S24_BE)
330#define OSS32_CAPS_PCM_FORMAT_24BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U24_LE|OSS32_CAPS_PCM_FORMAT_U24_BE)
331#define OSS32_CAPS_PCM_FORMAT_24BPS_LE (OSS32_CAPS_PCM_FORMAT_S24_LE|OSS32_CAPS_PCM_FORMAT_U24_LE)
332#define OSS32_CAPS_PCM_FORMAT_24BPS_BE (OSS32_CAPS_PCM_FORMAT_S24_BE|OSS32_CAPS_PCM_FORMAT_U24_BE)
333#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)
334#define OSS32_CAPS_PCM_FORMAT_32BPS_SIGNED (OSS32_CAPS_PCM_FORMAT_S32_LE|OSS32_CAPS_PCM_FORMAT_S32_BE)
335#define OSS32_CAPS_PCM_FORMAT_32BPS_UNSIGNED (OSS32_CAPS_PCM_FORMAT_U32_LE|OSS32_CAPS_PCM_FORMAT_U32_BE)
336#define OSS32_CAPS_PCM_FORMAT_32BPS_LE (OSS32_CAPS_PCM_FORMAT_S32_LE|OSS32_CAPS_PCM_FORMAT_U32_LE)
337#define OSS32_CAPS_PCM_FORMAT_32BPS_BE (OSS32_CAPS_PCM_FORMAT_S32_BE|OSS32_CAPS_PCM_FORMAT_U32_BE)
338
339#define OSS32_CAPS_PCM_RATE_5512 OSS32_SETBIT(0) /* 5512Hz */
340#define OSS32_CAPS_PCM_RATE_8000 OSS32_SETBIT(1) /* 8000Hz */
341#define OSS32_CAPS_PCM_RATE_11025 OSS32_SETBIT(2) /* 11025Hz */
342#define OSS32_CAPS_PCM_RATE_16000 OSS32_SETBIT(3) /* 16000Hz */
343#define OSS32_CAPS_PCM_RATE_22050 OSS32_SETBIT(4) /* 22050Hz */
344#define OSS32_CAPS_PCM_RATE_32000 OSS32_SETBIT(5) /* 32000Hz */
345#define OSS32_CAPS_PCM_RATE_44100 OSS32_SETBIT(6) /* 44100Hz */
346#define OSS32_CAPS_PCM_RATE_48000 OSS32_SETBIT(7) /* 48000Hz */
347#define OSS32_CAPS_PCM_RATE_64000 OSS32_SETBIT(8) /* 64000Hz */
348#define OSS32_CAPS_PCM_RATE_88200 OSS32_SETBIT(9) /* 88200Hz */
349#define OSS32_CAPS_PCM_RATE_96000 OSS32_SETBIT(10) /* 96000Hz */
350#define OSS32_CAPS_PCM_RATE_176400 OSS32_SETBIT(11) /* 176400Hz */
351#define OSS32_CAPS_PCM_RATE_192000 OSS32_SETBIT(12) /* 192000Hz */
352
353#define OSS32_CAPS_PCM_RATE_HALFDUPLEX OSS32_SETBIT(29) /* playback & record sample rates must be identical if both active */
354#define OSS32_CAPS_PCM_RATE_CONTINUOUS OSS32_SETBIT(30) /* continuous range */
355#define OSS32_CAPS_PCM_RATE_KNOT OSS32_SETBIT(31) /* supports more non-continuos rates */
356
357// Channel flags
358#define OSS32_CAPS_PCM_CHAN_MONO OSS32_SETBIT(0) // Mono
359#define OSS32_CAPS_PCM_CHAN_STEREO OSS32_SETBIT(1) // Stereo
360#define OSS32_CAPS_PCM_CHAN_QUAD OSS32_SETBIT(2) // 4 channels
361#define OSS32_CAPS_PCM_CHAN_5_1 OSS32_SETBIT(3) // 5.1 channels
362
363#define OSS32_MAX_WAVE_PLAYBACK_STREAMS 32
364#define OSS32_MAX_WAVE_CAPTURE_STREAMS 1
365
366typedef struct {
367 ULONG nrStreams; //nr of activate wave streams supported
368 ULONG ulMinChannels; //min nr of channels
369 ULONG ulMaxChannels; //max nr of channels
370 ULONG ulChanFlags; //channel flags
371 ULONG ulMinRate; //min sample rate
372 ULONG ulMaxRate; //max sample rate
373 ULONG ulRateFlags; //sample rate flags
374 ULONG ulDataFormats; //supported wave formats
375} WAVE_CAPS, *PWAVE_CAPS, FAR *LPWAVE_CAPS;
376
377typedef struct {
378 ULONG nrDevices; //total nr of audio devices
379 ULONG ulCaps; //device caps
380 char szDeviceName[SIZE_DEVICE_NAME];
381 char szMixerName[SIZE_DEVICE_NAME];
382 WAVE_CAPS waveOutCaps;
383 WAVE_CAPS waveInCaps;
384} OSS32_DEVCAPS, *POSS32_DEVCAPS, FAR *LPOSS32_DEVCAPS;
385
386typedef struct {
387 ULONG ulSampleRate;
388 ULONG ulBitsPerSample;
389 ULONG ulNumChannels;
390 ULONG ulDataType;
391 ULONG ulPeriodSize;
392} OSS32_HWPARAMS, *POSS32_HWPARAMS, FAR *LPOSS32_HWPARAMS;
393
394#pragma pack()
395
396#endif
Note: See TracBrowser for help on using the repository browser.