20#define AUD_BUILD_PLUGIN
30#include <condition_variable>
50 jack_port_t** m_ports;
55 jack_client_t* m_client;
66 AUD_LOCAL static void jack_shutdown(
void* data);
74 AUD_LOCAL static int jack_mix(jack_nframes_t length,
void* data);
76 AUD_LOCAL static int jack_sync(jack_transport_state_t state, jack_position_t* pos,
void* data);
81 jack_transport_state_t m_lastState;
86 jack_transport_state_t m_lastMixState;
91 std::atomic<float> m_syncTime;
96 std::atomic<int> m_syncCallRevision;
101 std::atomic<int> m_lastSyncCallRevision;
106 int m_rollingSyncRevision;
113 int m_lastRollingSyncRevision;
123 void* m_syncFuncData;
128 JackDevice(
const JackDevice&) =
delete;
129 JackDevice& operator=(
const JackDevice&) =
delete;
#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.
This class is a simple buffer in RAM which is 32 Byte aligned and provides resize functionality.
Definition Buffer.h:34
void(* syncFunction)(void *, int, float)
The syncFunction is called when a synchronization event happens.
Definition IDevice.h:120
JackDevice(const std::string &name, DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Creates a JACK client for audio output.
void stopSynchronizer()
Stops jack transport playback.
double getSynchronizerPosition()
Retrieves the jack transport playback time.
void seekSynchronizer(double time)
Seeks jack transport playback.
void setSyncCallback(syncFunction sync, void *data)
Sets the sync callback for jack transport playback.
static void registerPlugin()
Registers this plugin.
int isSynchronizerPlaying()
Returns whether jack transport plays back.
void playSynchronizer()
Starts jack transport playback.
virtual void playing(bool playing)
This function tells the device, to start or pause playback.
virtual ~JackDevice()
Closes the JACK client.
virtual void preMixingWork(bool playing)
Called every iteration in the mixing thread before mixing.
Specification of a sound device.
Definition Specification.h:129