summaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-05-16 23:47:38 +0000
committerLennart Poettering <lennart@poettering.net>2006-05-16 23:47:38 +0000
commit4b6ab291a787ff597c938842b569a35434ab11d8 (patch)
tree2cecfeceebbb509ed2f32d94c0f489ed3c5654bb /src/modules
parentc63cc7bb79fb60b6493c3e80648501fbe8a83963 (diff)
* modify pa_channel_map_init_auto() to take an extra argument specifying the standard to use (ALSA, AIFF, ...)
* add some more validity checks to pa_source_new(),pa_sink_new(),pa_sink_input_new(),pa_source_output_new() git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@888 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/alsa-util.c44
-rw-r--r--src/modules/alsa-util.h2
-rw-r--r--src/modules/module-alsa-sink.c15
-rw-r--r--src/modules/module-alsa-source.c13
-rw-r--r--src/modules/module-combine.c2
-rw-r--r--src/modules/module-jack-sink.c2
-rw-r--r--src/modules/module-jack-source.c2
-rw-r--r--src/modules/module-null-sink.c2
-rw-r--r--src/modules/module-oss-mmap.c2
-rw-r--r--src/modules/module-oss.c2
-rw-r--r--src/modules/module-pipe-sink.c2
-rw-r--r--src/modules/module-pipe-source.c2
-rw-r--r--src/modules/module-tunnel.c2
-rw-r--r--src/modules/rtp/module-rtp-send.c2
14 files changed, 13 insertions, 81 deletions
diff --git a/src/modules/alsa-util.c b/src/modules/alsa-util.c
index a8192165..503b8efb 100644
--- a/src/modules/alsa-util.c
+++ b/src/modules/alsa-util.c
@@ -340,47 +340,3 @@ snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name) {
return elem;
}
-
-pa_channel_map* pa_alsa_channel_map_init_auto(pa_channel_map *m, unsigned channels) {
- assert(m);
- assert(channels > 0);
- assert(channels <= PA_CHANNELS_MAX);
-
- pa_channel_map_init(m);
-
- m->channels = channels;
-
- /* The standard ALSA channel order */
-
- switch (channels) {
- case 1:
- m->map[0] = PA_CHANNEL_POSITION_MONO;
- return m;
-
- case 8:
- m->map[6] = PA_CHANNEL_POSITION_SIDE_LEFT;
- m->map[7] = PA_CHANNEL_POSITION_SIDE_RIGHT;
- /* Fall through */
-
- case 6:
- m->map[5] = PA_CHANNEL_POSITION_LFE;
- /* Fall through */
-
- case 5:
- m->map[4] = PA_CHANNEL_POSITION_FRONT_CENTER;
- /* Fall through */
-
- case 4:
- m->map[2] = PA_CHANNEL_POSITION_REAR_LEFT;
- m->map[3] = PA_CHANNEL_POSITION_REAR_RIGHT;
- /* Fall through */
-
- case 2:
- m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;
- m->map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT;
- return m;
-
- default:
- return NULL;
- }
-}
diff --git a/src/modules/alsa-util.h b/src/modules/alsa-util.h
index bad6e9bf..69d4eddc 100644
--- a/src/modules/alsa-util.h
+++ b/src/modules/alsa-util.h
@@ -42,6 +42,4 @@ int pa_alsa_set_hw_params(snd_pcm_t *pcm_handle, const pa_sample_spec *ss, uint3
int pa_alsa_prepare_mixer(snd_mixer_t *mixer, const char *dev);
snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name);
-pa_channel_map* pa_alsa_channel_map_init_auto(pa_channel_map *m, unsigned channels);
-
#endif
diff --git a/src/modules/module-alsa-sink.c b/src/modules/module-alsa-sink.c
index 99e74bfc..47065659 100644
--- a/src/modules/module-alsa-sink.c
+++ b/src/modules/module-alsa-sink.c
@@ -324,19 +324,8 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec(ma, &ss) < 0) {
- pa_log(__FILE__": failed to parse sample specification");
- goto fail;
- }
-
- pa_alsa_channel_map_init_auto(&map, ss.channels);
- if ((pa_modargs_get_channel_map(ma, &map) < 0)) {
- pa_log(__FILE__": invalid channel map.");
- goto fail;
- }
-
- if (ss.channels != map.channels) {
- pa_log(__FILE__": channel map and sample specification don't match.");
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) {
+ pa_log(__FILE__": failed to parse sample specification and channel map");
goto fail;
}
diff --git a/src/modules/module-alsa-source.c b/src/modules/module-alsa-source.c
index 660bc83b..d46f8e42 100644
--- a/src/modules/module-alsa-source.c
+++ b/src/modules/module-alsa-source.c
@@ -316,22 +316,11 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec(ma, &ss) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) {
pa_log(__FILE__": failed to parse sample specification");
goto fail;
}
- pa_alsa_channel_map_init_auto(&map, ss.channels);
- if ((pa_modargs_get_channel_map(ma, &map) < 0)) {
- pa_log(__FILE__": invalid channel map.");
- goto fail;
- }
-
- if (ss.channels != map.channels) {
- pa_log(__FILE__": channel map and sample specification don't match.");
- goto fail;
- }
-
frame_size = pa_frame_size(&ss);
/* Fix latency to 100ms */
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 3b927d13..369778a6 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -361,7 +361,7 @@ int pa__init(pa_core *c, pa_module*m) {
if (ss.channels == master_sink->sample_spec.channels)
map = master_sink->channel_map;
else
- pa_channel_map_init_auto(&map, ss.channels);
+ pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_DEFAULT);
if ((pa_modargs_get_channel_map(ma, &map) < 0)) {
pa_log(__FILE__": invalid channel map.");
diff --git a/src/modules/module-jack-sink.c b/src/modules/module-jack-sink.c
index 09030530..324a2cb3 100644
--- a/src/modules/module-jack-sink.c
+++ b/src/modules/module-jack-sink.c
@@ -296,7 +296,7 @@ int pa__init(pa_core *c, pa_module*m) {
goto fail;
}
- pa_channel_map_init_auto(&map, channels);
+ pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
if (pa_modargs_get_channel_map(ma, &map) < 0 || map.channels != channels) {
pa_log(__FILE__": 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 ad39b9dd..94cabbea 100644
--- a/src/modules/module-jack-source.c
+++ b/src/modules/module-jack-source.c
@@ -294,7 +294,7 @@ int pa__init(pa_core *c, pa_module*m) {
goto fail;
}
- pa_channel_map_init_auto(&map, channels);
+ pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
if (pa_modargs_get_channel_map(ma, &map) < 0 || map.channels != channels) {
pa_log(__FILE__": 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 9c564429..5cdfeab8 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -104,7 +104,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log(__FILE__": invalid sample format specification or channel map.");
goto fail;
}
diff --git a/src/modules/module-oss-mmap.c b/src/modules/module-oss-mmap.c
index e032ce46..b8012214 100644
--- a/src/modules/module-oss-mmap.c
+++ b/src/modules/module-oss-mmap.c
@@ -383,7 +383,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
u->sample_spec = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &u->sample_spec, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &u->sample_spec, &map, PA_CHANNEL_MAP_ALSA) < 0) {
pa_log(__FILE__": failed to parse sample specification or channel map");
goto fail;
}
diff --git a/src/modules/module-oss.c b/src/modules/module-oss.c
index 4d811a76..eab9a60a 100644
--- a/src/modules/module-oss.c
+++ b/src/modules/module-oss.c
@@ -347,7 +347,7 @@ int pa__init(pa_core *c, pa_module*m) {
mode = (playback&&record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) {
pa_log(__FILE__": failed to parse sample specification or channel map");
goto fail;
}
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 2be1b297..0fb73cd8 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -154,7 +154,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log(__FILE__": invalid sample format specification");
goto fail;
}
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index c80bfd09..d999754a 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -132,7 +132,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log(__FILE__": invalid sample format specification or channel map");
goto fail;
}
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index bffcc7c0..2e04b120 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -895,7 +895,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
ss = c->default_sample_spec;
- if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map) < 0) {
+ if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log(__FILE__": invalid sample format specification");
goto fail;
}
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index 0bb20979..d0def859 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -197,7 +197,7 @@ int pa__init(pa_core *c, pa_module*m) {
}
if (ss.channels != cm.channels)
- pa_channel_map_init_auto(&cm, ss.channels);
+ pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_AIFF);
payload = pa_rtp_payload_from_sample_spec(&ss);