From d7bb544c34b5e2eef10e13e672d82a33864be8ab Mon Sep 17 00:00:00 2001 From: Andre Date: Sun, 28 May 2006 22:51:16 +0200 Subject: [PATCH] Fix default filter setup The previous patch broke it. --- audiod.c | 77 +++++++++++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/audiod.c b/audiod.c index db94369c..f744dd89 100644 --- a/audiod.c +++ b/audiod.c @@ -988,41 +988,6 @@ static int add_filter(int format, char *cmdline) return filter_num; } -static int setup_default_filters(void) -{ - int i, ret = 1; - - FOR_EACH_AUDIO_FORMAT(i) { - struct audio_format_info *a = &afi[i]; - char *tmp; - int j; - if (a->num_filters) - continue; - /* add "dec" to audio format name */ - tmp = make_message("%sdec", audio_formats[i]); - for (j = 0; filters[j].name; j++) - if (!strcmp(tmp, filters[j].name)) - break; - free(tmp); - ret = -E_UNSUPPORTED_FILTER; - if (!filters[j].name) - goto out; - tmp = para_strdup(filters[j].name); - ret = add_filter(i, tmp); - free(tmp); - if (ret < 0) - goto out; - PARA_INFO_LOG("%s -> default filter: %s\n", audio_formats[i], - filters[j].name); - ret = add_filter(i, "wav"); - if (ret < 0) - goto out; - PARA_INFO_LOG("%s -> default filter: wav\n", audio_formats[i]); - } -out: - return ret; -} - static int init_writers(void) { int i, ret, nw; @@ -1031,7 +996,7 @@ static int init_writers(void) init_supported_writers(); nw = PARA_MAX(1, conf.writer_given); - PARA_INFO_LOG("allocating space for %d writers\n", nw); + PARA_INFO_LOG("maximal number of writers: %d\n", nw); FOR_EACH_AUDIO_FORMAT(i) { a = &afi[i]; a->writer_conf = para_malloc(nw * sizeof(void *)); @@ -1110,19 +1075,51 @@ out: return ret; } +static int init_default_filters(void) +{ + int i, ret = 1; + + FOR_EACH_AUDIO_FORMAT(i) { + struct audio_format_info *a = &afi[i]; + char *tmp; + int j; + + if (a->num_filters) + continue; /* no default -- nothing to to */ + /* add "dec" to audio format name */ + tmp = make_message("%sdec", audio_formats[i]); + for (j = 0; filters[j].name; j++) + if (!strcmp(tmp, filters[j].name)) + break; + free(tmp); + ret = -E_UNSUPPORTED_FILTER; + if (!filters[j].name) + goto out; + tmp = para_strdup(filters[j].name); + ret = add_filter(i, tmp); + free(tmp); + if (ret < 0) + goto out; + PARA_INFO_LOG("%s -> default filter: %s\n", audio_formats[i], + filters[j].name); + } +out: + return ret; +} + static int init_filters(void) { int i, ret, nf; filter_init(filters); - nf = PARA_MAX(2, conf.filter_given) + 1; - PARA_INFO_LOG("allocating space for %d filters\n", nf); + nf = PARA_MAX(1, conf.filter_given); + PARA_INFO_LOG("maximal number of filters: %d\n", nf); FOR_EACH_AUDIO_FORMAT(i) { afi[i].filter_conf = para_malloc(nf * sizeof(void *)); afi[i].filters = para_malloc(nf * sizeof(struct filter *)); } if (!conf.no_default_filters_given) - return setup_default_filters(); + return init_default_filters(); for (i = 0; i < conf.filter_given; i++) { char *arg = conf.filter_arg[i]; char *filter_name = strchr(arg, ':'); @@ -1138,7 +1135,7 @@ static int init_filters(void) if (ret < 0) goto out; } - ret = 1; + ret = init_default_filters(); /* use default values for the rest */ out: return ret; } -- 2.39.5