X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=snd_coreaudio.c;h=e3a934c3941946dfeda0f9643ac38c2445d940f7;hb=8f02a9c5d9d478f50956e975098fe0b8adaa9340;hp=9d9381253fdc42aa52f5d69023722a391ec4876d;hpb=a8044aabf57f2dbd8efe8cc64d2f814be78d796d;p=xonotic%2Fdarkplaces.git diff --git a/snd_coreaudio.c b/snd_coreaudio.c index 9d938125..e3a934c3 100644 --- a/snd_coreaudio.c +++ b/snd_coreaudio.c @@ -20,12 +20,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA =========================================================================== */ +#include "quakedef.h" + #include #include #include -#include "quakedef.h" #include "snd_main.h" @@ -138,25 +139,13 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) Con_Printf("Initializing CoreAudio...\n"); - 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) + if(requested->width != 2) { - 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) - { - if (suggested != NULL) + // we can only do 16bit per sample for now + if(suggested != NULL) { - suggested->channels = streamDesc.mChannelsPerFrame; - suggested->speed = streamDesc.mSampleRate; - suggested->width = streamDesc.mBitsPerChannel/8; + memcpy (suggested, requested, sizeof (*suggested)); + suggested->width = 2; } return false; } @@ -166,7 +155,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) status = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propertySize, &outputDeviceID); if (status) { - Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioHardwarePropertyDefaultOutputDevice\n", status); + Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioHardwarePropertyDefaultOutputDevice\n", (int)status); return false; } if (outputDeviceID == kAudioDeviceUnknown) @@ -181,7 +170,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) status = AudioDeviceSetProperty(outputDeviceID, NULL, 0, false, kAudioDevicePropertyBufferSize, propertySize, &bufferByteCount); if (status) { - Con_Printf("CoreAudio: AudioDeviceSetProperty() returned %d when setting kAudioDevicePropertyBufferSize to %d\n", status, CHUNK_SIZE); + Con_Printf("CoreAudio: AudioDeviceSetProperty() returned %d when setting kAudioDevicePropertyBufferSize to %d\n", (int)status, CHUNK_SIZE); return false; } @@ -189,7 +178,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) status = AudioDeviceGetProperty(outputDeviceID, 0, false, kAudioDevicePropertyBufferSize, &propertySize, &bufferByteCount); if (status) { - Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when setting kAudioDevicePropertyBufferSize\n", status); + Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when setting kAudioDevicePropertyBufferSize\n", (int)status); return false; } @@ -200,28 +189,41 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) return false; } submissionChunk /= requested->channels; - Con_DPrintf(" Chunk size = %d sample frames\n", submissionChunk); + Con_Printf(" Chunk size = %d sample frames\n", submissionChunk); // Print out the device status propertySize = sizeof(streamDesc); status = AudioDeviceGetProperty(outputDeviceID, 0, false, kAudioDevicePropertyStreamFormat, &propertySize, &streamDesc); if (status) { - Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioDevicePropertyStreamFormat\n", status); + Con_Printf("CoreAudio: AudioDeviceGetProperty() returned %d when getting kAudioDevicePropertyStreamFormat\n", (int)status); + return false; + } + + Con_Print (" Hardware format:\n"); + Con_Printf(" %5d mSampleRate\n", (unsigned int)streamDesc.mSampleRate); + Con_Printf(" %c%c%c%c mFormatID\n", + (char)(streamDesc.mFormatID >> 24), + (char)(streamDesc.mFormatID >> 16), + (char)(streamDesc.mFormatID >> 8), + (char)(streamDesc.mFormatID >> 0)); + Con_Printf(" %5u mBytesPerPacket\n", (unsigned int)streamDesc.mBytesPerPacket); + Con_Printf(" %5u mFramesPerPacket\n", (unsigned int)streamDesc.mFramesPerPacket); + Con_Printf(" %5u mBytesPerFrame\n", (unsigned int)streamDesc.mBytesPerFrame); + Con_Printf(" %5u mChannelsPerFrame\n", (unsigned int)streamDesc.mChannelsPerFrame); + Con_Printf(" %5u mBitsPerChannel\n", (unsigned int)streamDesc.mBitsPerChannel); + + // Suggest proper settings if they differ + if (requested->channels != streamDesc.mChannelsPerFrame || requested->speed != streamDesc.mSampleRate) + { + if (suggested != NULL) + { + memcpy (suggested, requested, sizeof (*suggested)); + suggested->channels = streamDesc.mChannelsPerFrame; + 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", - (streamDesc.mFormatID & 0xff000000) >> 24, - (streamDesc.mFormatID & 0x00ff0000) >> 16, - (streamDesc.mFormatID & 0x0000ff00) >> 8, - (streamDesc.mFormatID & 0x000000ff) >> 0); - Con_DPrintf(" %5d mBytesPerPacket\n", streamDesc.mBytesPerPacket); - Con_DPrintf(" %5d mFramesPerPacket\n", streamDesc.mFramesPerPacket); - Con_DPrintf(" %5d mBytesPerFrame\n", streamDesc.mBytesPerFrame); - Con_DPrintf(" %5d mChannelsPerFrame\n", streamDesc.mChannelsPerFrame); - Con_DPrintf(" %5d mBitsPerChannel\n", streamDesc.mBitsPerChannel); if(streamDesc.mFormatID != kAudioFormatLinearPCM) { @@ -233,7 +235,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) status = AudioDeviceAddIOProc(outputDeviceID, audioDeviceIOProc, NULL); if (status) { - Con_Printf("CoreAudio: AudioDeviceAddIOProc() returned %d\n", status); + Con_Printf("CoreAudio: AudioDeviceAddIOProc() returned %d\n", (int)status); return false; } @@ -253,7 +255,7 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested) status = AudioDeviceStart(outputDeviceID, audioDeviceIOProc); if (status) { - Con_Printf("CoreAudio: AudioDeviceStart() returned %d\n", status); + Con_Printf("CoreAudio: AudioDeviceStart() returned %d\n", (int)status); pthread_mutex_destroy(&coreaudio_mutex); AudioDeviceRemoveIOProc(outputDeviceID, audioDeviceIOProc); return false; @@ -282,7 +284,7 @@ void SndSys_Shutdown(void) status = AudioDeviceStop(outputDeviceID, audioDeviceIOProc); if (status) { - Con_Printf("AudioDeviceStop: returned %d\n", status); + Con_Printf("AudioDeviceStop: returned %d\n", (int)status); return; } s_isRunning = false; @@ -292,7 +294,7 @@ void SndSys_Shutdown(void) status = AudioDeviceRemoveIOProc(outputDeviceID, audioDeviceIOProc); if (status) { - Con_Printf("AudioDeviceRemoveIOProc: returned %d\n", status); + Con_Printf("AudioDeviceRemoveIOProc: returned %d\n", (int)status); return; }