diff --git a/src/filter/LoadChain.cxx b/src/filter/LoadChain.cxx index 74c94a0a9..e400dcebf 100644 --- a/src/filter/LoadChain.cxx +++ b/src/filter/LoadChain.cxx @@ -24,7 +24,7 @@ #include "plugins/ChainFilterPlugin.hxx" #include "config/Param.hxx" #include "config/Option.hxx" -#include "config/Global.hxx" +#include "config/Data.hxx" #include "config/Domain.hxx" #include "config/Block.hxx" #include "util/RuntimeError.hxx" @@ -34,10 +34,11 @@ #include static void -filter_chain_append_new(PreparedFilter &chain, const char *template_name) +filter_chain_append_new(PreparedFilter &chain, const ConfigData &config, + const char *template_name) { - const auto *cfg = config_find_block(ConfigBlockOption::AUDIO_FILTER, - "name", template_name); + const auto *cfg = config.FindBlock(ConfigBlockOption::AUDIO_FILTER, + "name", template_name); if (cfg == nullptr) throw FormatRuntimeError("Filter template not found: %s", template_name); @@ -53,7 +54,9 @@ filter_chain_append_new(PreparedFilter &chain, const char *template_name) } void -filter_chain_parse(PreparedFilter &chain, const char *spec) +filter_chain_parse(PreparedFilter &chain, + const ConfigData &config, + const char *spec) { const char *const end = spec + strlen(spec); @@ -61,7 +64,7 @@ filter_chain_parse(PreparedFilter &chain, const char *spec) const char *comma = std::find(spec, end, ','); if (comma > spec) { const std::string name(spec, comma); - filter_chain_append_new(chain, name.c_str()); + filter_chain_append_new(chain, config, name.c_str()); } if (comma == end) diff --git a/src/filter/LoadChain.hxx b/src/filter/LoadChain.hxx index 3a667bd4a..cfe4ae8b2 100644 --- a/src/filter/LoadChain.hxx +++ b/src/filter/LoadChain.hxx @@ -20,6 +20,7 @@ #ifndef MPD_FILTER_LOAD_CHAIN_HXX #define MPD_FILTER_LOAD_CHAIN_HXX +struct ConfigData; class PreparedFilter; /** @@ -30,9 +31,12 @@ class PreparedFilter; * Throws std::runtime_error on error. * * @param chain the chain to append filters on + * @param config the global configuration to load filter definitions from * @param spec the filter chain specification */ void -filter_chain_parse(PreparedFilter &chain, const char *spec); +filter_chain_parse(PreparedFilter &chain, + const ConfigData &config, + const char *spec); #endif diff --git a/src/output/Init.cxx b/src/output/Init.cxx index 5f5d07e18..784a605c8 100644 --- a/src/output/Init.cxx +++ b/src/output/Init.cxx @@ -181,7 +181,7 @@ FilteredAudioOutput::Configure(const ConfigBlock &block) } try { - filter_chain_parse(*prepared_filter, + filter_chain_parse(*prepared_filter, GetGlobalConfig(), block.GetBlockValue(AUDIO_FILTERS, "")); } catch (...) { /* It's not really fatal - Part of the filter chain