diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-05-14 11:03:37 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-05-14 11:03:37 +0000 |
commit | 3dd71bd5abeae01d55a06a97ec6f4a69f12e05b1 (patch) | |
tree | d787b76e26e4be9e2b9c7b019f11fb31e8e8cabc /oss.c | |
parent | 91f2fea297381a64939c7f2d4ddb4728a3d42aa8 (diff) |
also downgrade channel map when downgrading channel number
git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@15 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce
Diffstat (limited to 'oss.c')
-rw-r--r-- | oss.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -340,8 +340,17 @@ int driver_open(sa_stream_t *s) { printf("Chosen: %u channels, %uHz, format=%u\n", oss->real_pcm_attrs.nchannels, oss->real_pcm_attrs.rate, oss->real_pcm_attrs.format); - if (s->adjust_nchannels != 0) + if (s->adjust_nchannels != 0) { + sa_channel_t *cm; + + if (!(cm = sa_newdup(sa_channel_t, oss->real_pcm_attrs.channel_map, oss->real_pcm_attrs.nchannels))) + return SA_ERROR_OOM; + + sa_free(s->pcm_attrs.channel_map); + s->pcm_attrs.channel_map = cm; + s->pcm_attrs.nchannels = oss->real_pcm_attrs.nchannels; + } if (s->adjust_rate != 0) s->pcm_attrs.rate = oss->real_pcm_attrs.rate; if (s->adjust_pcm_format != 0) |