]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/port/audioif.h
fix devproc text chan leak
[plan9front.git] / sys / src / 9 / port / audioif.h
1 typedef struct Audio Audio;
2 typedef struct Volume Volume;
3
4 struct Audio
5 {
6         char *name;
7
8         void *ctlr;
9         void *mixer;
10
11         Ref audioopen;
12
13         long (*read)(Audio *, void *, long, vlong);
14         long (*write)(Audio *, void *, long, vlong);
15         void (*close)(Audio *);
16
17         long (*volread)(Audio *, void *, long, vlong);
18         long (*volwrite)(Audio *, void *, long, vlong);
19
20         long (*ctl)(Audio *, void *, long, vlong);
21         long (*status)(Audio *, void *, long, vlong);
22         long (*buffered)(Audio *);
23
24         int delay;
25         int speed;
26
27         int ctlrno;
28         Audio *next;
29 };
30
31 enum {
32         Left,
33         Right,
34         Stereo,
35         Absolute,
36 };
37
38 #define Mono Left
39
40 struct Volume
41 {
42         char *name;
43         int reg;
44         int range;
45         int type;
46         int cap;
47 };
48
49 extern void addaudiocard(char *, int (*)(Audio *));
50 extern long genaudiovolread(Audio *adev, void *a, long n, vlong off,
51         Volume *vol, int (*volget)(Audio *, int, int *),
52         ulong caps);
53 extern long genaudiovolwrite(Audio *adev, void *a, long n, vlong off,
54         Volume *vol, int (*volset)(Audio *, int, int *),
55         ulong caps);