summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Ratchov <ratchov@cvs.openbsd.org>2009-10-10 11:19:56 +0000
committerAlexandre Ratchov <ratchov@cvs.openbsd.org>2009-10-10 11:19:56 +0000
commit96c0b302f5614a79f67e544adeb96beb701414c8 (patch)
tree8d21fefbaa1a4930cc15a11997b953a801ce772c
parentcb36f44f92411a65728848159782878a9fe5f61b (diff)
at initialization of sun devices, use sio_setpar(3) instead of
AUDIO_SETINFO() to set the initial parameters, since AUDIO_SETINFO() can fail.
-rw-r--r--lib/libsndio/sun.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/libsndio/sun.c b/lib/libsndio/sun.c
index 192b8449348..ac06f61c4e1 100644
--- a/lib/libsndio/sun.c
+++ b/lib/libsndio/sun.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sun.c,v 1.22 2009/10/10 08:34:12 ratchov Exp $ */
+/* $OpenBSD: sun.c,v 1.23 2009/10/10 11:19:55 ratchov Exp $ */
/*
* Copyright (c) 2008 Alexandre Ratchov <alex@caoua.org>
*
@@ -346,7 +346,6 @@ sio_open_sun(const char *str, unsigned mode, int nbio)
{
int fd, flags, fullduplex;
struct sun_hdl *hdl;
- struct audio_info aui;
struct sio_par par;
char path[PATH_MAX];
@@ -385,17 +384,17 @@ sio_open_sun(const char *str, unsigned mode, int nbio)
}
}
hdl->fd = fd;
- AUDIO_INITINFO(&aui);
- if (hdl->sio.mode & SIO_PLAY)
- aui.play.encoding = AUDIO_ENCODING_SLINEAR;
- if (hdl->sio.mode & SIO_REC)
- aui.record.encoding = AUDIO_ENCODING_SLINEAR;
- if (ioctl(hdl->fd, AUDIO_SETINFO, &aui) < 0) {
- DPERROR("sio_open_sun: setinfo");
- goto bad_close;
- }
+
+ /*
+ * Default parameters may not be compatible with libsndio (eg. mulaw
+ * encodings, different playback and recording parameters, etc...), so
+ * set parameters to a random value. If the requested parameters are
+ * not supported by the device, then sio_setpar() will pick supported
+ * ones.
+ */
sio_initpar(&par);
par.rate = 48000;
+ par.le = SIO_LE_NATIVE;
par.sig = 1;
par.bits = 16;
par.appbufsz = 1200;