aboutsummaryrefslogtreecommitdiffstats
path: root/src/OutputThread.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-11-11 16:15:38 +0100
committerMax Kellermann <max@duempel.org>2013-11-13 21:06:33 +0100
commitd2679f59c5a6c8df7a2140d40ab65a17b8e5c023 (patch)
tree803edccbb6c7d383199eba5f91a8610ee3c63c96 /src/OutputThread.cxx
parent4ee147ea34057c0bcef31afed55f98b025b997dc (diff)
downloadmpd-d2679f59c5a6c8df7a2140d40ab65a17b8e5c023.tar.gz
mpd-d2679f59c5a6c8df7a2140d40ab65a17b8e5c023.tar.xz
mpd-d2679f59c5a6c8df7a2140d40ab65a17b8e5c023.zip
PcmConvert: add methods Open(), Close()
Replaces Reset() and eliminates the AudioFormat parameters from the Convert() method.
Diffstat (limited to 'src/OutputThread.cxx')
-rw-r--r--src/OutputThread.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/OutputThread.cxx b/src/OutputThread.cxx
index 30d3ba30f..dc81643f3 100644
--- a/src/OutputThread.cxx
+++ b/src/OutputThread.cxx
@@ -184,7 +184,15 @@ ao_open(struct audio_output *ao)
return;
}
- convert_filter_set(ao->convert_filter, ao->out_audio_format);
+ if (!convert_filter_set(ao->convert_filter, ao->out_audio_format,
+ error)) {
+ FormatError(error, "Failed to convert for \"%s\" [%s]",
+ ao->name, ao->plugin->name);
+
+ ao_filter_close(ao);
+ ao->fail_timer = g_timer_new();
+ return;
+ }
ao->open = true;
@@ -233,7 +241,9 @@ ao_reopen_filter(struct audio_output *ao)
ao_filter_close(ao);
const AudioFormat filter_audio_format =
ao_filter_open(ao, ao->in_audio_format, error);
- if (!filter_audio_format.IsDefined()) {
+ if (!filter_audio_format.IsDefined() ||
+ !convert_filter_set(ao->convert_filter, ao->out_audio_format,
+ error)) {
FormatError(error,
"Failed to open filter for \"%s\" [%s]",
ao->name, ao->plugin->name);
@@ -254,8 +264,6 @@ ao_reopen_filter(struct audio_output *ao)
return;
}
-
- convert_filter_set(ao->convert_filter, ao->out_audio_format);
}
static void