summaryrefslogtreecommitdiff
path: root/sys/src/9/port/audioif.h
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-20 18:30:46 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-20 18:30:46 +0000
commit4bc74b8aefb222cbc58f42b0fdbc28f50e5f1a35 (patch)
treebc9172bc7d35fd96c688237a0e9c5c60d1e33076 /sys/src/9/port/audioif.h
parent334c58f95e3c0834037448a37ca5d4f1c8589b4e (diff)
audioif, mixer control
Diffstat (limited to 'sys/src/9/port/audioif.h')
-rw-r--r--sys/src/9/port/audioif.h50
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);