19 #ifdef PULSEAUDIO_PLUGIN 20 #define AUD_BUILD_PLUGIN 32 #include <condition_variable> 35 #include <pulse/pulseaudio.h> 48 bool m_playing =
false;
49 pa_usec_t m_time_start = 0;
50 double m_seek_pos = 0.0f;
57 virtual void seek(std::shared_ptr<IHandle> handle,
double time);
58 virtual double getPosition(std::shared_ptr<IHandle> handle);
62 PulseAudioSynchronizer m_synchronizer;
67 volatile bool m_playback;
71 pa_threaded_mainloop* m_mainloop;
72 pa_context* m_context;
74 pa_context_state_t m_state;
87 uint32_t m_underflows;
92 std::thread m_mixingThread;
97 std::mutex m_mixingLock;
102 std::condition_variable m_mixingCondition;
114 AUD_LOCAL static void PulseAudio_state_callback(pa_context* context,
void* data);
122 AUD_LOCAL static void PulseAudio_request(pa_stream* stream,
size_t total_bytes,
void* data);
129 virtual void playing(
bool playing);
151 static void registerPlugin();
#define AUD_NAMESPACE_BEGIN
Opens the audaspace namespace aud.
Definition: Audaspace.h:116
This class enables global synchronization of several audio applications if supported.
Definition: ISynchronizer.h:38
virtual ISynchronizer * getSynchronizer()
Retrieves the synchronizer for this device, which enables accurate synchronization between audio play...
#define AUD_DEFAULT_BUFFER_SIZE
The default playback buffer size of a device.
Definition: Audaspace.h:103
virtual void playing(bool playing)=0
This function tells the device, to start or pause playback.
Specification of a sound device.
Definition: Specification.h:128
This device plays back through PulseAudio, the simple direct media layer.
Definition: PulseAudioDevice.h:42
#define AUD_NAMESPACE_END
Closes the audaspace namespace aud.
Definition: Audaspace.h:119
#define AUD_PLUGIN_API
Used for exporting symbols in the shared library.
Definition: Audaspace.h:94
The software device is a generic device with software mixing.
Definition: SoftwareDevice.h:51
#define AUD_LOCAL
Used for hiding symbols from export in the shared library.
Definition: Audaspace.h:80
This class is a simple ring buffer in RAM which is 32 Byte aligned and provides functionality for con...
Definition: RingBuffer.h:36
This class is a default ISynchronizer implementation that actually does no synchronization and is int...
Definition: DefaultSynchronizer.h:33
The SoftwareDevice class.