aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/output_control.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/output_control.c b/src/output_control.c
index 26558d3c4..0818a459b 100644
--- a/src/output_control.c
+++ b/src/output_control.c
@@ -34,7 +34,13 @@ int audio_output_open(struct audio_output *audioOutput,
audioOutput->inAudioFormat = *audioFormat;
if (audio_format_defined(&audioOutput->reqAudioFormat)) {
- audioOutput->outAudioFormat = audioOutput->reqAudioFormat;
+ /* copy reqAudioFormat to outAudioFormat only if the
+ device is not yet open; if it is already open,
+ plugin->open() may have modified outAudioFormat,
+ and the value is already ok */
+ if (!audioOutput->open)
+ audioOutput->outAudioFormat =
+ audioOutput->reqAudioFormat;
} else {
audioOutput->outAudioFormat = audioOutput->inAudioFormat;
if (audioOutput->open)