Audaspace
1.9.0
A high level audio library.
Toggle main menu visibility
Loading...
Searching...
No Matches
coreaudio
CoreAudioDevice.h
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright 2009-2021 Jörg Müller
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
******************************************************************************/
16
17
#pragma once
18
19
#ifdef COREAUDIO_PLUGIN
20
#define AUD_BUILD_PLUGIN
21
#endif
22
28
29
#include <memory>
30
31
#include <AudioToolbox/AudioToolbox.h>
32
#include <AudioToolbox/CoreAudioClock.h>
33
#include <AudioUnit/AudioUnit.h>
34
35
#include "
devices/MixingThreadDevice.h
"
36
37
AUD_NAMESPACE_BEGIN
38
42
class
AUD_PLUGIN_API
CoreAudioDevice :
public
MixingThreadDevice
43
{
44
private
:
45
uint32_t m_buffersize;
46
50
bool
m_playback;
51
55
AudioUnit m_audio_unit;
56
bool
m_active{
false
};
57
59
CAClockRef m_clock_ref;
60
bool
m_audio_clock_ready{
false
};
61
double
m_synchronizerStartTime{0};
62
72
AUD_LOCAL
static
OSStatus CoreAudio_mix(
void
* data, AudioUnitRenderActionFlags* flags,
const
AudioTimeStamp* time_stamp, UInt32 bus_number, UInt32 number_frames, AudioBufferList* buffer_list);
73
74
// delete copy constructor and operator=
75
CoreAudioDevice(
const
CoreAudioDevice&) =
delete
;
76
CoreAudioDevice& operator=(
const
CoreAudioDevice&) =
delete
;
77
78
AUD_LOCAL
void
preMixingWork
(
bool
playing)
override
;
79
void
playing
(
bool
playing)
override
;
80
81
public
:
89
CoreAudioDevice
(
DeviceSpecs
specs,
int
buffersize =
AUD_DEFAULT_BUFFER_SIZE
);
90
94
virtual
~CoreAudioDevice
();
95
96
virtual
void
seekSynchronizer(
double
time);
97
virtual
double
getSynchronizerPosition();
98
virtual
void
playSynchronizer();
99
virtual
void
stopSynchronizer();
100
104
static
void
registerPlugin
();
105
};
106
107
AUD_NAMESPACE_END
AUD_DEFAULT_BUFFER_SIZE
#define AUD_DEFAULT_BUFFER_SIZE
The default playback buffer size of a device.
Definition
Audaspace.h:103
AUD_NAMESPACE_END
#define AUD_NAMESPACE_END
Closes the audaspace namespace aud.
Definition
Audaspace.h:119
AUD_LOCAL
#define AUD_LOCAL
Used for hiding symbols from export in the shared library.
Definition
Audaspace.h:80
AUD_NAMESPACE_BEGIN
#define AUD_NAMESPACE_BEGIN
Opens the audaspace namespace aud.
Definition
Audaspace.h:116
AUD_PLUGIN_API
#define AUD_PLUGIN_API
Used for exporting symbols in the shared library.
Definition
Audaspace.h:94
MixingThreadDevice.h
The MixingThreadDevice class.
CoreAudioDevice::CoreAudioDevice
CoreAudioDevice(DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the CoreAudio audio device for playback.
CoreAudioDevice::~CoreAudioDevice
virtual ~CoreAudioDevice()
Closes the CoreAudio audio device.
CoreAudioDevice::registerPlugin
static void registerPlugin()
Registers this plugin.
MixingThreadDevice::playing
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
MixingThreadDevice::preMixingWork
virtual void preMixingWork(bool playing)
Called every iteration in the mixing thread before mixing.
DeviceSpecs
Specification of a sound device.
Definition
Specification.h:129
Generated by
1.17.0