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);