Audaspace
1.9.0
A high level audio library.
Toggle main menu visibility
Loading...
Searching...
No Matches
pulseaudio
PulseAudioDevice.h
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright 2009-2016 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 PULSEAUDIO_PLUGIN
20
#define AUD_BUILD_PLUGIN
21
#endif
22
28
29
#include <pulse/pulseaudio.h>
30
31
#include "
devices/MixingThreadDevice.h
"
32
33
AUD_NAMESPACE_BEGIN
34
38
class
AUD_PLUGIN_API
PulseAudioDevice :
public
MixingThreadDevice
39
{
40
private
:
41
bool
m_corked;
42
43
pa_threaded_mainloop* m_mainloop;
44
pa_context* m_context;
45
pa_stream* m_stream;
46
pa_context_state_t m_state;
47
48
int
m_buffersize;
49
uint32_t m_underflows;
50
52
pa_usec_t m_synchronizerStartTime{0};
53
double
m_synchronizerStartPosition{0.0};
54
55
AUD_LOCAL
void
preMixingWork
(
bool
playing
)
override
;
56
62
AUD_LOCAL
static
void
PulseAudio_state_callback(pa_context* context,
void
* data);
63
70
AUD_LOCAL
static
void
PulseAudio_request(pa_stream* stream,
size_t
total_bytes,
void
* data);
71
72
// delete copy constructor and operator=
73
PulseAudioDevice(
const
PulseAudioDevice&) =
delete
;
74
PulseAudioDevice& operator=(
const
PulseAudioDevice&) =
delete
;
75
76
protected
:
77
virtual
void
playing
(
bool
playing
);
78
79
public
:
87
PulseAudioDevice
(
const
std::string &name,
DeviceSpecs
specs,
int
buffersize =
AUD_DEFAULT_BUFFER_SIZE
);
88
92
virtual
~PulseAudioDevice
();
93
94
virtual
void
seekSynchronizer(
double
time);
95
virtual
double
getSynchronizerPosition();
96
virtual
void
playSynchronizer();
97
virtual
void
stopSynchronizer();
98
102
static
void
registerPlugin
();
103
};
104
105
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.
MixingThreadDevice::preMixingWork
virtual void preMixingWork(bool playing)
Called every iteration in the mixing thread before mixing.
PulseAudioDevice::registerPlugin
static void registerPlugin()
Registers this plugin.
PulseAudioDevice::playing
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
PulseAudioDevice::~PulseAudioDevice
virtual ~PulseAudioDevice()
Closes the PulseAudio audio device.
PulseAudioDevice::PulseAudioDevice
PulseAudioDevice(const std::string &name, DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the PulseAudio audio device for playback.
DeviceSpecs
Specification of a sound device.
Definition
Specification.h:129
Generated by
1.17.0