21 #ifndef __JackTransportEngine__
22 #define __JackTransportEngine__
24 #include "JackAtomicArrayState.h"
25 #include "JackCompilerDeps.h"
32 TransportCommandNone = 0,
33 TransportCommandStart = 1,
34 TransportCommandStop = 2,
35 } transport_command_t;
90 class JackClientInterface;
98 jack_transport_state_t fTransportState;
99 volatile transport_command_t fTransportCmd;
100 transport_command_t fPreviousCmd;
101 jack_time_t fSyncTimeout;
107 SInt32 fWriteCounter;
114 void SyncTimeout(jack_nframes_t frame_rate, jack_nframes_t buffer_size);
123 void SetCommand(transport_command_t state)
125 fTransportCmd = state;
128 jack_transport_state_t GetState()
const
130 return fTransportState;
133 void SetState(jack_transport_state_t state)
135 fTransportState = state;
141 int ResetTimebase(
int refnum);
146 int SetTimebaseMaster(
int refnum,
bool conditionnal);
148 void GetTimebaseMaster(
int& refnum,
bool& conditionnal)
150 refnum = fTimeBaseMaster;
151 conditionnal = fConditionnal;
157 void CycleBegin(jack_nframes_t frame_rate, jack_time_t time);
162 void CycleEnd(
JackClientInterface** table, jack_nframes_t frame_rate, jack_nframes_t buffer_size);
167 void SetSyncTimeout(jack_time_t timeout)
169 fSyncTimeout = timeout;
174 jack_unique_t GenerateUniqueID()
176 return (jack_unique_t)INC_ATOMIC(&fWriteCounter);
183 jack_nframes_t GetCurrentFrame();
187 bool GetNetworkSync()
const
192 void SetNetworkSync(
bool sync)
197 } POST_PACKED_STRUCTURE;
A class to handle several states in a lock-free manner.