source: GPL/branches/uniaud32-2.0/include/ossidc.h@ 335

Last change on this file since 335 was 265, checked in by Brendan Oakley, 18 years ago

Add debug logging functions to Uniaud32 for receiving output from Uniaud16, from Pavel

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