Audaspace 1.4.0
A high level audio library.
Loading...
Searching...
No Matches
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
31
32#include <memory>
33
34#include <AudioUnit/AudioUnit.h>
35
37
42{
43private:
47 bool m_playback;
48
52 AudioUnit m_audio_unit;
53
57 std::unique_ptr<CoreAudioSynchronizer> m_synchronizer;
58
68 AUD_LOCAL static OSStatus CoreAudio_mix(void* data, AudioUnitRenderActionFlags* flags, const AudioTimeStamp* time_stamp, UInt32 bus_number, UInt32 number_frames, AudioBufferList* buffer_list);
69
70 // delete copy constructor and operator=
71 CoreAudioDevice(const CoreAudioDevice&) = delete;
72 CoreAudioDevice& operator=(const CoreAudioDevice&) = delete;
73
74protected:
75 virtual void playing(bool playing);
76
77public:
86
91
93
97 static void registerPlugin();
98};
99
#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 CoreAudioSynchronizer class.
The SoftwareDevice class.
This device plays back through CoreAudio, the Apple audio API.
Definition CoreAudioDevice.h:42
CoreAudioDevice(DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the CoreAudio audio device for playback.
virtual ISynchronizer * getSynchronizer()
Retrieves the synchronizer for this device, which enables accurate synchronization between audio play...
virtual ~CoreAudioDevice()
Closes the CoreAudio audio device.
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
static void registerPlugin()
Registers this plugin.
This class enables global synchronization of several audio applications if supported.
Definition ISynchronizer.h:39
The software device is a generic device with software mixing.
Definition SoftwareDevice.h:52
Specification of a sound device.
Definition Specification.h:120