diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-20 18:30:46 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-20 18:30:46 +0000 |
commit | 4bc74b8aefb222cbc58f42b0fdbc28f50e5f1a35 (patch) | |
tree | bc9172bc7d35fd96c688237a0e9c5c60d1e33076 /sys/src/9/port/audioif.h | |
parent | 334c58f95e3c0834037448a37ca5d4f1c8589b4e (diff) |
audioif, mixer control
Diffstat (limited to 'sys/src/9/port/audioif.h')
-rw-r--r-- | sys/src/9/port/audioif.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sys/src/9/port/audioif.h b/sys/src/9/port/audioif.h new file mode 100644 index 000000000..9deaec039 --- /dev/null +++ b/sys/src/9/port/audioif.h @@ -0,0 +1,50 @@ +typedef struct Audio Audio; +typedef struct Volume Volume; + +struct Audio +{ + char *name; + + void *ctlr; + void *mixer; + + long (*read)(Audio *, void *, long, vlong); + long (*write)(Audio *, void *, long, vlong); + void (*close)(Audio *); + + 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 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); |