X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/96a52257a90f03478976fe762f544145cf1d681a..d806b197144733607b0ecb8678c6ee5d99ccc9ea:/src/pulsecore/modargs.c?ds=sidebyside diff --git a/src/pulsecore/modargs.c b/src/pulsecore/modargs.c index 58a70450..09ca9fc9 100644 --- a/src/pulsecore/modargs.c +++ b/src/pulsecore/modargs.c @@ -247,7 +247,7 @@ fail: return NULL; } -static void free_func(void *p, void*userdata) { +static void free_func(void *p) { struct entry *e = p; pa_assert(e); @@ -259,8 +259,8 @@ static void free_func(void *p, void*userdata) { void pa_modargs_free(pa_modargs*ma) { pa_assert(ma); - pa_hashmap_free(ma->raw, free_func, NULL); - pa_hashmap_free(ma->unescaped, free_func, NULL); + pa_hashmap_free(ma->raw, free_func); + pa_hashmap_free(ma->unescaped, free_func); pa_xfree(ma); } @@ -317,7 +317,7 @@ int pa_modargs_get_value_s32(pa_modargs *ma, const char *key, int32_t *value) { return 0; } -int pa_modargs_get_value_boolean(pa_modargs *ma, const char *key, pa_bool_t *value) { +int pa_modargs_get_value_boolean(pa_modargs *ma, const char *key, bool *value) { const char *v; int r; @@ -336,6 +336,34 @@ int pa_modargs_get_value_boolean(pa_modargs *ma, const char *key, pa_bool_t *val return 0; } +int pa_modargs_get_value_double(pa_modargs *ma, const char *key, double *value) { + const char *v; + + pa_assert(value); + + if (!(v = pa_modargs_get_value(ma, key, NULL))) + return 0; + + if (pa_atod(v, value) < 0) + return -1; + + return 0; +} + +int pa_modargs_get_value_volume(pa_modargs *ma, const char *key, pa_volume_t *value) { + const char *v; + + pa_assert(value); + + if (!(v = pa_modargs_get_value(ma, key, NULL))) + return 0; + + if (pa_parse_volume(v, value) < 0) + return -1; + + return 0; +} + int pa_modargs_get_sample_spec(pa_modargs *ma, pa_sample_spec *rss) { const char *format; uint32_t channels; @@ -425,8 +453,12 @@ int pa_modargs_get_sample_spec_and_channel_map( if (pa_modargs_get_channel_map(ma, NULL, &map) < 0) return -1; - if (map.channels != ss.channels) - return -1; + if (map.channels != ss.channels) { + if (!pa_modargs_get_value(ma, "channels", NULL)) + ss.channels = map.channels; + else + return -1; + } *rmap = map; *rss = ss;