56 lines
1,007 B
C
56 lines
1,007 B
C
typedef struct Audio Audio;
|
|
typedef struct Volume Volume;
|
|
|
|
struct Audio
|
|
{
|
|
char *name;
|
|
|
|
void *ctlr;
|
|
void *mixer;
|
|
|
|
Ref audioopenr;
|
|
Ref audioopenw;
|
|
|
|
long (*read)(Audio *, void *, long, vlong);
|
|
long (*write)(Audio *, void *, long, vlong);
|
|
void (*close)(Audio *, int);
|
|
|
|
long (*volread)(Audio *, void *, long, vlong);
|
|
long (*volwrite)(Audio *, void *, long, vlong);
|
|
|
|
long (*ctl)(Audio *, void *, long, vlong);
|
|
long (*status)(Audio *, void *, long, vlong);
|
|
long (*buffered)(Audio *);
|
|
|
|
int delay;
|
|
int speed;
|
|
|
|
int ctlrno;
|
|
Audio *next;
|
|
};
|
|
|
|
enum {
|
|
Left,
|
|
Right,
|
|
Stereo,
|
|
Absolute,
|
|
};
|
|
|
|
#define Mono Left
|
|
|
|
struct Volume
|
|
{
|
|
char *name;
|
|
int reg;
|
|
int range;
|
|
int type;
|
|
int cap;
|
|
};
|
|
|
|
extern void addaudiocard(char *, int (*)(Audio *));
|
|
extern long genaudiovolread(Audio *adev, void *a, long n, vlong off,
|
|
Volume *vol, int (*volget)(Audio *, int, int *),
|
|
ulong caps);
|
|
extern long genaudiovolwrite(Audio *adev, void *a, long n, vlong off,
|
|
Volume *vol, int (*volset)(Audio *, int, int *),
|
|
ulong caps);
|