[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/48] audio: fix coreaudio compilation
From: |
Riku Voipio |
Subject: |
[Qemu-devel] [PATCH 05/48] audio: fix coreaudio compilation |
Date: |
Fri, 26 Mar 2010 16:06:26 +0000 |
From: Juha Riihimäki <address@hidden>
Signed-Off-By: Riku Voipio <address@hidden>
Signed-Off-By: Juha Riihimäki <address@hidden>
audio: fix coreaudio compilation on OS X 10.6 and OS X 10.5
---
audio/coreaudio.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/audio/coreaudio.c b/audio/coreaudio.c
index 0a26413..4fb6a01 100644
--- a/audio/coreaudio.c
+++ b/audio/coreaudio.c
@@ -47,6 +47,9 @@ typedef struct coreaudioVoiceOut {
pthread_mutex_t mutex;
int isAtexit;
AudioDeviceID outputDeviceID;
+#if defined(MAC_OS_X_VERSION_10_5) &&
(MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_5)
+ AudioDeviceIOProcID ioProcID;
+#endif
UInt32 audioDevicePropertyBufferFrameSize;
AudioStreamBasicDescription outputStreamBasicDescription;
int live;
@@ -56,7 +59,7 @@ typedef struct coreaudioVoiceOut {
static void coreaudio_logstatus (OSStatus status)
{
- char *str = "BUG";
+ const char *str = "BUG";
switch(status) {
case kAudioHardwareNoError:
@@ -104,7 +107,7 @@ static void coreaudio_logstatus (OSStatus status)
break;
default:
- AUD_log (AUDIO_CAP, "Reason: status code %ld\n", status);
+ AUD_log (AUDIO_CAP, "Reason: status code %d\n", status);
return;
}
@@ -148,10 +151,21 @@ static inline UInt32 isPlaying (AudioDeviceID
outputDeviceID)
{
OSStatus status;
UInt32 result = 0;
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ AudioObjectPropertyAddress propertyAddress = {
+ .mSelector = kAudioDevicePropertyDeviceIsRunning,
+ .mScope = kAudioObjectPropertyScopeGlobal,
+ .mElement = kAudioObjectPropertyElementMaster,
+ };
+ UInt32 resultSize = sizeof(result);
+ status = AudioObjectGetPropertyData(outputDeviceID, &propertyAddress,
+ 0, NULL, &resultSize, &result);
+#else
UInt32 propertySize = sizeof(outputDeviceID);
status = AudioDeviceGetProperty(
outputDeviceID, 0, 0,
kAudioDevicePropertyDeviceIsRunning, &propertySize, &result);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr(status,
"Could not determine whether Device is playing\n");
@@ -307,10 +321,21 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
/* open default output device */
propertySize = sizeof(core->outputDeviceID);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ AudioObjectPropertyAddress propertyAddress = {
+ .mSelector = kAudioHardwarePropertyDefaultOutputDevice,
+ .mScope = kAudioObjectPropertyScopeGlobal,
+ .mElement = kAudioObjectPropertyElementMaster,
+ };
+ status = AudioObjectGetPropertyData(kAudioObjectSystemObject,
+ &propertyAddress, 0, NULL,
+ &propertySize, &core->outputDeviceID);
+#else
status = AudioHardwareGetProperty(
kAudioHardwarePropertyDefaultOutputDevice,
&propertySize,
&core->outputDeviceID);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ,
"Could not get default output Device\n");
@@ -323,6 +348,11 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
/* get minimum and maximum buffer frame sizes */
propertySize = sizeof(frameRange);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ propertyAddress.mSelector = kAudioDevicePropertyBufferFrameSizeRange;
+ status = AudioObjectGetPropertyData(core->outputDeviceID, &propertyAddress,
+ 0, NULL, &propertySize, &frameRange);
+#else
status = AudioDeviceGetProperty(
core->outputDeviceID,
0,
@@ -330,6 +360,7 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
kAudioDevicePropertyBufferFrameSizeRange,
&propertySize,
&frameRange);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ,
"Could not get device buffer frame range\n");
@@ -350,6 +381,12 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
/* set Buffer Frame Size */
propertySize = sizeof(core->audioDevicePropertyBufferFrameSize);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ propertyAddress.mSelector = kAudioDevicePropertyBufferFrameSize;
+ status = AudioObjectSetPropertyData(core->outputDeviceID, &propertyAddress,
+ 0, NULL, propertySize,
+
&core->audioDevicePropertyBufferFrameSize);
+#else
status = AudioDeviceSetProperty(
core->outputDeviceID,
NULL,
@@ -358,15 +395,22 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
kAudioDevicePropertyBufferFrameSize,
propertySize,
&core->audioDevicePropertyBufferFrameSize);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ,
- "Could not set device buffer frame size %ld\n",
+ "Could not set device buffer frame size %d\n",
core->audioDevicePropertyBufferFrameSize);
return -1;
}
/* get Buffer Frame Size */
propertySize = sizeof(core->audioDevicePropertyBufferFrameSize);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ propertyAddress.mSelector = kAudioDevicePropertyBufferFrameSize;
+ status = AudioObjectGetPropertyData(core->outputDeviceID, &propertyAddress,
+ 0, NULL, &propertySize,
+
&core->audioDevicePropertyBufferFrameSize);
+#else
status = AudioDeviceGetProperty(
core->outputDeviceID,
0,
@@ -374,6 +418,7 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
kAudioDevicePropertyBufferFrameSize,
&propertySize,
&core->audioDevicePropertyBufferFrameSize);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ,
"Could not get device buffer frame size\n");
@@ -383,6 +428,12 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
/* get StreamFormat */
propertySize = sizeof(core->outputStreamBasicDescription);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ propertyAddress.mSelector = kAudioDevicePropertyStreamFormat;
+ status = AudioObjectGetPropertyData(core->outputDeviceID, &propertyAddress,
+ 0, NULL, &propertySize,
+ &core->outputStreamBasicDescription);
+#else
status = AudioDeviceGetProperty(
core->outputDeviceID,
0,
@@ -390,6 +441,7 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
kAudioDevicePropertyStreamFormat,
&propertySize,
&core->outputStreamBasicDescription);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ,
"Could not get Device Stream properties\n");
@@ -400,6 +452,12 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
/* set Samplerate */
core->outputStreamBasicDescription.mSampleRate = (Float64) as->freq;
propertySize = sizeof(core->outputStreamBasicDescription);
+#if MAC_OS_X_VERSION_MIN_REQUIRED>MAC_OS_X_VERSION_10_5
+ propertyAddress.mSelector = kAudioDevicePropertyStreamFormat;
+ status = AudioObjectSetPropertyData(core->outputDeviceID, &propertyAddress,
+ 0, NULL, propertySize,
+ &core->outputStreamBasicDescription);
+#else
status = AudioDeviceSetProperty(
core->outputDeviceID,
0,
@@ -408,6 +466,7 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
kAudioDevicePropertyStreamFormat,
propertySize,
&core->outputStreamBasicDescription);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ, "Could not set samplerate %d\n",
as->freq);
@@ -416,7 +475,14 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
}
/* set Callback */
+#if defined(MAC_OS_X_VERSION_10_5) &&
(MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_5)
+ status = AudioDeviceCreateIOProcID(core->outputDeviceID,
+ audioDeviceIOProc,
+ hw,
+ &core->ioProcID);
+#else
status = AudioDeviceAddIOProc(core->outputDeviceID, audioDeviceIOProc, hw);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ, "Could not set IOProc\n");
core->outputDeviceID = kAudioDeviceUnknown;
@@ -428,7 +494,11 @@ static int coreaudio_init_out (HWVoiceOut *hw, struct
audsettings *as)
status = AudioDeviceStart(core->outputDeviceID, audioDeviceIOProc);
if (status != kAudioHardwareNoError) {
coreaudio_logerr2 (status, typ, "Could not start playback\n");
+#if defined(MAC_OS_X_VERSION_10_5) &&
(MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_5)
+ AudioDeviceDestroyIOProcID(core->outputDeviceID, core->ioProcID);
+#else
AudioDeviceRemoveIOProc(core->outputDeviceID, audioDeviceIOProc);
+#endif
core->outputDeviceID = kAudioDeviceUnknown;
return -1;
}
@@ -453,8 +523,13 @@ static void coreaudio_fini_out (HWVoiceOut *hw)
}
/* remove callback */
+#if defined(MAC_OS_X_VERSION_10_5) &&
(MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_5)
+ status = AudioDeviceDestroyIOProcID(core->outputDeviceID,
+ core->ioProcID);
+#else
status = AudioDeviceRemoveIOProc(core->outputDeviceID,
audioDeviceIOProc);
+#endif
if (status != kAudioHardwareNoError) {
coreaudio_logerr (status, "Could not remove IOProc\n");
}
--
1.6.5
- [Qemu-devel] [PATCH 30/48] savevm and reset support for soc_dma, (continued)
- [Qemu-devel] [PATCH 30/48] savevm and reset support for soc_dma, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 29/48] Add triton2 (twl4030) driver, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 20/48] add reset support for musb, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 19/48] usb-ohci: add omap init support, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 37/48] target-arm: fix neon vqrshl instruction, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 27/48] tsc2005 overhaul, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 10/48] Lots of ARM TCG changes, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 36/48] target-arm: fix neon vqshl/vqshlu instructions, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 24/48] onenand overhaul, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 26/48] SD overhaul, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 05/48] audio: fix coreaudio compilation,
Riku Voipio <=
- Re: [Qemu-devel] [PATCH 00/48] RFC: omap3 patch collection, Paul Brook, 2010/03/26