21 #ifndef __JackDriver__
22 #define __JackDriver__
25 #include "JackClientInterface.h"
26 #include "JackConstants.h"
27 #include "JackPlatformPlug.h"
28 #include "JackClientControl.h"
34 class JackLockedEngine;
35 class JackGraphManager;
36 struct JackEngineControl;
37 class JackSlaveDriverInterface;
53 virtual int Open() = 0;
55 virtual int Open (
bool capturing,
60 const char* capture_driver_name,
61 const char* playback_driver_name,
62 jack_nframes_t capture_latency,
63 jack_nframes_t playback_latency) = 0;
65 virtual int Open(jack_nframes_t buffer_size,
66 jack_nframes_t samplerate,
72 const char* capture_driver_name,
73 const char* playback_driver_name,
74 jack_nframes_t capture_latency,
75 jack_nframes_t playback_latency) = 0;
77 virtual int Attach() = 0;
78 virtual int Detach() = 0;
80 virtual int Read() = 0;
81 virtual int Write() = 0;
83 virtual int Start() = 0;
84 virtual int Stop() = 0;
86 virtual bool IsFixedBufferSize() = 0;
87 virtual int SetBufferSize(jack_nframes_t buffer_size) = 0;
88 virtual int SetSampleRate(jack_nframes_t sample_rate) = 0;
90 virtual int Process() = 0;
92 virtual void SetMaster(
bool onoff) = 0;
93 virtual bool GetMaster() = 0;
98 virtual std::list<JackDriverInterface*> GetSlaves() = 0;
101 virtual int ProcessReadSlaves() = 0;
102 virtual int ProcessWriteSlaves() = 0;
105 virtual int ProcessRead() = 0;
106 virtual int ProcessWrite() = 0;
108 virtual int ProcessReadSync() = 0;
109 virtual int ProcessWriteSync() = 0;
111 virtual int ProcessReadAsync() = 0;
112 virtual int ProcessWriteAsync() = 0;
114 virtual bool IsRealTime()
const = 0;
115 virtual bool IsRunning()
const = 0;
129 #define CaptureDriverFlags static_cast<JackPortFlags>(JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal)
130 #define PlaybackDriverFlags static_cast<JackPortFlags>(JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal)
131 #define MonitorDriverFlags static_cast<JackPortFlags>(JackPortIsOutput)
138 char fCaptureDriverName[JACK_CLIENT_NAME_SIZE + 1];
139 char fPlaybackDriverName[JACK_CLIENT_NAME_SIZE + 1];
141 char fAliasName[JACK_CLIENT_NAME_SIZE + 1];
143 jack_nframes_t fCaptureLatency;
144 jack_nframes_t fPlaybackLatency;
146 int fCaptureChannels;
147 int fPlaybackChannels;
149 jack_time_t fBeginDateUst;
150 jack_time_t fEndDateUst;
160 std::list<JackDriverInterface*> fSlaveList;
164 bool fWithMonitorPorts;
168 jack_port_id_t fCapturePortList[DRIVER_PORT_NUM];
169 jack_port_id_t fPlaybackPortList[DRIVER_PORT_NUM];
170 jack_port_id_t fMonitorPortList[DRIVER_PORT_NUM];
172 std::list<std::pair<std::string, std::string> > fConnections;
175 void CycleTakeBeginTime();
176 void CycleTakeEndTime();
178 void SetupDriverSync(
int ref,
bool freewheel);
180 void NotifyXRun(jack_time_t callback_usecs,
float delayed_usecs);
181 void NotifyBufferSize(jack_nframes_t buffer_size);
182 void NotifySampleRate(jack_nframes_t sample_rate);
183 void NotifyFailure(
int code,
const char* reason);
185 virtual void SaveConnections();
186 virtual void RestoreConnections();
188 virtual int StartSlaves();
189 virtual int StopSlaves();
191 virtual int ResumeRefNum();
192 virtual int SuspendRefNum();
200 void SetMaster(
bool onoff);
206 std::list<JackDriverInterface*> GetSlaves()
213 virtual int Open(
bool capturing,
218 const char* capture_driver_name,
219 const char* playback_driver_name,
220 jack_nframes_t capture_latency,
221 jack_nframes_t playback_latency);
223 virtual int Open(jack_nframes_t buffer_size,
224 jack_nframes_t samplerate,
230 const char* capture_driver_name,
231 const char* playback_driver_name,
232 jack_nframes_t capture_latency,
233 jack_nframes_t playback_latency);
237 virtual int Process();
239 virtual int Attach();
240 virtual int Detach();
249 int ProcessReadSlaves();
250 int ProcessWriteSlaves();
256 int ProcessReadSync();
257 int ProcessWriteSync();
259 int ProcessReadAsync();
260 int ProcessWriteAsync();
262 virtual bool IsFixedBufferSize();
263 virtual int SetBufferSize(jack_nframes_t buffer_size);
264 virtual int SetSampleRate(jack_nframes_t sample_rate);
266 virtual int ClientNotify(
int refnum,
const char* name,
int notify,
int sync,
const char* message,
int value1,
int value2);
269 virtual bool IsRealTime()
const;
270 virtual bool IsRunning()
const {
return fIsRunning; }
271 virtual bool Initialize();
The base interface for drivers.
Inter process synchronization using using Mach semaphore.
Locked Engine, access to methods is serialized using a mutex.
Graph manager: contains the connection manager and the port array.
The base interface for drivers clients.
Engine control in shared memory.
Client control possibly in shared memory.