summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devaudio.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-07-03 03:42:37 +0200
committercinap_lenrek <cinap_lenrek@localhost>2011-07-03 03:42:37 +0200
commit86f316987d68dbd92dac0606b8010e9a937f61ce (patch)
treea575e65f795e79a62dae3efe996f686cd5afced2 /sys/src/9/port/devaudio.c
parentcd51302616be31e1654dd2ce02d705c079bd537d (diff)
audio: add delay control
Diffstat (limited to 'sys/src/9/port/devaudio.c')
-rw-r--r--sys/src/9/port/devaudio.c40
1 files changed, 15 insertions, 25 deletions
diff --git a/sys/src/9/port/devaudio.c b/sys/src/9/port/devaudio.c
index 193b9c9f7..783113b90 100644
--- a/sys/src/9/port/devaudio.c
+++ b/sys/src/9/port/devaudio.c
@@ -38,7 +38,7 @@ enum {
static Dirtab audiodir[] = {
".", {Qdir, 0, QTDIR}, 0, DMDIR|0555,
"audio", {Qaudio}, 0, 0666,
- "audioctl", {Qaudioctl}, 0, 0666,
+ "audioctl", {Qaudioctl}, 0, 0222,
"audiostat", {Qaudiostatus}, 0, 0444,
"volume", {Qvolume}, 0, 0666,
};
@@ -140,27 +140,21 @@ audioattach(char *spec)
i = 1<<adev->ctlrno;
if((attached & i) == 0 && adev->volwrite){
- attached |= i;
+ static char *settings[] = {
+ "speed 44100",
+ "delay 882", /* 20 ms */
+ "master 100",
+ "audio 100",
+ "head 100",
+ };
- strcpy(ac->buf, "speed 44100");
- if(!waserror()){
- adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);
- poperror();
- }
- strcpy(ac->buf, "master 100");
- if(!waserror()){
- adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);
- poperror();
- }
- strcpy(ac->buf, "audio 100");
- if(!waserror()){
- adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);
- poperror();
- }
- strcpy(ac->buf, "head 100");
- if(!waserror()){
- adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);
- poperror();
+ attached |= i;
+ for(i=0; i<nelem(settings); i++){
+ strcpy(ac->buf, settings[i]);
+ if(!waserror()){
+ adev->volwrite(adev, ac->buf, strlen(ac->buf), 0);
+ poperror();
+ }
}
}
@@ -202,9 +196,6 @@ audioread(Chan *c, void *a, long n, vlong off)
case Qaudio:
fn = adev->read;
break;
- case Qaudioctl:
- fn = adev->ctl;
- break;
case Qaudiostatus:
fn = adev->status;
break;
@@ -221,7 +212,6 @@ audioread(Chan *c, void *a, long n, vlong off)
nexterror();
}
switch((ulong)c->qid.path){
- case Qaudioctl:
case Qaudiostatus:
case Qvolume:
/* generate the text on first read */