20#define AUD_BUILD_PLUGIN
29#include <pipewire/pipewire.h>
42 pw_thread_loop* m_thread;
43 std::unique_ptr<pw_stream_events> m_events;
47 bool m_getSynchronizerStartTime{
false};
48 int64_t m_synchronizerStartTime{0};
49 double m_synchronizerStartPosition{0.0};
51 AUD_LOCAL static void handleStateChanged(
void* device_ptr,
enum pw_stream_state old,
enum pw_stream_state state,
const char* error);
57 AUD_LOCAL static void mixAudioBuffer(
void* device_ptr);
60 PipeWireDevice(
const PipeWireDevice&) =
delete;
61 PipeWireDevice& operator=(
const PipeWireDevice&) =
delete;
82 virtual void seekSynchronizer(
double time);
83 virtual double getSynchronizerPosition();
84 virtual void playSynchronizer();
85 virtual void stopSynchronizer();
#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 MixingThreadDevice class.
PipeWireDevice(const std::string &name, DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the PipeWire audio device for playback.
static void registerPlugin()
Registers this plugin.
virtual ~PipeWireDevice()
Closes the PipeWire audio device.
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
void preMixingWork(bool playing)
Called every iteration in the mixing thread before mixing.
Specification of a sound device.
Definition Specification.h:129