osx: use OSStatus and GetMacOSStatusCommentString()

The return type of most OS X functions is OSStatus, not int.  We can
get a nice error message from GetMacOSStatusCommentString(), log it.
This commit is contained in:
Max Kellermann 2009-02-26 22:01:42 +01:00
parent 9dc966041d
commit 353ae5e558

View File

@ -150,7 +150,8 @@ osx_output_open(void *data, struct audio_format *audio_format)
Component comp; Component comp;
AURenderCallbackStruct callback; AURenderCallbackStruct callback;
AudioStreamBasicDescription stream_description; AudioStreamBasicDescription stream_description;
int err; OSStatus status;
ComponentResult result;
if (audio_format->bits > 16) if (audio_format->bits > 16)
audio_format->bits = 16; audio_format->bits = 16;
@ -167,23 +168,29 @@ osx_output_open(void *data, struct audio_format *audio_format)
return false; return false;
} }
if (OpenAComponent(comp, &od->au) != noErr) { status = OpenAComponent(comp, &od->au);
g_warning("Unable to open OS X component\n"); if (status != noErr) {
g_warning("Unable to open OS X component: %s",
GetMacOSStatusCommentString(status));
return false; return false;
} }
if (AudioUnitInitialize(od->au) != 0) { status = AudioUnitInitialize(od->au);
if (status != noErr) {
CloseComponent(od->au); CloseComponent(od->au);
g_warning("Unable to initialize OS X audio unit\n"); g_warning("Unable to initialize OS X audio unit: %s",
GetMacOSStatusCommentString(status));
return false; return false;
} }
callback.inputProc = osx_render; callback.inputProc = osx_render;
callback.inputProcRefCon = od; callback.inputProcRefCon = od;
if (AudioUnitSetProperty(od->au, kAudioUnitProperty_SetRenderCallback, result = AudioUnitSetProperty(od->au,
kAudioUnitScope_Input, 0, kAudioUnitProperty_SetRenderCallback,
&callback, sizeof(callback)) != 0) { kAudioUnitScope_Input, 0,
&callback, sizeof(callback));
if (result != noErr) {
AudioUnitUninitialize(od->au); AudioUnitUninitialize(od->au);
CloseComponent(od->au); CloseComponent(od->au);
g_warning("unable to set callback for OS X audio unit\n"); g_warning("unable to set callback for OS X audio unit\n");
@ -204,10 +211,11 @@ osx_output_open(void *data, struct audio_format *audio_format)
stream_description.mChannelsPerFrame = audio_format->channels; stream_description.mChannelsPerFrame = audio_format->channels;
stream_description.mBitsPerChannel = audio_format->bits; stream_description.mBitsPerChannel = audio_format->bits;
if (AudioUnitSetProperty(od->au, kAudioUnitProperty_StreamFormat, result = AudioUnitSetProperty(od->au, kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input, 0, kAudioUnitScope_Input, 0,
&stream_description, &stream_description,
sizeof(stream_description)) != 0) { sizeof(stream_description));
if (result != noErr) {
AudioUnitUninitialize(od->au); AudioUnitUninitialize(od->au);
CloseComponent(od->au); CloseComponent(od->au);
g_warning("Unable to set format on OS X device\n"); g_warning("Unable to set format on OS X device\n");
@ -222,9 +230,10 @@ osx_output_open(void *data, struct audio_format *audio_format)
od->pos = 0; od->pos = 0;
od->len = 0; od->len = 0;
err = AudioOutputUnitStart(od->au); status = AudioOutputUnitStart(od->au);
if (err != 0) { if (status != 0) {
g_warning("unable to start audio output: %i", err); g_warning("unable to start audio output: %s",
GetMacOSStatusCommentString(status));
return false; return false;
} }