Audaspace
1.9.0
A high level audio library.
Toggle main menu visibility
Loading...
Searching...
No Matches
pipewire
PipeWireDevice.h
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright 2009-2024 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 PIPEWIRE_PLUGIN
20
#define AUD_BUILD_PLUGIN
21
#endif
22
28
29
#include <pipewire/pipewire.h>
30
31
#include "
devices/MixingThreadDevice.h
"
32
33
AUD_NAMESPACE_BEGIN
34
38
class
AUD_PLUGIN_API
PipeWireDevice :
public
MixingThreadDevice
39
{
40
private
:
41
pw_stream* m_stream;
42
pw_thread_loop* m_thread;
43
std::unique_ptr<pw_stream_events> m_events;
44
bool
m_active{
false
};
45
47
bool
m_getSynchronizerStartTime{
false
};
48
int64_t m_synchronizerStartTime{0};
49
double
m_synchronizerStartPosition{0.0};
50
51
AUD_LOCAL
static
void
handleStateChanged(
void
* device_ptr,
enum
pw_stream_state old,
enum
pw_stream_state state,
const
char
* error);
52
57
AUD_LOCAL
static
void
mixAudioBuffer(
void
* device_ptr);
58
59
// delete copy constructor and operator=
60
PipeWireDevice(
const
PipeWireDevice&) =
delete
;
61
PipeWireDevice& operator=(
const
PipeWireDevice&) =
delete
;
62
63
protected
:
64
void
preMixingWork
(
bool
playing
);
65
virtual
void
playing
(
bool
playing
);
66
67
public
:
75
PipeWireDevice
(
const
std::string& name,
DeviceSpecs
specs,
int
buffersize =
AUD_DEFAULT_BUFFER_SIZE
);
76
80
virtual
~PipeWireDevice
();
81
82
virtual
void
seekSynchronizer(
double
time);
83
virtual
double
getSynchronizerPosition();
84
virtual
void
playSynchronizer();
85
virtual
void
stopSynchronizer();
86
90
static
void
registerPlugin
();
91
};
92
93
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.
PipeWireDevice::PipeWireDevice
PipeWireDevice(const std::string &name, DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the PipeWire audio device for playback.
PipeWireDevice::registerPlugin
static void registerPlugin()
Registers this plugin.
PipeWireDevice::~PipeWireDevice
virtual ~PipeWireDevice()
Closes the PipeWire audio device.
PipeWireDevice::playing
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
PipeWireDevice::preMixingWork
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