diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-05-13 00:22:39 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-05-13 00:22:39 +0000 |
commit | 559d26217310e5454c9cf5c80e49da51b192d7ca (patch) | |
tree | 23be3cce3836e447662317e3b8b8f2656a69373b /oss.c | |
parent | a64e85acf96bc0c55363fe55c9e9116aef2a8584 (diff) |
fix volume handling
git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@5 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce
Diffstat (limited to 'oss.c')
-rw-r--r-- | oss.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -62,6 +62,8 @@ int device_open(sa_device_t *dev) { return SA_ERROR_SYSTEM; } + fcntl(oss->fd, F_SETFL, fcntl(oss->fd, F_GETFL) & ~O_NONBLOCK); /* FIXME*/ + if (!dev->device) { if (!(n = sa_strdup(n))) return SA_ERROR_OOM; @@ -237,7 +239,10 @@ int device_open(sa_device_t *dev) { } r = dev->pcm_attrs.rate; - r = 44100; + + if (r < 8000) + r = 8000; + suggested = 0; phase = 0; @@ -393,8 +398,10 @@ int device_change_output_volume(sa_device_t *dev, int vol[]) { int device_change_rate(sa_device_t *dev, unsigned rate) { oss_device_t *oss = OSS_DEVICE(dev); - converter_set_ratio(&oss->converter_read, oss->real_pcm_attrs.rate, dev->pcm_attrs.rate); - converter_set_ratio(&oss->converter_write, dev->pcm_attrs.rate, oss->real_pcm_attrs.rate); + if (dev->mode & SA_MODE_RDONLY) + converter_set_ratio(&oss->converter_read, oss->real_pcm_attrs.rate, dev->pcm_attrs.rate); + if (dev->mode & SA_MODE_WRONLY) + converter_set_ratio(&oss->converter_write, dev->pcm_attrs.rate, oss->real_pcm_attrs.rate); return SA_SUCCESS; } |