diff --git a/src/decoder/ffmpeg_plugin.c b/src/decoder/ffmpeg_plugin.c index 8a379814f..8048b1c26 100644 --- a/src/decoder/ffmpeg_plugin.c +++ b/src/decoder/ffmpeg_plugin.c @@ -120,7 +120,8 @@ static URLProtocol mpd_ffmpeg_fileops = { .url_close = mpd_ffmpeg_close, }; -static bool ffmpeg_init(void) +static bool +ffmpeg_init(G_GNUC_UNUSED const struct config_param *param) { av_register_all(); register_protocol(&mpd_ffmpeg_fileops); diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index 19f8d7fd4..ce056d298 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -383,7 +383,7 @@ flac_decode(struct decoder * decoder, struct input_stream *input_stream) #ifndef HAVE_OGGFLAC static bool -oggflac_init(void) +oggflac_init(G_GNUC_UNUSED const struct config_param *param) { #if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7 return !!FLAC_API_SUPPORTS_OGG_FLAC; diff --git a/src/decoder/fluidsynth_plugin.c b/src/decoder/fluidsynth_plugin.c index 3a744d2f9..d9b0bd6b9 100644 --- a/src/decoder/fluidsynth_plugin.c +++ b/src/decoder/fluidsynth_plugin.c @@ -64,7 +64,7 @@ fluidsynth_mpd_log_function(int level, char *message, G_GNUC_UNUSED void *data) } static bool -fluidsynth_init(void) +fluidsynth_init(G_GNUC_UNUSED const struct config_param *param) { fluid_set_log_function(LAST_LOG_LEVEL, fluidsynth_mpd_log_function, NULL); diff --git a/src/decoder/mikmod_plugin.c b/src/decoder/mikmod_plugin.c index ad308dbe4..af715c0ca 100644 --- a/src/decoder/mikmod_plugin.c +++ b/src/decoder/mikmod_plugin.c @@ -90,7 +90,8 @@ static MDRIVER drv_mpd = { VC_VoiceRealVolume }; -static bool mod_initMikMod(void) +static bool +mod_initMikMod(G_GNUC_UNUSED const struct config_param *param) { static char params[] = ""; diff --git a/src/decoder/mp3_plugin.c b/src/decoder/mp3_plugin.c index fda866133..9956435c9 100644 --- a/src/decoder/mp3_plugin.c +++ b/src/decoder/mp3_plugin.c @@ -91,7 +91,8 @@ mad_fixed_to_24_buffer(int32_t *dest, const struct mad_synth *synth, } } -static bool mp3_plugin_init(void) +static bool +mp3_plugin_init(G_GNUC_UNUSED const struct config_param *param) { gapless_playback = config_get_bool(CONF_GAPLESS_MP3_PLAYBACK, DEFAULT_GAPLESS_MP3_PLAYBACK); diff --git a/src/decoder/wildmidi_plugin.c b/src/decoder/wildmidi_plugin.c index a045a6b1f..532ae9525 100644 --- a/src/decoder/wildmidi_plugin.c +++ b/src/decoder/wildmidi_plugin.c @@ -30,7 +30,7 @@ enum { }; static bool -wildmidi_init(void) +wildmidi_init(G_GNUC_UNUSED const struct config_param *param) { int ret; diff --git a/src/decoder_api.h b/src/decoder_api.h index caa61dcff..1005b549e 100644 --- a/src/decoder_api.h +++ b/src/decoder_api.h @@ -32,6 +32,7 @@ #include "replay_gain.h" #include "tag.h" #include "audio_format.h" +#include "conf.h" #include diff --git a/src/decoder_list.c b/src/decoder_list.c index ba179ee70..f0cf8625b 100644 --- a/src/decoder_list.c +++ b/src/decoder_list.c @@ -190,7 +190,7 @@ void decoder_plugin_init_all(void) for (unsigned i = 0; i < num_decoder_plugins; ++i) { const struct decoder_plugin *plugin = decoder_plugins[i]; - if (decoder_plugin_init(plugin)) + if (decoder_plugin_init(plugin, NULL)) decoder_plugins_enabled[i] = true; } } diff --git a/src/decoder_plugin.h b/src/decoder_plugin.h index 7034103ba..35a76bb38 100644 --- a/src/decoder_plugin.h +++ b/src/decoder_plugin.h @@ -22,6 +22,7 @@ #include #include +struct config_param; struct input_stream; struct tag; @@ -39,7 +40,7 @@ struct decoder_plugin { * have/need one this must return < 0 if there is an error and * >= 0 otherwise */ - bool (*init)(void); + bool (*init)(const struct config_param *param); /** * optional, set this to NULL if the InputPlugin doesn't have/need one @@ -81,14 +82,17 @@ struct decoder_plugin { /** * Initialize a decoder plugin. * + * @param param a configuration block for this plugin, or NULL if none + * is configured * @return true if the plugin was initialized successfully, false if * the plugin is not available */ static inline bool -decoder_plugin_init(const struct decoder_plugin *plugin) +decoder_plugin_init(const struct decoder_plugin *plugin, + const struct config_param *param) { return plugin->init != NULL - ? plugin->init() + ? plugin->init(param) : true; }