From: havoc Date: Thu, 17 May 2007 11:55:41 +0000 (+0000) Subject: improved coreaudio initialization code to suggest more changes X-Git-Tag: xonotic-v0.1.0preview~3156 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=63546610a4fc30187da731dbe6dcb4ab734c3a4f;p=xonotic%2Fdarkplaces.git improved coreaudio initialization code to suggest more changes git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7297 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/snd_coreaudio.c b/snd_coreaudio.c index cdcf6139..92f4c064 100644 --- a/snd_coreaudio.c +++ b/snd_coreaudio.c @@ -138,16 +138,26 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) Con_Printf("Initializing CoreAudio...\n"); - // We only accept 16-bit samples for the moment - if (requested->width != 2) + if (suggested != NULL) + memcpy (suggested, requested, sizeof (suggested)); + + // Get the device status and suggest any appropriate changes to format + propertySize = sizeof(streamDesc); + status = AudioDeviceGetProperty(outputDeviceID, 0, false, kAudioDevicePropertyStreamFormat, &propertySize, &streamDesc); + if (status) + { + Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioDevicePropertyStreamFormat\n", status); + return false; + } + // Suggest proper settings if they differ + if (requested.channels != streamDesc.mChannelsPerFrame || requested.speed != streamDesc.mSampleRate || requested.width != streamDesc.mBitsPerChannel/8) { - // Suggest a 16-bit format instead if (suggested != NULL) { - memcpy (suggested, requested, sizeof (suggested)); - suggested->width = 2; + suggested->channels = streamDesc.mChannelsPerFrame; + suggested->speed = streamDesc.mSampleRate; + suggested->width = streamDesc.mBitsPerChannel/8; } - return false; } @@ -200,18 +210,6 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioDevicePropertyStreamFormat\n", status); return false; } - - // Suggest the proper speed if it differs - if (requested.speed != streamDesc.mSampleRate) - { - if (suggested != NULL) - { - memcpy (suggested, requested, sizeof (suggested)); - suggested->speed = streamDesc.mSampleRate; - } - return false; - } - Con_DPrint (" Hardware format:\n"); Con_DPrintf(" %5d mSampleRate\n", (unsigned int)streamDesc.mSampleRate); Con_DPrintf(" %c%c%c%c mFormatID\n",