audio: fix delay control, increase default buffer delay to 40ms

just doing a single sleep isnt enougth, as we get woken
up for every block!
This commit is contained in:
cinap_lenrek 2013-02-01 15:23:38 +01:00
parent 0b268440b9
commit d41f67c2b9
5 changed files with 8 additions and 5 deletions

View file

@ -381,7 +381,8 @@ ac97write(Audio *adev, void *vp, long n, vlong)
}
p += n;
}
sleep(&ring->r, outrate, ctlr);
while(outrate(ctlr) == 0)
sleep(&ring->r, outrate, ctlr);
return p - (uchar*)vp;
}

View file

@ -1288,7 +1288,8 @@ hdawrite(Audio *adev, void *vp, long n, vlong)
p += n;
}
hdakick(ctlr);
sleep(&ring->r, outrate, ctlr);
while(outrate(ctlr) == 0)
sleep(&ring->r, outrate, ctlr);
return p - (uchar*)vp;
}

View file

@ -549,7 +549,8 @@ audiowrite(Audio *adev, void *vp, long n, vlong)
}
p += n;
}
sleep(&ctlr->vous, ratebuf, ctlr);
while(ratebuf(ctlr) == 0)
sleep(&ctlr->vous, ratebuf, ctlr);
return p - (uchar*)vp;
}

View file

@ -146,7 +146,7 @@ audioattach(char *spec)
if((attached & i) == 0){
static char *settings[] = {
"speed 44100",
"delay 882", /* 20 ms */
"delay 1764", /* 40 ms */
"master 100",
"audio 100",
"head 100",

View file

@ -14,7 +14,7 @@ struct Audio
int maxfreq;
};
int audiodelay = 882;
int audiodelay = 1764; /* 40 ms */
int audiofreq = 44100;
int audiochan = 2;
int audiores = 16;