From 0ac0bd26e73773d075200516dc8000e907d3a1ac Mon Sep 17 00:00:00 2001 From: Albin Eldstål-Damlin Date: Mon, 14 Dec 2009 21:09:28 +0100 Subject: Split filter_config into its own module --- src/filter/chain_filter_plugin.c | 97 ---------------------------------------- src/filter/chain_filter_plugin.h | 12 ----- 2 files changed, 109 deletions(-) (limited to 'src/filter') diff --git a/src/filter/chain_filter_plugin.c b/src/filter/chain_filter_plugin.c index 5f9544b5..48100bc4 100644 --- a/src/filter/chain_filter_plugin.c +++ b/src/filter/chain_filter_plugin.c @@ -25,7 +25,6 @@ #include "filter_registry.h" #include -#include 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 54e07081..f8462b22 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 -- cgit v1.2.3