mirror of https://github.com/ericonr/sndio.git
Merge branch 'master' into mixer
This commit is contained in:
commit
03799aab3f
|
@ -83,8 +83,10 @@ case `uname` in
|
||||||
-DHAVE_SOCK_CLOEXEC -DHAVE_CLOCK_GETTIME'
|
-DHAVE_SOCK_CLOEXEC -DHAVE_CLOCK_GETTIME'
|
||||||
;;
|
;;
|
||||||
DragonFly|FreeBSD)
|
DragonFly|FreeBSD)
|
||||||
|
oss=yes
|
||||||
umidi=yes
|
umidi=yes
|
||||||
user=_sndio
|
user=_sndio
|
||||||
|
so_ldflags="-Wl,-soname=libsndio.so.\${MAJ}.\${MIN}"
|
||||||
so_link="libsndio.so"
|
so_link="libsndio.so"
|
||||||
defs='-DHAVE_ARC4RANDOM -DHAVE_ISSETUGID \\\
|
defs='-DHAVE_ARC4RANDOM -DHAVE_ISSETUGID \\\
|
||||||
-DHAVE_STRLCAT -DHAVE_STRLCPY -DHAVE_STRTONUM \\\
|
-DHAVE_STRLCAT -DHAVE_STRLCPY -DHAVE_STRTONUM \\\
|
||||||
|
|
|
@ -264,6 +264,21 @@ sio_oss_getfd(const char *str, unsigned int mode, int nbio)
|
||||||
DPERROR(path);
|
DPERROR(path);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if the device supports playing/recording.
|
||||||
|
* Unfortunately, it's possible for devices to be opened RDWR
|
||||||
|
* even when they don't support playing/recording.
|
||||||
|
*/
|
||||||
|
if (mode & SIO_PLAY && ioctl(fd, SNDCTL_DSP_GETOSPACE, &bi) < 0) {
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (mode & SIO_REC && ioctl(fd, SNDCTL_DSP_GETISPACE, &bi) < 0) {
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
val = 1;
|
val = 1;
|
||||||
if (ioctl(fd, SNDCTL_DSP_LOW_WATER, &val) < 0) {
|
if (ioctl(fd, SNDCTL_DSP_LOW_WATER, &val) < 0) {
|
||||||
DPERROR("sio_oss_start: LOW_WATER");
|
DPERROR("sio_oss_start: LOW_WATER");
|
||||||
|
@ -383,13 +398,25 @@ sio_oss_setpar(struct sio_hdl *sh, struct sio_par *par)
|
||||||
struct sio_oss_hdl *hdl = (struct sio_oss_hdl *)sh;
|
struct sio_oss_hdl *hdl = (struct sio_oss_hdl *)sh;
|
||||||
unsigned int i, round, bufsz;
|
unsigned int i, round, bufsz;
|
||||||
int frag_max, frag_shift, frag_count, frag;
|
int frag_max, frag_shift, frag_count, frag;
|
||||||
|
unsigned int le, sig, msb;
|
||||||
|
|
||||||
|
le = par->le;
|
||||||
|
sig = par->sig;
|
||||||
|
msb = par->msb;
|
||||||
|
|
||||||
|
if (le == ~0U)
|
||||||
|
le = 0;
|
||||||
|
if (sig == ~0U)
|
||||||
|
sig = 0;
|
||||||
|
if (msb == ~0U)
|
||||||
|
msb = 0;
|
||||||
|
|
||||||
hdl->fmt = AFMT_S16_LE;
|
hdl->fmt = AFMT_S16_LE;
|
||||||
for (i = 0; i < sizeof(formats)/sizeof(formats[0]); i++) {
|
for (i = 0; i < sizeof(formats)/sizeof(formats[0]); i++) {
|
||||||
if (formats[i].bits == par->bits &&
|
if (formats[i].bits == par->bits &&
|
||||||
formats[i].le == par->le &&
|
formats[i].le == le &&
|
||||||
formats[i].sig == par->sig &&
|
formats[i].sig == sig &&
|
||||||
formats[i].msb == par->msb) {
|
formats[i].msb == msb) {
|
||||||
hdl->fmt = formats[i].fmt;
|
hdl->fmt = formats[i].fmt;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue