From 9cdbde4f5e421b7a1ca28d5268d5c31de9d6ad5d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 25 Sep 2012 23:28:53 +0200 Subject: output: new option "tags" may be used to disable sending tags Implements Mantis ticket 0003340. --- NEWS | 2 ++ doc/user.xml | 12 ++++++++++++ src/output_init.c | 1 + src/output_internal.h | 7 +++++++ src/output_thread.c | 2 +- 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index ac243b87..ea52ac16 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,8 @@ ver 0.18 (2012/??/??) - adplug: new decoder plugin using libadplug - opus: new decoder plugin for the Opus codec - vorbis: skip 16 bit quantisation, provide float samples +* output: + - new option "tags" may be used to disable sending tags to output * improved decoder/output error reporting ver 0.17.2 (2012/??/??) diff --git a/doc/user.xml b/doc/user.xml index 65b7cb10..c83c625a 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -436,6 +436,18 @@ systemctl start mpd.socket enabled. + + + tags + yes|no + + + If set to "no", then MPD will not send tags to this + output. This is only useful for output plugins that + can receive tags, for example the + httpd output plugin. + + always_on diff --git a/src/output_init.c b/src/output_init.c index c3b808e9..a6d19192 100644 --- a/src/output_init.c +++ b/src/output_init.c @@ -165,6 +165,7 @@ ao_base_init(struct audio_output *ao, } ao->plugin = plugin; + ao->tags = config_get_block_bool(param, "tags", true); ao->always_on = config_get_block_bool(param, "always_on", false); ao->enabled = config_get_block_bool(param, "enabled", true); ao->really_enabled = false; diff --git a/src/output_internal.h b/src/output_internal.h index 9d975d78..1a3e8aa1 100644 --- a/src/output_internal.h +++ b/src/output_internal.h @@ -72,6 +72,13 @@ struct audio_output { */ struct mixer *mixer; + /** + * Will this output receive tags from the decoder? The + * default is true, but it may be configured to false to + * suppress sending tags to the output. + */ + bool tags; + /** * Shall this output always play something (i.e. silence), * even when playback is stopped? diff --git a/src/output_thread.c b/src/output_thread.c index ee9c8a6e..cd1a8a87 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -435,7 +435,7 @@ ao_play_chunk(struct audio_output *ao, const struct music_chunk *chunk) assert(ao != NULL); assert(ao->filter != NULL); - if (gcc_unlikely(chunk->tag != NULL)) { + if (ao->tags && gcc_unlikely(chunk->tag != NULL)) { g_mutex_unlock(ao->mutex); ao_plugin_send_tag(ao, chunk->tag); g_mutex_lock(ao->mutex); -- cgit v1.2.3