summaryrefslogtreecommitdiff
path: root/drumgizmo/output/coreaudio.h
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2018-03-31 16:49:39 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2019-04-12 19:22:48 +0200
commit4d00b92aabe56d3e9ffa91afd407cdb4f976b295 (patch)
treecfe58cbd44a4533d5a602e8b49a76aa8aa03ad47 /drumgizmo/output/coreaudio.h
parentca2fd1116ea82d51a11ad4b61b82c6a65c826069 (diff)
Listen ma' we play a sine wave\!
Diffstat (limited to 'drumgizmo/output/coreaudio.h')
-rw-r--r--drumgizmo/output/coreaudio.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/drumgizmo/output/coreaudio.h b/drumgizmo/output/coreaudio.h
index 3e3b728..731ba47 100644
--- a/drumgizmo/output/coreaudio.h
+++ b/drumgizmo/output/coreaudio.h
@@ -28,7 +28,9 @@
#include <audiotypes.h>
#include <CoreAudio/CoreAudio.h>
+#include <CoreServices/CoreServices.h>
#include <AudioUnit/AudioUnit.h>
+#include <AudioUnit/AUComponent.h>
#include "audiooutputengine.h"
@@ -52,7 +54,35 @@ public:
private:
AudioDeviceID device_id{kAudioDeviceUnknown};
- std::string uid;
+ std::string id;
std::uint32_t frames{1024u};
std::uint32_t samplerate{44100u};
+ AudioUnit au_hal;
+ AudioBufferList* input_list;
+
+ // libao:
+static OSStatus audioCallback (void *inRefCon,
+ AudioUnitRenderActionFlags *inActionFlags,
+ const AudioTimeStamp *inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList *ioData);
+
+ AudioDeviceID outputDevice;
+ ComponentInstance outputAudioUnit;
+ int output_p;
+
+ /* Keep track of whether the output stream has actually been
+ started/stopped */
+ Boolean started;
+ Boolean isStopping;
+
+ /* Our internal queue of samples waiting to be consumed by
+ CoreAudio */
+ void *buffer;
+ unsigned int bufferByteCount;
+ unsigned int firstValidByteOffset;
+ unsigned int validByteCount;
+
+ unsigned int buffer_time;
};