aboutsummaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/output_control.c14
-rw-r--r--src/output_init.c11
-rw-r--r--src/output_internal.h12
3 files changed, 17 insertions, 20 deletions
diff --git a/src/output_control.c b/src/output_control.c
index 25365d324..9a240ffe4 100644
--- a/src/output_control.c
+++ b/src/output_control.c
@@ -78,16 +78,12 @@ audio_output_open(struct audio_output *ao,
ao->in_audio_format = *audio_format;
ao->chunk = NULL;
- if (audio_format_defined(&ao->config_audio_format)) {
- /* copy config_audio_format to out_audio_format only if the
- device is not yet open; if it is already open,
- plugin->open() may have modified out_audio_format,
- and the value is already ok */
- if (!ao->open)
- ao->out_audio_format =
- ao->config_audio_format;
- } else {
+ if (!ao->config_audio_format) {
+ /* no audio format is configured: copy in->out, let
+ the output's open() method determine the effective
+ out_audio_format */
ao->out_audio_format = ao->in_audio_format;
+
if (ao->open)
audio_output_close(ao);
}
diff --git a/src/output_init.c b/src/output_init.c
index 7f7ad353d..f837ba8b8 100644
--- a/src/output_init.c
+++ b/src/output_init.c
@@ -112,15 +112,15 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
pcm_convert_init(&ao->convert_state);
- if (format) {
+ ao->config_audio_format = format != NULL;
+ if (ao->config_audio_format) {
bool ret;
- ret = audio_format_parse(&ao->config_audio_format, format,
+ ret = audio_format_parse(&ao->out_audio_format, format,
error);
if (!ret)
return false;
- } else
- audio_format_clear(&ao->config_audio_format);
+ }
ao->thread = NULL;
notify_init(&ao->notify);
@@ -128,7 +128,8 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
ao->mutex = g_mutex_new();
ao->data = ao_plugin_init(plugin,
- format ? &ao->config_audio_format : NULL,
+ ao->config_audio_format
+ ? &ao->out_audio_format : NULL,
param, error);
if (ao->data == NULL)
return false;
diff --git a/src/output_internal.h b/src/output_internal.h
index 017744a81..3ec0485b2 100644
--- a/src/output_internal.h
+++ b/src/output_internal.h
@@ -53,6 +53,12 @@ struct audio_output {
void *data;
/**
+ * This flag is true, when the audio_format of this device is
+ * configured in mpd.conf.
+ */
+ bool config_audio_format;
+
+ /**
* Has the user enabled this device?
*/
bool enabled;
@@ -83,12 +89,6 @@ struct audio_output {
*/
struct audio_format out_audio_format;
- /**
- * The audio_format which was configured. Only set if
- * convertAudioFormat is true.
- */
- struct audio_format config_audio_format;
-
struct pcm_convert_state convert_state;
/**