#include "mem.h"
#include "log.h"
#include "syscalls.h"
+#include "configuration.h"
/** @brief Callback to request sample data */
static uaudio_callback *coreaudio_callback;
uaudio_bits);
coreaudio_callback = callback;
coreaudio_userdata = userdata;
- device = uaudio_get("device");
+ device = uaudio_get("device", "default");
coreaudio_adid = coreaudio_getdevice(device);
/* Get the device properties */
propertySize = sizeof asbd;
if(status)
coreaudio_fatal(status, "AudioHardwareGetProperty");
D(("mSampleRate %f", asbd.mSampleRate));
- D(("mFormatID %08lx", asbd.mFormatID));
- D(("mFormatFlags %08lx", asbd.mFormatFlags));
- D(("mBytesPerPacket %08lx", asbd.mBytesPerPacket));
- D(("mFramesPerPacket %08lx", asbd.mFramesPerPacket));
- D(("mBytesPerFrame %08lx", asbd.mBytesPerFrame));
- D(("mChannelsPerFrame %08lx", asbd.mChannelsPerFrame));
- D(("mBitsPerChannel %08lx", asbd.mBitsPerChannel));
- D(("mReserved %08lx", asbd.mReserved));
+ D(("mFormatID %08"PRIx32, (uint32_t)asbd.mFormatID));
+ D(("mFormatFlags %08"PRIx32, (uint32_t)asbd.mFormatFlags));
+ D(("mBytesPerPacket %08"PRIx32, (uint32_t)asbd.mBytesPerPacket));
+ D(("mFramesPerPacket %08"PRIx32, (uint32_t)asbd.mFramesPerPacket));
+ D(("mBytesPerFrame %08"PRIx32, (uint32_t)asbd.mBytesPerFrame));
+ D(("mChannelsPerFrame %08"PRIx32, (uint32_t)asbd.mChannelsPerFrame));
+ D(("mBitsPerChannel %08"PRIx32, (uint32_t)asbd.mBitsPerChannel));
+ D(("mReserved %08"PRIx32, (uint32_t)asbd.mReserved));
/* Check that everything adds up */
if(asbd.mFormatID != kAudioFormatLinearPCM)
disorder_fatal(0, "audio device does not support kAudioFormatLinearPCM");
coreaudio_fatal(status, "AudioDeviceStop");
}
+static void coreaudio_configure(void) {
+ uaudio_set("device", config->device);
+}
+
const struct uaudio uaudio_coreaudio = {
.name = "coreaudio",
.options = coreaudio_options,
.start = coreaudio_start,
.stop = coreaudio_stop,
.activate = coreaudio_activate,
- .deactivate = coreaudio_deactivate
+ .deactivate = coreaudio_deactivate,
+ .configure = coreaudio_configure,
};
#endif