From e6c753a474bcf1d81127f74762f8b7f913dd3160 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 20 Mar 2009 15:47:50 +0100 Subject: [PATCH] output: convert audio_output.config_audio_format to boolean The config_audio_format used to contain the configured audio format, which is copied to out_audio_format. Let's convert the former to a boolean, which indicates whether out_audio_format was already set. This simplifies some code and saves a few bytes. --- src/output_control.c | 14 +++++--------- src/output_init.c | 11 ++++++----- src/output_internal.h | 12 ++++++------ 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 @@ -52,6 +52,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? */ @@ -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; /**