diff options
author | Albin Eldstål-Damlin <laeder.keps@gmail.com> | 2009-12-14 21:09:28 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-12-14 22:12:58 +0100 |
commit | 0ac0bd26e73773d075200516dc8000e907d3a1ac (patch) | |
tree | 57768742a564c3e6d277563acce13bb3ab346465 /src/filter | |
parent | bf6258f58266ebdd9766e659ff4d6c80bd17c6d0 (diff) | |
download | mpd-0ac0bd26e73773d075200516dc8000e907d3a1ac.tar.gz mpd-0ac0bd26e73773d075200516dc8000e907d3a1ac.tar.xz mpd-0ac0bd26e73773d075200516dc8000e907d3a1ac.zip |
Split filter_config into its own module
Diffstat (limited to 'src/filter')
-rw-r--r-- | src/filter/chain_filter_plugin.c | 97 | ||||
-rw-r--r-- | src/filter/chain_filter_plugin.h | 12 |
2 files changed, 0 insertions, 109 deletions
diff --git a/src/filter/chain_filter_plugin.c b/src/filter/chain_filter_plugin.c index 5f9544b50..48100bc4b 100644 --- a/src/filter/chain_filter_plugin.c +++ b/src/filter/chain_filter_plugin.c @@ -25,7 +25,6 @@ #include "filter_registry.h" #include <assert.h> -#include <string.h> struct filter_chain { /** the base class */ @@ -179,99 +178,3 @@ filter_chain_append(struct filter *_chain, struct filter *filter) chain->children = g_slist_append(chain->children, filter); } -/** - * Find the "filter" configuration block for the specified name. - * - * @param filter_template_name the name of the filter template - * @return the configuration block, or NULL if none was configured - */ -static const struct config_param * -filter_plugin_config(const char *filter_template_name) -{ - const struct config_param *param = NULL; - - while ((param = config_get_next_param(CONF_AUDIO_FILTER, param)) != NULL) { - const char *name = - config_get_block_string(param, "name", NULL); - if (name == NULL) - g_error("filter configuration without 'name' name in line %d", - param->line); - - if (strcmp(name, filter_template_name) == 0) - return param; - } - - return NULL; -} - -/** - * Builds a filter chain from a configuration string on the form - * "name1, name2, name3, ..." by looking up each name among the - * configured filter sections. - * @param chain the chain to append filters on - * @param spec the filter chain specification - * @return the number of filters which were successfully added - */ -unsigned int -filter_chain_parse(struct filter *chain, const char *spec) { - - // Split on comma - gchar** tokens = g_strsplit_set(spec, ",", 255); - - int added_filters = 0; - - // Add each name to the filter chain by instantiating an actual filter - char **template_names = tokens; - while (*template_names != NULL) { - const char *plugin_name; - const struct filter_plugin *fp; - struct filter *f; - const struct config_param *cfg; - - // Squeeze whitespace - g_strstrip(*template_names); - - cfg = filter_plugin_config(*template_names); - if (cfg == NULL) { - g_error("Unable to locate filter template %s", - *template_names); - ++template_names; - continue; - } - - // Figure out what kind of a plugin that is - plugin_name = config_get_block_string(cfg, "plugin", NULL); - if (plugin_name == NULL) { - g_error("filter configuration without 'plugin' at line %d", - cfg->line); - ++template_names; - continue; - } - - // Instantiate one of those filter plugins with the template name as a hint - fp = filter_plugin_by_name(plugin_name); - if (fp == NULL) { - g_error("filter plugin not found: %s", - plugin_name); - ++template_names; - continue; - } - - f = filter_new(fp, cfg, NULL); - if (f == NULL) { - g_error("filter plugin initialization failed: %s", - plugin_name); - ++template_names; - continue; - } - - filter_chain_append(chain, f); - ++added_filters; - - ++template_names; - } - - g_strfreev(tokens); - - return added_filters; -} diff --git a/src/filter/chain_filter_plugin.h b/src/filter/chain_filter_plugin.h index 54e07081d..f8462b22d 100644 --- a/src/filter/chain_filter_plugin.h +++ b/src/filter/chain_filter_plugin.h @@ -45,16 +45,4 @@ filter_chain_new(void); void filter_chain_append(struct filter *chain, struct filter *filter); -/** - * Builds a filter chain from a configuration string on the form - * "name1, name2, name3, ..." by looking up each name among the - * configured filter sections. If no filters are specified, a - * null filter is automatically appended. - * @param chain the chain to append filters on - * @param spec the filter chain specification - * @return the number of filters which were successfully added - */ -unsigned int -filter_chain_parse(struct filter *chain, const char *spec); - #endif |