output: convert config_audio_format to an audio_format struct
This allows more sophisticated audio format selection.
This commit is contained in:
parent
643650dba7
commit
2c05430002
@ -154,14 +154,14 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
|
||||
|
||||
p = config_get_block_string(param, AUDIO_OUTPUT_FORMAT,
|
||||
NULL);
|
||||
ao->config_audio_format = p != NULL;
|
||||
if (p != NULL) {
|
||||
bool success =
|
||||
audio_format_parse(&ao->out_audio_format,
|
||||
audio_format_parse(&ao->config_audio_format,
|
||||
p, error_r);
|
||||
if (!success)
|
||||
return false;
|
||||
}
|
||||
} else
|
||||
audio_format_clear(&ao->config_audio_format);
|
||||
} else {
|
||||
g_warning("No \"%s\" defined in config file\n",
|
||||
CONF_AUDIO_OUTPUT);
|
||||
@ -174,7 +174,8 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
|
||||
plugin->name);
|
||||
|
||||
ao->name = "default detected output";
|
||||
ao->config_audio_format = false;
|
||||
|
||||
audio_format_clear(&ao->config_audio_format);
|
||||
}
|
||||
|
||||
ao->plugin = plugin;
|
||||
@ -194,8 +195,8 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
|
||||
ao->mutex = g_mutex_new();
|
||||
|
||||
ao->data = ao_plugin_init(plugin,
|
||||
ao->config_audio_format
|
||||
? &ao->out_audio_format : NULL,
|
||||
audio_format_defined(&ao->config_audio_format)
|
||||
? &ao->config_audio_format : NULL,
|
||||
param, error_r);
|
||||
if (ao->data == NULL)
|
||||
return false;
|
||||
|
@ -65,12 +65,6 @@ struct audio_output {
|
||||
*/
|
||||
struct mixer *mixer;
|
||||
|
||||
/**
|
||||
* 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?
|
||||
*/
|
||||
@ -99,6 +93,11 @@ struct audio_output {
|
||||
*/
|
||||
GTimer *fail_timer;
|
||||
|
||||
/**
|
||||
* The configured audio format.
|
||||
*/
|
||||
struct audio_format config_audio_format;
|
||||
|
||||
/**
|
||||
* The audio_format in which audio data is received from the
|
||||
* player thread (which in turn receives it from the decoder).
|
||||
|
@ -67,7 +67,9 @@ ao_open(struct audio_output *ao)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ao->config_audio_format)
|
||||
if (audio_format_defined(&ao->config_audio_format))
|
||||
ao->out_audio_format = ao->config_audio_format;
|
||||
else
|
||||
ao->out_audio_format = *filter_audio_format;
|
||||
|
||||
success = ao_plugin_open(ao->plugin, ao->data,
|
||||
@ -164,7 +166,7 @@ ao_reopen_filter(struct audio_output *ao)
|
||||
static void
|
||||
ao_reopen(struct audio_output *ao)
|
||||
{
|
||||
if (!ao->config_audio_format) {
|
||||
if (!audio_format_defined(&ao->config_audio_format)) {
|
||||
if (ao->open) {
|
||||
const struct music_pipe *mp = ao->pipe;
|
||||
ao_close(ao);
|
||||
|
Loading…
Reference in New Issue
Block a user