aboutsummaryrefslogtreecommitdiffstats
path: root/src/audioOutput.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/audioOutput.c')
-rw-r--r--src/audioOutput.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/audioOutput.c b/src/audioOutput.c
index c973e1beb..1186dbe0d 100644
--- a/src/audioOutput.c
+++ b/src/audioOutput.c
@@ -73,13 +73,14 @@ AudioOutput * newAudioOutput(ConfigParam * param) {
memset(&ret->inAudioFormat, 0, sizeof(AudioFormat));
memset(&ret->outAudioFormat, 0, sizeof(AudioFormat));
+ memset(&ret->reqAudioFormat, 0, sizeof(AudioFormat));
getBlockParam(AUDIO_OUTPUT_FORMAT, format, 0);
if(format) {
ret->convertAudioFormat = 1;
- if(0 != parseAudioConfig(&ret->outAudioFormat, format))
+ if(0 != parseAudioConfig(&ret->reqAudioFormat, format))
{
ERROR("error parsing format at line %i\n",
bp->line);
@@ -102,6 +103,8 @@ AudioOutput * newAudioOutput(ConfigParam * param) {
}
int openAudioOutput(AudioOutput * audioOutput, AudioFormat * audioFormat) {
+ int ret;
+
if(audioOutput->open) {
if(cmpAudioFormat(audioFormat, &audioOutput->inAudioFormat)
== 0)
@@ -114,20 +117,24 @@ int openAudioOutput(AudioOutput * audioOutput, AudioFormat * audioFormat) {
copyAudioFormat(&audioOutput->inAudioFormat, audioFormat);
if(audioOutput->convertAudioFormat) {
- if(cmpAudioFormat(&audioOutput->inAudioFormat,
- &audioOutput->outAudioFormat) == 0)
- {
- audioOutput->sameInAndOutFormats = 1;
- }
- else audioOutput->sameInAndOutFormats = 0;
+ copyAudioFormat(&audioOutput->outAudioFormat,
+ &audioOutput->reqAudioFormat);
}
else {
- audioOutput->sameInAndOutFormats = 1;
copyAudioFormat(&audioOutput->outAudioFormat,
&audioOutput->inAudioFormat);
}
- return audioOutput->openDeviceFunc(audioOutput);
+ ret = audioOutput->openDeviceFunc(audioOutput);
+
+ if(cmpAudioFormat(&audioOutput->inAudioFormat,
+ &audioOutput->outAudioFormat) == 0)
+ {
+ audioOutput->sameInAndOutFormats = 1;
+ }
+ else audioOutput->sameInAndOutFormats = 0;
+
+ return ret;
}
static void convertAudioFormat(AudioOutput * audioOutput, char ** chunkArgPtr,