summaryrefslogtreecommitdiffstats
path: root/src/polypcore/modargs.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-26 15:37:44 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-26 15:37:44 +0000
commitfbb0d1436c5c415e3964d57b0dedaa0d8817c289 (patch)
tree6f0e8b287166a73ba5169de9893da61249da1261 /src/polypcore/modargs.c
parent292b237e356371f827df7a7a0e52a7152b64bfe0 (diff)
add support for parsing channel maps as module arguments
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@802 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/polypcore/modargs.c')
-rw-r--r--src/polypcore/modargs.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/polypcore/modargs.c b/src/polypcore/modargs.c
index 6bd13c3b..6a02df0a 100644
--- a/src/polypcore/modargs.c
+++ b/src/polypcore/modargs.c
@@ -259,3 +259,50 @@ int pa_modargs_get_sample_spec(pa_modargs *ma, pa_sample_spec *rss) {
return 0;
}
+
+int pa_modargs_get_channel_map(pa_modargs *ma, pa_channel_map *rmap) {
+ pa_channel_map map;
+ const char *cm;
+
+ assert(ma);
+ assert(rmap);
+
+ map = *rmap;
+
+ if ((cm = pa_modargs_get_value(ma, "channel_map", NULL)))
+ if (!pa_channel_map_parse(&map, cm))
+ return -1;
+
+ if (!pa_channel_map_valid(&map))
+ return -1;
+
+ *rmap = map;
+ return 0;
+}
+
+int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *rss, pa_channel_map *rmap) {
+ pa_sample_spec ss;
+ pa_channel_map map;
+
+ assert(ma);
+ assert(rss);
+ assert(rmap);
+
+ ss = *rss;
+
+ if (pa_modargs_get_sample_spec(ma, &ss) < 0)
+ return -1;
+
+ pa_channel_map_init_auto(&map, ss.channels);
+
+ if (pa_modargs_get_channel_map(ma, &map) < 0)
+ return -1;
+
+ if (map.channels != ss.channels)
+ return -1;
+
+ *rmap = map;
+ *rss = ss;
+
+ return 0;
+}