diff options
-rw-r--r-- | src/output_control.c | 8 |
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) |