summaryrefslogtreecommitdiff
path: root/plugins/alsa
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2010-11-13 22:51:12 +0100
committerGravatar waker <wakeroid@gmail.com>2010-11-13 22:51:12 +0100
commit8eada3d6211baeac22c9d0f1977bc90f428247d5 (patch)
tree164053c4ce7cabb207976875b0026e180b75dc4c /plugins/alsa
parent7e2a8b73bc4ccf17e1be4163b003a249badd509e (diff)
added channel remapping and some format conversions
Diffstat (limited to 'plugins/alsa')
-rw-r--r--plugins/alsa/alsa.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/plugins/alsa/alsa.c b/plugins/alsa/alsa.c
index be744b34..31e179ae 100644
--- a/plugins/alsa/alsa.c
+++ b/plugins/alsa/alsa.c
@@ -191,7 +191,7 @@ palsa_set_hw_params (ddb_waveformat_t *fmt) {
plugin.fmt.samplerate = val;
trace ("chosen samplerate: %d Hz\n", val);
- if ((err = snd_pcm_hw_params_set_channels (audio, hw_params, /*fmt->channels*/6)) < 0) {
+ if ((err = snd_pcm_hw_params_set_channels (audio, hw_params, fmt->channels)) < 0) {
fprintf (stderr, "cannot set channel count (%s)\n",
snd_strerror (err));
goto error;
@@ -218,6 +218,7 @@ palsa_set_hw_params (ddb_waveformat_t *fmt) {
goto error;
}
+ plugin.fmt.is_float = 0;
switch (sample_fmt) {
case SND_PCM_FORMAT_S8:
plugin.fmt.bps = 8;
@@ -234,10 +235,16 @@ palsa_set_hw_params (ddb_waveformat_t *fmt) {
case SND_PCM_FORMAT_S32_LE:
plugin.fmt.bps = 32;
break;
+ case SND_PCM_FORMAT_FLOAT_LE:
+ case SND_PCM_FORMAT_FLOAT_BE:
+ plugin.fmt.bps = 32;
+ plugin.fmt.is_float = 1;
+ break;
}
+ trace ("chosen bps: %d (%s)\n", plugin.fmt.bps, plugin.fmt.is_float ? "float" : "int");
+
plugin.fmt.channels = nchan;
- plugin.fmt.is_float = 0;
plugin.fmt.is_multichannel = 0;
plugin.fmt.channelmask = 0;
if (nchan == 1) {