diff options
Diffstat (limited to '')
-rw-r--r-- | test/run_filter.cxx | 93 |
1 files changed, 36 insertions, 57 deletions
diff --git a/test/run_filter.cxx b/test/run_filter.cxx index 085fc256b..ab99c9a1e 100644 --- a/test/run_filter.cxx +++ b/test/run_filter.cxx @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2013 The Music Player Daemon Project + * Copyright (C) 2003-2014 The Music Player Daemon Project * http://www.musicpd.org * * This program is free software; you can redistribute it and/or modify @@ -18,23 +18,29 @@ */ #include "config.h" -#include "ConfigData.hxx" -#include "ConfigGlobal.hxx" +#include "config/ConfigData.hxx" +#include "config/ConfigGlobal.hxx" #include "fs/Path.hxx" #include "AudioParser.hxx" #include "AudioFormat.hxx" -#include "FilterPlugin.hxx" -#include "FilterInternal.hxx" -#include "pcm/PcmVolume.hxx" -#include "MixerControl.hxx" +#include "filter/FilterPlugin.hxx" +#include "filter/FilterInternal.hxx" +#include "pcm/Volume.hxx" +#include "mixer/MixerControl.hxx" #include "stdbin.h" #include "util/Error.hxx" +#include "util/ConstBuffer.hxx" #include "system/FatalError.hxx" +#include "Log.hxx" +#ifdef HAVE_GLIB #include <glib.h> +#endif #include <assert.h> #include <string.h> +#include <stdlib.h> +#include <stdio.h> #include <errno.h> #include <unistd.h> @@ -45,45 +51,20 @@ mixer_set_volume(gcc_unused Mixer *mixer, return true; } -static void -my_log_func(const gchar *log_domain, gcc_unused GLogLevelFlags log_level, - const gchar *message, gcc_unused gpointer user_data) -{ - if (log_domain != NULL) - g_printerr("%s: %s\n", log_domain, message); - else - g_printerr("%s\n", message); -} - -static const struct config_param * -find_named_config_block(ConfigOption option, const char *name) -{ - const struct config_param *param = NULL; - - while ((param = config_get_next_param(option, param)) != NULL) { - const char *current_name = param->GetBlockValue("name"); - if (current_name != NULL && strcmp(current_name, name) == 0) - return param; - } - - return NULL; -} - static Filter * load_filter(const char *name) { - const struct config_param *param; - - param = find_named_config_block(CONF_AUDIO_FILTER, name); + const config_param *param = + config_find_block(CONF_AUDIO_FILTER, "name", name); if (param == NULL) { - g_printerr("No such configured filter: %s\n", name); + fprintf(stderr, "No such configured filter: %s\n", name); return nullptr; } Error error; Filter *filter = filter_configured_new(*param, error); if (filter == NULL) { - g_printerr("Failed to load filter: %s\n", error.GetMessage()); + LogError(error, "Failed to load filter"); return NULL; } @@ -97,8 +78,8 @@ int main(int argc, char **argv) char buffer[4096]; if (argc < 3 || argc > 4) { - g_printerr("Usage: run_filter CONFIG NAME [FORMAT] <IN\n"); - return 1; + fprintf(stderr, "Usage: run_filter CONFIG NAME [FORMAT] <IN\n"); + return EXIT_FAILURE; } const Path config_path = Path::FromFS(argv[1]); @@ -107,11 +88,11 @@ int main(int argc, char **argv) /* initialize GLib */ +#ifdef HAVE_GLIB #if !GLIB_CHECK_VERSION(2,32,0) g_thread_init(NULL); #endif - - g_log_set_default_handler(my_log_func, NULL); +#endif /* read configuration file (mpd.conf) */ @@ -124,9 +105,8 @@ int main(int argc, char **argv) if (argc > 3) { Error error; if (!audio_format_parse(audio_format, argv[3], false, error)) { - g_printerr("Failed to parse audio format: %s\n", - error.GetMessage()); - return 1; + LogError(error, "Failed to parse audio format"); + return EXIT_FAILURE; } } @@ -134,44 +114,43 @@ int main(int argc, char **argv) Filter *filter = load_filter(argv[2]); if (filter == NULL) - return 1; + return EXIT_FAILURE; /* open the filter */ Error error; const AudioFormat out_audio_format = filter->Open(audio_format, error); if (!out_audio_format.IsDefined()) { - g_printerr("Failed to open filter: %s\n", error.GetMessage()); + LogError(error, "Failed to open filter"); delete filter; - return 1; + return EXIT_FAILURE; } - g_printerr("audio_format=%s\n", - audio_format_to_string(out_audio_format, &af_string)); + fprintf(stderr, "audio_format=%s\n", + audio_format_to_string(out_audio_format, &af_string)); /* play */ while (true) { ssize_t nbytes; - size_t length; - const void *dest; nbytes = read(0, buffer, sizeof(buffer)); if (nbytes <= 0) break; - dest = filter->FilterPCM(buffer, (size_t)nbytes, - &length, error); - if (dest == NULL) { - g_printerr("Filter failed: %s\n", error.GetMessage()); + auto dest = filter->FilterPCM({(const void *)buffer, (size_t)nbytes}, + error); + if (dest.IsNull()) { + LogError(error, "filter/Filter failed"); filter->Close(); delete filter; - return 1; + return EXIT_FAILURE; } - nbytes = write(1, dest, length); + nbytes = write(1, dest.data, dest.size); if (nbytes < 0) { - g_printerr("Failed to write: %s\n", g_strerror(errno)); + fprintf(stderr, "Failed to write: %s\n", + strerror(errno)); filter->Close(); delete filter; return 1; |