Audaspace
1.10.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
#include <string>
34
35
AUD_NAMESPACE_BEGIN
36
40
class
AUD_PLUGIN_API
PulseAudioDevice :
public
MixingThreadDevice
41
{
42
private
:
43
bool
m_corked;
44
45
pa_threaded_mainloop* m_mainloop;
46
pa_context* m_context;
47
pa_stream* m_stream;
48
pa_context_state_t m_state;
49
50
int
m_buffersize;
51
uint32_t m_underflows;
52
54
pa_usec_t m_synchronizerStartTime{0};
55
double
m_synchronizerStartPosition{0.0};
56
57
AUD_LOCAL
void
preMixingWork
(
bool
playing
)
override
;
58
64
AUD_LOCAL
static
void
PulseAudio_state_callback(pa_context* context,
void
* data);
65
72
AUD_LOCAL
static
void
PulseAudio_request(pa_stream* stream,
size_t
total_bytes,
void
* data);
73
74
// delete copy constructor and operator=
75
PulseAudioDevice(
const
PulseAudioDevice&) =
delete
;
76
PulseAudioDevice& operator=(
const
PulseAudioDevice&) =
delete
;
77
78
protected
:
79
virtual
void
playing
(
bool
playing
);
80
81
public
:
89
PulseAudioDevice
(
const
std::string &name,
DeviceSpecs
specs,
int
buffersize =
AUD_DEFAULT_BUFFER_SIZE
);
90
94
virtual
~PulseAudioDevice
();
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.
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:126
Generated by
1.17.0