diff options
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) |