19#ifdef COREAUDIO_PLUGIN
20#define AUD_BUILD_PLUGIN
31#include <AudioToolbox/AudioToolbox.h>
32#include <AudioToolbox/CoreAudioClock.h>
33#include <AudioUnit/AudioUnit.h>
45 uint32_t m_buffersize;
55 AudioUnit m_audio_unit;
59 CAClockRef m_clock_ref;
60 bool m_audio_clock_ready{
false};
61 double m_synchronizerStartTime{0};
72 AUD_LOCAL static OSStatus CoreAudio_mix(
void* data, AudioUnitRenderActionFlags* flags,
const AudioTimeStamp* time_stamp, UInt32 bus_number, UInt32 number_frames, AudioBufferList* buffer_list);
75 CoreAudioDevice(
const CoreAudioDevice&) =
delete;
76 CoreAudioDevice& operator=(
const CoreAudioDevice&) =
delete;
79 void playing(
bool playing)
override;
96 virtual void seekSynchronizer(
double time);
97 virtual double getSynchronizerPosition();
98 virtual void playSynchronizer();
99 virtual void stopSynchronizer();
#define AUD_DEFAULT_BUFFER_SIZE
The default playback buffer size of a device.
Definition Audaspace.h:103
#define AUD_NAMESPACE_END
Closes the audaspace namespace aud.
Definition Audaspace.h:119
#define AUD_LOCAL
Used for hiding symbols from export in the shared library.
Definition Audaspace.h:80
#define AUD_NAMESPACE_BEGIN
Opens the audaspace namespace aud.
Definition Audaspace.h:116
#define AUD_PLUGIN_API
Used for exporting symbols in the shared library.
Definition Audaspace.h:94
The MixingThreadDevice class.
CoreAudioDevice(DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the CoreAudio audio device for playback.
virtual ~CoreAudioDevice()
Closes the CoreAudio audio device.
static void registerPlugin()
Registers this plugin.
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
virtual void preMixingWork(bool playing)
Called every iteration in the mixing thread before mixing.
Specification of a sound device.
Definition Specification.h:129