From 4505bc9cc6bb1f9206f922a992a9be0e17703df1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 21 Feb 2009 16:32:42 +0100 Subject: introduce default channel map in addition to the default sample spec --- src/modules/alsa/alsa-sink.c | 1 + src/modules/alsa/alsa-source.c | 1 + src/modules/module-combine.c | 3 ++- src/modules/module-jack-sink.c | 10 ++++++++-- src/modules/module-jack-source.c | 10 ++++++++-- src/modules/module-null-sink.c | 1 + src/modules/module-pipe-sink.c | 1 + src/modules/module-pipe-source.c | 1 + src/modules/module-tunnel.c | 1 + src/modules/module-zeroconf-discover.c | 2 +- src/modules/oss/module-oss.c | 1 + 11 files changed, 26 insertions(+), 6 deletions(-) (limited to 'src/modules') diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index 239a9d78..ed25a6f3 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -1378,6 +1378,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca pa_assert(ma); ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) { pa_log("Failed to parse sample specification and channel map"); goto fail; diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c index 50cdb310..45626896 100644 --- a/src/modules/alsa/alsa-source.c +++ b/src/modules/alsa/alsa-source.c @@ -1229,6 +1229,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p pa_assert(ma); ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) { pa_log("Failed to parse sample specification"); goto fail; diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c index 7f1ef24c..6ed4f141 100644 --- a/src/modules/module-combine.c +++ b/src/modules/module-combine.c @@ -1052,8 +1052,9 @@ int pa__init(pa_module*m) { slaves = pa_modargs_get_value(ma, "slaves", NULL); u->automatic = !slaves; - ss = m->core->default_sample_spec; + ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) { pa_log("Invalid sample specification."); goto fail; diff --git a/src/modules/module-jack-sink.c b/src/modules/module-jack-sink.c index b448e84e..1739f46a 100644 --- a/src/modules/module-jack-sink.c +++ b/src/modules/module-jack-sink.c @@ -329,12 +329,18 @@ int pa__init(pa_module*m) { if (!channels) channels = m->core->default_sample_spec.channels; - if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || channels <= 0 || channels >= PA_CHANNELS_MAX) { + if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || + channels <= 0 || + channels > PA_CHANNELS_MAX) { pa_log("Failed to parse channels= argument."); goto fail; } - pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA); + if (channels == m->core->default_channel_map.channels) + map = m->core->default_channel_map; + else + pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA); + if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) { pa_log("Failed to parse channel_map= argument."); goto fail; diff --git a/src/modules/module-jack-source.c b/src/modules/module-jack-source.c index 0c7ee535..38b63751 100644 --- a/src/modules/module-jack-source.c +++ b/src/modules/module-jack-source.c @@ -296,12 +296,18 @@ int pa__init(pa_module*m) { if (!channels) channels = m->core->default_sample_spec.channels; - if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || channels <= 0 || channels >= PA_CHANNELS_MAX) { + if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || + channels <= 0 || + channels >= PA_CHANNELS_MAX) { pa_log("failed to parse channels= argument."); goto fail; } - pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA); + if (channels == m->core->default_channel_map.channels) + map = m->core->default_channel_map; + else + pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA); + if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) { pa_log("failed to parse channel_map= argument."); goto fail; diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c index 570f8be4..e18da5fd 100644 --- a/src/modules/module-null-sink.c +++ b/src/modules/module-null-sink.c @@ -262,6 +262,7 @@ int pa__init(pa_module*m) { } ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) { pa_log("Invalid sample format specification or channel map"); goto fail; diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c index 7dd44098..f3b0e8b0 100644 --- a/src/modules/module-pipe-sink.c +++ b/src/modules/module-pipe-sink.c @@ -234,6 +234,7 @@ int pa__init(pa_module*m) { } ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) { pa_log("Invalid sample format specification or channel map"); goto fail; diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c index 975090c2..a42c53c3 100644 --- a/src/modules/module-pipe-source.c +++ b/src/modules/module-pipe-source.c @@ -221,6 +221,7 @@ int pa__init(pa_module*m) { } ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) { pa_log("invalid sample format specification or channel map"); goto fail; diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c index 26da2575..63ae740a 100644 --- a/src/modules/module-tunnel.c +++ b/src/modules/module-tunnel.c @@ -1717,6 +1717,7 @@ int pa__init(pa_module*m) { } ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) { pa_log("Invalid sample format specification"); goto fail; diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c index 9a867cb5..5123ead8 100644 --- a/src/modules/module-zeroconf-discover.c +++ b/src/modules/module-zeroconf-discover.c @@ -162,7 +162,7 @@ static void resolver_cb( pa_module *m; ss = u->core->default_sample_spec; - pa_channel_map_init_extend(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT); + cm = u->core->default_channel_map; for (l = txt; l; l = l->next) { char *key, *value; diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c index eac0c8e6..54d1679f 100644 --- a/src/modules/oss/module-oss.c +++ b/src/modules/oss/module-oss.c @@ -1185,6 +1185,7 @@ int pa__init(pa_module*m) { mode = (playback && record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0)); ss = m->core->default_sample_spec; + map = m->core->default_channel_map; if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_OSS) < 0) { pa_log("Failed to parse sample specification or channel map"); goto fail; -- cgit