jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

896 lines
44KB

  1. /*
  2. Copyright (C) 2001-2003 Paul Davis
  3. Copyright (C) 2004-2006 Grame
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. */
  16. #include "jack.h"
  17. #include "JackExports.h"
  18. #include <dlfcn.h>
  19. //using namespace Jack;
  20. #ifdef __cplusplus
  21. extern "C"
  22. {
  23. #endif
  24. EXPORT int jack_client_name_size (void);
  25. EXPORT char* jack_get_client_name (jack_client_t *client);
  26. EXPORT int jack_internal_client_new (const char *client_name,
  27. const char *load_name,
  28. const char *load_init);
  29. EXPORT jack_client_t* my_jack_internal_client_new(const char* client_name);
  30. EXPORT void jack_internal_client_close (const char *client_name);
  31. EXPORT void my_jack_internal_client_close (jack_client_t* client);
  32. EXPORT int jack_is_realtime (jack_client_t *client);
  33. EXPORT void jack_on_shutdown (jack_client_t *client,
  34. void (*function)(void *arg), void *arg);
  35. EXPORT int jack_set_process_callback (jack_client_t *client,
  36. JackProcessCallback process_callback,
  37. void *arg);
  38. EXPORT int jack_set_thread_init_callback (jack_client_t *client,
  39. JackThreadInitCallback thread_init_callback,
  40. void *arg);
  41. EXPORT int jack_set_freewheel_callback (jack_client_t *client,
  42. JackFreewheelCallback freewheel_callback,
  43. void *arg);
  44. EXPORT int jack_set_freewheel(jack_client_t* client, int onoff);
  45. EXPORT int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes);
  46. EXPORT int jack_set_buffer_size_callback (jack_client_t *client,
  47. JackBufferSizeCallback bufsize_callback,
  48. void *arg);
  49. EXPORT int jack_set_sample_rate_callback (jack_client_t *client,
  50. JackSampleRateCallback srate_callback,
  51. void *arg);
  52. EXPORT int jack_set_port_registration_callback (jack_client_t *,
  53. JackPortRegistrationCallback
  54. registration_callback, void *arg);
  55. EXPORT int jack_set_graph_order_callback (jack_client_t *,
  56. JackGraphOrderCallback graph_callback,
  57. void *);
  58. EXPORT int jack_set_xrun_callback (jack_client_t *,
  59. JackXRunCallback xrun_callback, void *arg);
  60. EXPORT int jack_activate (jack_client_t *client);
  61. EXPORT int jack_deactivate (jack_client_t *client);
  62. EXPORT jack_port_t * jack_port_register (jack_client_t *client,
  63. const char *port_name,
  64. const char *port_type,
  65. unsigned long flags,
  66. unsigned long buffer_size);
  67. EXPORT int jack_port_unregister (jack_client_t *, jack_port_t *);
  68. EXPORT void * jack_port_get_buffer (jack_port_t *, jack_nframes_t);
  69. EXPORT const char * jack_port_name (const jack_port_t *port);
  70. EXPORT const char * jack_port_short_name (const jack_port_t *port);
  71. EXPORT int jack_port_flags (const jack_port_t *port);
  72. EXPORT const char * jack_port_type (const jack_port_t *port);
  73. EXPORT int jack_port_is_mine (const jack_client_t *, const jack_port_t *port);
  74. EXPORT int jack_port_connected (const jack_port_t *port);
  75. EXPORT int jack_port_connected_to (const jack_port_t *port,
  76. const char *port_name);
  77. EXPORT const char ** jack_port_get_connections (const jack_port_t *port);
  78. EXPORT const char ** jack_port_get_all_connections (const jack_client_t *client,
  79. const jack_port_t *port);
  80. EXPORT int jack_port_tie (jack_port_t *src, jack_port_t *dst);
  81. EXPORT int jack_port_untie (jack_port_t *port);
  82. EXPORT int jack_port_lock (jack_client_t *, jack_port_t *);
  83. EXPORT int jack_port_unlock (jack_client_t *, jack_port_t *);
  84. EXPORT jack_nframes_t jack_port_get_latency (jack_port_t *port);
  85. EXPORT jack_nframes_t jack_port_get_total_latency (jack_client_t *,
  86. jack_port_t *port);
  87. EXPORT void jack_port_set_latency (jack_port_t *, jack_nframes_t);
  88. EXPORT int jack_recompute_total_latencies (jack_client_t*);
  89. EXPORT int jack_port_set_name (jack_port_t *port, const char *port_name);
  90. EXPORT int jack_port_request_monitor (jack_port_t *port, int onoff);
  91. EXPORT int jack_port_request_monitor_by_name (jack_client_t *client,
  92. const char *port_name, int onoff);
  93. EXPORT int jack_port_ensure_monitor (jack_port_t *port, int onoff);
  94. EXPORT int jack_port_monitoring_input (jack_port_t *port);
  95. EXPORT int jack_connect (jack_client_t *,
  96. const char *source_port,
  97. const char *destination_port);
  98. EXPORT int jack_disconnect (jack_client_t *,
  99. const char *source_port,
  100. const char *destination_port);
  101. EXPORT int jack_port_disconnect (jack_client_t *, jack_port_t *);
  102. EXPORT int jack_port_name_size(void);
  103. EXPORT int jack_port_type_size(void);
  104. EXPORT jack_nframes_t jack_get_sample_rate (jack_client_t *);
  105. EXPORT jack_nframes_t jack_get_buffer_size (jack_client_t *);
  106. EXPORT const char ** jack_get_ports (jack_client_t *,
  107. const char *port_name_pattern,
  108. const char *type_name_pattern,
  109. unsigned long flags);
  110. EXPORT jack_port_t * jack_port_by_name (jack_client_t *, const char *port_name);
  111. EXPORT jack_port_t * jack_port_by_id (jack_client_t *client,
  112. jack_port_id_t port_id);
  113. EXPORT int jack_engine_takeover_timebase (jack_client_t *);
  114. EXPORT jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *);
  115. EXPORT jack_nframes_t jack_frame_time (const jack_client_t *);
  116. EXPORT jack_nframes_t jack_last_frame_time (const jack_client_t *client);
  117. EXPORT float jack_cpu_load (jack_client_t *client);
  118. EXPORT pthread_t jack_client_thread_id (jack_client_t *);
  119. EXPORT void jack_set_error_function (void (*func)(const char *));
  120. EXPORT float jack_get_max_delayed_usecs (jack_client_t *client);
  121. EXPORT float jack_get_xrun_delayed_usecs (jack_client_t *client);
  122. EXPORT void jack_reset_max_delayed_usecs (jack_client_t *client);
  123. EXPORT int jack_release_timebase (jack_client_t *client);
  124. EXPORT int jack_set_sync_callback (jack_client_t *client,
  125. JackSyncCallback sync_callback,
  126. void *arg);
  127. EXPORT int jack_set_sync_timeout (jack_client_t *client,
  128. jack_time_t timeout);
  129. EXPORT int jack_set_timebase_callback (jack_client_t *client,
  130. int conditional,
  131. JackTimebaseCallback timebase_callback,
  132. void *arg);
  133. EXPORT int jack_transport_locate (jack_client_t *client,
  134. jack_nframes_t frame);
  135. EXPORT jack_transport_state_t jack_transport_query (const jack_client_t *client,
  136. jack_position_t *pos);
  137. EXPORT jack_nframes_t jack_get_current_transport_frame (const jack_client_t *client);
  138. EXPORT int jack_transport_reposition (jack_client_t *client,
  139. jack_position_t *pos);
  140. EXPORT void jack_transport_start (jack_client_t *client);
  141. EXPORT void jack_transport_stop (jack_client_t *client);
  142. EXPORT void jack_get_transport_info (jack_client_t *client,
  143. jack_transport_info_t *tinfo);
  144. EXPORT void jack_set_transport_info (jack_client_t *client,
  145. jack_transport_info_t *tinfo);
  146. EXPORT int jack_acquire_real_time_scheduling (pthread_t thread, int priority);
  147. EXPORT int jack_client_create_thread (jack_client_t* client,
  148. pthread_t *thread,
  149. int priority,
  150. int realtime, // boolean
  151. void *(*start_routine)(void*),
  152. void *arg);
  153. EXPORT int jack_drop_real_time_scheduling (pthread_t thread);
  154. EXPORT char * jack_get_internal_client_name (jack_client_t *client,
  155. jack_intclient_t intclient);
  156. EXPORT jack_intclient_t jack_internal_client_handle (jack_client_t *client,
  157. const char *client_name,
  158. jack_status_t *status);
  159. EXPORT jack_intclient_t jack_internal_client_load (jack_client_t *client,
  160. const char *client_name,
  161. jack_options_t options,
  162. jack_status_t *status, ...);
  163. EXPORT jack_status_t jack_internal_client_unload (jack_client_t *client,
  164. jack_intclient_t intclient);
  165. EXPORT jack_client_t * jack_client_open (const char *client_name,
  166. jack_options_t options,
  167. jack_status_t *status, ...);
  168. EXPORT jack_client_t * jack_client_new (const char *client_name);
  169. EXPORT int jack_client_close (jack_client_t *client);
  170. #ifdef __cplusplus
  171. }
  172. #endif
  173. // Function definition
  174. typedef void* (*jack_port_get_buffer_fun_def)(jack_port_t* port, jack_nframes_t frames);
  175. static jack_port_get_buffer_fun_def jack_port_get_buffer_fun = 0;
  176. EXPORT void* jack_port_get_buffer(jack_port_t* port, jack_nframes_t frames)
  177. {
  178. return jack_port_get_buffer_fun(port, frames);
  179. }
  180. typedef const char* (*jack_port_name_fun_def)(const jack_port_t* port);
  181. static jack_port_name_fun_def jack_port_name_fun = 0;
  182. EXPORT const char* jack_port_name(const jack_port_t* port)
  183. {
  184. return jack_port_name_fun(port);
  185. }
  186. typedef const char* (*jack_port_short_name_fun_def) (const jack_port_t* port);
  187. static jack_port_short_name_fun_def jack_port_short_name_fun = 0;
  188. EXPORT const char* jack_port_short_name(const jack_port_t* port)
  189. {
  190. return jack_port_short_name_fun(port);
  191. }
  192. typedef int (*jack_port_flags_fun_def)(const jack_port_t* port);
  193. static jack_port_flags_fun_def jack_port_flags_fun = 0;
  194. EXPORT int jack_port_flags(const jack_port_t* port)
  195. {
  196. return jack_port_flags_fun(port);
  197. }
  198. typedef const char* (*jack_port_type_fun_def)(const jack_port_t* port);
  199. static jack_port_type_fun_def jack_port_type_fun = 0;
  200. EXPORT const char* jack_port_type(const jack_port_t* port)
  201. {
  202. return jack_port_type_fun(port);
  203. }
  204. typedef int (*jack_port_connected_fun_def)(const jack_port_t* port);
  205. static jack_port_connected_fun_def jack_port_connected_fun = 0;
  206. EXPORT int jack_port_connected(const jack_port_t* port)
  207. {
  208. return jack_port_connected_fun(port);
  209. }
  210. typedef int (*jack_port_connected_to_fun_def)(const jack_port_t* port, const char* portname);
  211. static jack_port_connected_to_fun_def jack_port_connected_to_fun = 0;
  212. EXPORT int jack_port_connected_to(const jack_port_t* port, const char* portname)
  213. {
  214. return jack_port_connected_to_fun(port, portname);
  215. }
  216. typedef int (*jack_port_tie_fun_def)(jack_port_t* src, jack_port_t* dst);
  217. static jack_port_tie_fun_def jack_port_tie_fun = 0;
  218. EXPORT int jack_port_tie(jack_port_t* src, jack_port_t* dst)
  219. {
  220. return jack_port_tie_fun(src, dst);
  221. }
  222. typedef int (*jack_port_untie_fun_def)(jack_port_t* port);
  223. static jack_port_untie_fun_def jack_port_untie_fun = 0;
  224. EXPORT int jack_port_untie(jack_port_t* port)
  225. {
  226. return jack_port_untie_fun(port);
  227. }
  228. typedef jack_nframes_t (*jack_port_get_latency_fun_def)(jack_port_t* port);
  229. static jack_port_get_latency_fun_def jack_port_get_latency_fun = 0;
  230. EXPORT jack_nframes_t jack_port_get_latency(jack_port_t* port)
  231. {
  232. return jack_port_get_latency(port);
  233. }
  234. typedef void (*jack_port_set_latency_fun_def)(jack_port_t* port, jack_nframes_t frames);
  235. static jack_port_set_latency_fun_def jack_port_set_latency_fun = 0;
  236. EXPORT void jack_port_set_latency(jack_port_t* port, jack_nframes_t frames)
  237. {
  238. jack_port_set_latency(port, frames);
  239. }
  240. typedef int (*jack_recompute_total_latencies_fun_def)(jack_client_t* ext_client);
  241. static jack_recompute_total_latencies_fun_def jack_recompute_total_latencies_fun = 0;
  242. EXPORT int jack_recompute_total_latencies(jack_client_t* ext_client)
  243. {
  244. return jack_recompute_total_latencies_fun(ext_client);
  245. }
  246. typedef int (*jack_port_set_name_fun_def)(jack_port_t* port, const char* name);
  247. static jack_port_set_name_fun_def jack_port_set_name_fun = 0;
  248. EXPORT int jack_port_set_name(jack_port_t* port, const char* name)
  249. {
  250. return jack_port_set_name_fun(port, name);
  251. }
  252. typedef int (*jack_port_request_monitor_fun_def)(jack_port_t* port, int onoff);
  253. static jack_port_request_monitor_fun_def jack_port_request_monitor_fun = 0;
  254. EXPORT int jack_port_request_monitor(jack_port_t* port, int onoff)
  255. {
  256. return jack_port_request_monitor_fun(port, onoff);
  257. }
  258. typedef int (*jack_port_request_monitor_by_name_fun_def)(jack_client_t* ext_client, const char* port_name, int onoff);
  259. static jack_port_request_monitor_by_name_fun_def jack_port_request_monitor_by_name_fun = 0;
  260. EXPORT int jack_port_request_monitor_by_name(jack_client_t* ext_client, const char* port_name, int onoff)
  261. {
  262. return jack_port_request_monitor_by_name_fun(ext_client, port_name, onoff);
  263. }
  264. typedef int (*jack_port_ensure_monitor_fun_def)(jack_port_t* port, int onoff);
  265. static jack_port_ensure_monitor_fun_def jack_port_ensure_monitor_fun = 0;
  266. EXPORT int jack_port_ensure_monitor(jack_port_t* port, int onoff)
  267. {
  268. return jack_port_ensure_monitor_fun(port, onoff);
  269. }
  270. typedef int (*jack_port_monitoring_input_fun_def)(jack_port_t* port);
  271. static jack_port_monitoring_input_fun_def jack_port_monitoring_input_fun = 0;
  272. EXPORT int jack_port_monitoring_input(jack_port_t* port)
  273. {
  274. return jack_port_monitoring_input_fun(port);
  275. }
  276. typedef int (*jack_is_realtime_fun_def)(jack_client_t* ext_client);
  277. static jack_is_realtime_fun_def jack_is_realtime_fun = 0;
  278. EXPORT int jack_is_realtime(jack_client_t* ext_client)
  279. {
  280. return jack_is_realtime_fun(ext_client);
  281. }
  282. typedef void (*shutdown_fun)(void* arg);
  283. typedef void (*jack_on_shutdown_fun_def)(jack_client_t* ext_client, shutdown_fun callback, void* arg);
  284. static jack_on_shutdown_fun_def jack_on_shutdown_fun = 0;
  285. EXPORT void jack_on_shutdown(jack_client_t* ext_client, shutdown_fun callback, void* arg)
  286. {
  287. return jack_on_shutdown_fun(ext_client, callback, arg);
  288. }
  289. typedef int (*jack_set_process_callback_fun_def)(jack_client_t* ext_client, JackProcessCallback callback, void* arg);
  290. static jack_set_process_callback_fun_def jack_set_process_callback_fun = 0;
  291. EXPORT int jack_set_process_callback(jack_client_t* ext_client, JackProcessCallback callback, void* arg)
  292. {
  293. return jack_set_process_callback_fun(ext_client, callback, arg);
  294. }
  295. typedef int (*jack_set_freewheel_callback_fun_def)(jack_client_t* ext_client, JackFreewheelCallback freewheel_callback, void* arg);
  296. static jack_set_freewheel_callback_fun_def jack_set_freewheel_callback_fun = 0;
  297. EXPORT int jack_set_freewheel_callback(jack_client_t* ext_client, JackFreewheelCallback freewheel_callback, void* arg)
  298. {
  299. return jack_set_freewheel_callback_fun(ext_client, freewheel_callback, arg);
  300. }
  301. typedef int (*jack_set_freewheel_fun_def)(jack_client_t* ext_client, int onoff);
  302. static jack_set_freewheel_fun_def jack_set_freewheel_fun = 0;
  303. EXPORT int jack_set_freewheel(jack_client_t* ext_client, int onoff)
  304. {
  305. return jack_set_freewheel_fun(ext_client, onoff);
  306. }
  307. typedef int (*jack_set_buffer_size_fun_def)(jack_client_t* ext_client, jack_nframes_t buffer_size);
  308. static jack_set_buffer_size_fun_def jack_set_buffer_size_fun = 0;
  309. EXPORT int jack_set_buffer_size(jack_client_t* ext_client, jack_nframes_t buffer_size)
  310. {
  311. return jack_set_buffer_size_fun(ext_client, buffer_size);
  312. }
  313. typedef int (*jack_set_buffer_size_callback_fun_def)(jack_client_t* ext_client, JackBufferSizeCallback bufsize_callback, void* arg);
  314. static jack_set_buffer_size_callback_fun_def jack_set_buffer_size_callback_fun = 0;
  315. EXPORT int jack_set_buffer_size_callback(jack_client_t* ext_client, JackBufferSizeCallback bufsize_callback, void* arg)
  316. {
  317. return jack_set_buffer_size_callback_fun(ext_client, bufsize_callback, arg);
  318. }
  319. typedef int (*jack_set_sample_rate_callback_fun_def)(jack_client_t* ext_client, JackSampleRateCallback srate_callback, void* arg);
  320. static jack_set_sample_rate_callback_fun_def jack_set_sample_rate_callback_fun = 0;
  321. EXPORT int jack_set_sample_rate_callback(jack_client_t* ext_client, JackSampleRateCallback srate_callback, void* arg)
  322. {
  323. return jack_set_sample_rate_callback_fun(ext_client, srate_callback, arg);
  324. }
  325. typedef int (*jack_set_port_registration_callback_fun_def)(jack_client_t* ext_client, JackPortRegistrationCallback registration_callback, void* arg);
  326. static jack_set_port_registration_callback_fun_def jack_set_port_registration_callback_fun = 0;
  327. EXPORT int jack_set_port_registration_callback(jack_client_t* ext_client, JackPortRegistrationCallback registration_callback, void* arg)
  328. {
  329. return jack_set_port_registration_callback_fun(ext_client, registration_callback, arg);
  330. }
  331. typedef int (*jack_set_graph_order_callback_fun_def)(jack_client_t* ext_client, JackGraphOrderCallback graph_callback, void* arg);
  332. static jack_set_graph_order_callback_fun_def jack_set_graph_order_callback_fun = 0;
  333. EXPORT int jack_set_graph_order_callback(jack_client_t* ext_client, JackGraphOrderCallback graph_callback, void* arg)
  334. {
  335. return jack_set_graph_order_callback_fun(ext_client, graph_callback, arg);
  336. }
  337. typedef int (*jack_set_xrun_callback_fun_def)(jack_client_t* ext_client, JackXRunCallback xrun_callback, void* arg);
  338. static jack_set_xrun_callback_fun_def jack_set_xrun_callback_fun = 0;
  339. EXPORT int jack_set_xrun_callback(jack_client_t* ext_client, JackXRunCallback xrun_callback, void* arg)
  340. {
  341. return jack_set_xrun_callback_fun(ext_client, xrun_callback, arg);
  342. }
  343. typedef int (*jack_set_thread_init_callback_fun_def)(jack_client_t* ext_client, JackThreadInitCallback init_callback, void *arg);
  344. static jack_set_thread_init_callback_fun_def jack_set_thread_init_callback_fun = 0;
  345. EXPORT int jack_set_thread_init_callback(jack_client_t* ext_client, JackThreadInitCallback init_callback, void *arg)
  346. {
  347. return jack_set_thread_init_callback_fun(ext_client, init_callback, arg);
  348. }
  349. typedef int (*jack_activate_fun_def)(jack_client_t* ext_client);
  350. static jack_activate_fun_def jack_activate_fun = 0;
  351. EXPORT int jack_activate(jack_client_t* ext_client)
  352. {
  353. return jack_activate_fun(ext_client);
  354. }
  355. typedef int (*jack_deactivate_fun_def)(jack_client_t* ext_client);
  356. static jack_deactivate_fun_def jack_deactivate_fun = 0;
  357. EXPORT int jack_deactivate(jack_client_t* ext_client)
  358. {
  359. return jack_deactivate_fun(ext_client);
  360. }
  361. typedef jack_port_t* (*jack_port_register_fun_def)(jack_client_t* ext_client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size);
  362. static jack_port_register_fun_def jack_port_register_fun = 0;
  363. EXPORT jack_port_t* jack_port_register(jack_client_t* ext_client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size)
  364. {
  365. return jack_port_register_fun(ext_client, port_name, port_type, flags, buffer_size);
  366. }
  367. typedef int (*jack_port_unregister_fun_def)(jack_client_t* ext_client, jack_port_t* port);
  368. static jack_port_unregister_fun_def jack_port_unregister_fun = 0;
  369. EXPORT int jack_port_unregister(jack_client_t* ext_client, jack_port_t* port)
  370. {
  371. return jack_port_unregister_fun(ext_client, port);
  372. }
  373. typedef int (*jack_port_is_mine_fun_def)(const jack_client_t* ext_client, const jack_port_t* port);
  374. static jack_port_is_mine_fun_def jack_port_is_mine_fun = 0;
  375. EXPORT int jack_port_is_mine(const jack_client_t* ext_client, const jack_port_t* port)
  376. {
  377. return jack_port_is_mine_fun(ext_client, port);
  378. }
  379. typedef const char** (*jack_port_get_connections_fun_def)(const jack_port_t* port);
  380. static jack_port_get_connections_fun_def jack_port_get_connections_fun = 0;
  381. EXPORT const char** jack_port_get_connections(const jack_port_t* port)
  382. {
  383. return jack_port_get_connections_fun(port);
  384. }
  385. // Calling client does not need to "own" the port
  386. typedef const char** (*jack_port_get_all_connections_fun_def)(const jack_client_t* ext_client, const jack_port_t* port);
  387. static jack_port_get_all_connections_fun_def jack_port_get_all_connections_fun = 0;
  388. EXPORT const char** jack_port_get_all_connections(const jack_client_t* ext_client, const jack_port_t* port)
  389. {
  390. return jack_port_get_all_connections_fun(ext_client, port);
  391. }
  392. // Does not use the client parameter
  393. typedef int (*jack_port_lock_fun_def)(jack_client_t* ext_client, jack_port_t* port);
  394. static jack_port_lock_fun_def jack_port_lock_fun = 0;
  395. EXPORT int jack_port_lock(jack_client_t* ext_client, jack_port_t* port)
  396. {
  397. return jack_port_lock_fun(ext_client, port);
  398. }
  399. // Does not use the client parameter
  400. typedef int (*jack_port_unlock_fun_def)(jack_client_t* ext_client, jack_port_t* port);
  401. static jack_port_unlock_fun_def jack_port_unlock_fun = 0;
  402. EXPORT int jack_port_ununlock(jack_client_t* ext_client, jack_port_t* port)
  403. {
  404. return jack_port_unlock_fun(ext_client, port);
  405. }
  406. typedef jack_nframes_t (*jack_port_get_total_latency_fun_def)(jack_client_t* ext_client, jack_port_t* port);
  407. static jack_port_get_total_latency_fun_def jack_port_get_total_latency_fun = 0;
  408. EXPORT jack_nframes_t jack_port_get_total_latency(jack_client_t* ext_client, jack_port_t* port)
  409. {
  410. return jack_port_get_total_latency_fun(ext_client, port);
  411. }
  412. typedef int (*jack_connect_fun_def)(jack_client_t* ext_client, const char* src, const char* dst);
  413. static jack_connect_fun_def jack_connect_fun = 0;
  414. EXPORT int jack_connect(jack_client_t* ext_client, const char* src, const char* dst)
  415. {
  416. return jack_connect_fun(ext_client, src, dst);
  417. }
  418. typedef int (*jack_disconnect_fun_def)(jack_client_t* ext_client, const char* src, const char* dst);
  419. static jack_disconnect_fun_def jack_disconnect_fun = 0;
  420. EXPORT int jack_disconnect(jack_client_t* ext_client, const char* src, const char* dst)
  421. {
  422. return jack_disconnect_fun(ext_client, src, dst);
  423. }
  424. typedef int (*jack_port_connect_fun_def)(jack_client_t* ext_client, jack_port_t* src, jack_port_t* dst);
  425. static jack_port_connect_fun_def jack_port_connect_fun = 0;
  426. EXPORT int jack_port_connect(jack_client_t* ext_client, jack_port_t* src, jack_port_t* dst)
  427. {
  428. return jack_port_connect_fun(ext_client, src, dst);
  429. }
  430. typedef int (*jack_port_disconnect_fun_def)(jack_client_t* ext_client, jack_port_t* src);
  431. static jack_port_disconnect_fun_def jack_port_disconnect_fun = 0;
  432. EXPORT int jack_port_disconnect(jack_client_t* ext_client, jack_port_t* src)
  433. {
  434. return jack_port_disconnect_fun(ext_client, src);
  435. }
  436. typedef jack_nframes_t (*jack_get_sample_rate_fun_def)(jack_client_t* ext_client);
  437. static jack_get_sample_rate_fun_def jack_get_sample_rate_fun = 0;
  438. EXPORT jack_nframes_t jack_get_sample_rate(jack_client_t* ext_client)
  439. {
  440. return jack_get_sample_rate_fun(ext_client);
  441. }
  442. typedef jack_nframes_t (*jack_get_buffer_size_fun_def)(jack_client_t* ext_client);
  443. static jack_get_buffer_size_fun_def jack_get_buffer_size_fun = 0;
  444. EXPORT jack_nframes_t jack_get_buffer_size(jack_client_t* ext_client)
  445. {
  446. return jack_get_buffer_size_fun(ext_client);
  447. }
  448. typedef const char** (*jack_get_ports_fun_def)(jack_client_t* ext_client, const char* port_name_pattern, const char* type_name_pattern, unsigned long flags);
  449. static jack_get_ports_fun_def jack_get_ports_fun = 0;
  450. EXPORT const char** jack_get_ports(jack_client_t* ext_client, const char* port_name_pattern, const char* type_name_pattern, unsigned long flags)
  451. {
  452. return jack_get_ports_fun(ext_client, port_name_pattern, type_name_pattern, flags);
  453. }
  454. typedef jack_port_t* (*jack_port_by_name_fun_def)(jack_client_t* ext_client, const char* portname);
  455. static jack_port_by_name_fun_def jack_port_by_name_fun = 0;
  456. EXPORT jack_port_t* jack_port_by_name(jack_client_t* ext_client, const char* portname)
  457. {
  458. return jack_port_by_name(ext_client, portname);
  459. }
  460. typedef jack_port_t* (*jack_port_by_id_fun_def)(const jack_client_t* ext_client, jack_port_id_t id);
  461. static jack_port_by_id_fun_def jack_port_by_id_fun = 0;
  462. EXPORT jack_port_t* jack_port_by_id(const jack_client_t* ext_client, jack_port_id_t id)
  463. {
  464. return jack_port_by_id_fun(ext_client, id);
  465. }
  466. typedef int (*jack_engine_takeover_timebase_fun_def)(jack_client_t* ext_client);
  467. static jack_engine_takeover_timebase_fun_def jack_engine_takeover_timebase_fun = 0;
  468. EXPORT int jack_engine_takeover_timebase(jack_client_t* ext_client)
  469. {
  470. return jack_engine_takeover_timebase_fun(ext_client);
  471. }
  472. typedef jack_nframes_t (*jack_frames_since_cycle_start_fun_def)(const jack_client_t* ext_client);
  473. static jack_frames_since_cycle_start_fun_def jack_frames_since_cycle_start_fun = 0;
  474. EXPORT jack_nframes_t jack_frames_since_cycle_start(const jack_client_t* ext_client)
  475. {
  476. return jack_frames_since_cycle_start_fun(ext_client);
  477. }
  478. typedef jack_nframes_t (*jack_frame_time_fun_def)(const jack_client_t* ext_client);
  479. static jack_frame_time_fun_def jack_frame_time_fun = 0;
  480. EXPORT jack_nframes_t jack_frame_time(const jack_client_t* ext_client)
  481. {
  482. return jack_frame_time_fun(ext_client);
  483. }
  484. typedef jack_nframes_t (*jack_last_frame_time_fun_def)(const jack_client_t* ext_client);
  485. static jack_last_frame_time_fun_def jack_last_frame_time_fun = 0;
  486. EXPORT jack_nframes_t jack_last_frame_time(const jack_client_t* ext_client)
  487. {
  488. return jack_last_frame_time_fun(ext_client);
  489. }
  490. typedef float (*jack_cpu_load_fun_def)(jack_client_t* ext_client);
  491. static jack_cpu_load_fun_def jack_cpu_load_fun = 0;
  492. EXPORT float jack_cpu_load(jack_client_t* ext_client)
  493. {
  494. return jack_cpu_load_fun(ext_client);
  495. }
  496. typedef pthread_t (*jack_client_thread_id_fun_def)(jack_client_t* ext_client);
  497. static jack_client_thread_id_fun_def jack_client_thread_id_fun = 0;
  498. EXPORT pthread_t jack_client_thread_id(jack_client_t* ext_client)
  499. {
  500. return jack_client_thread_id_fun(ext_client);
  501. }
  502. typedef char* (*jack_get_client_name_fun_def)(jack_client_t* ext_client);
  503. static jack_get_client_name_fun_def jack_get_client_name_fun = 0;
  504. EXPORT char* jack_get_client_name (jack_client_t* ext_client)
  505. {
  506. return jack_get_client_name_fun(ext_client);
  507. }
  508. typedef int (*jack_client_name_size_fun_def)(void);
  509. static jack_client_name_size_fun_def jack_client_name_size_fun = 0;
  510. EXPORT int jack_client_name_size(void)
  511. {
  512. return jack_client_name_size_fun();
  513. }
  514. typedef int (*jack_port_name_size_fun_def)(void);
  515. static jack_port_name_size_fun_def jack_port_name_size_fun = 0;
  516. EXPORT int jack_port_name_size(void)
  517. {
  518. return jack_port_name_size_fun();
  519. }
  520. // transport.h
  521. typedef int (*jack_release_timebase_fun_def)(jack_client_t* ext_client);
  522. static jack_release_timebase_fun_def jack_release_timebase_fun = 0;
  523. EXPORT int jack_release_timebase(jack_client_t* ext_client)
  524. {
  525. return jack_release_timebase_fun(ext_client);
  526. }
  527. typedef int (*jack_set_sync_callback_fun_def)(jack_client_t* ext_client, JackSyncCallback sync_callback, void *arg);
  528. static jack_set_sync_callback_fun_def jack_set_sync_callback_fun = 0;
  529. EXPORT int jack_set_sync_callback(jack_client_t* ext_client, JackSyncCallback sync_callback, void *arg)
  530. {
  531. return jack_set_sync_callback_fun(ext_client, sync_callback, arg);
  532. }
  533. typedef int (*jack_set_sync_timeout_fun_def)(jack_client_t* ext_client, jack_time_t timeout);
  534. static jack_set_sync_timeout_fun_def jack_set_sync_timeout_fun = 0;
  535. EXPORT int jack_set_sync_timeout(jack_client_t* ext_client, jack_time_t timeout)
  536. {
  537. return jack_set_sync_timeout_fun(ext_client, timeout);
  538. }
  539. typedef int (*jack_set_timebase_callback_fun_def)(jack_client_t* ext_client, int conditional, JackTimebaseCallback timebase_callback, void* arg);
  540. static jack_set_timebase_callback_fun_def jack_set_timebase_callback_fun = 0;
  541. EXPORT int jack_set_timebase_callback(jack_client_t* ext_client, int conditional, JackTimebaseCallback timebase_callback, void* arg)
  542. {
  543. return jack_set_timebase_callback_fun(ext_client, conditional, timebase_callback, arg);
  544. }
  545. typedef int (*jack_transport_locate_fun_def)(jack_client_t* ext_client, jack_nframes_t frame);
  546. static jack_transport_locate_fun_def jack_transport_locate_fun = 0;
  547. EXPORT int jack_transport_locate(jack_client_t* ext_client, jack_nframes_t frame)
  548. {
  549. return jack_transport_locate_fun(ext_client, frame);
  550. }
  551. typedef jack_transport_state_t (*jack_transport_query_fun_def)(const jack_client_t* ext_client, jack_position_t* pos);
  552. static jack_transport_query_fun_def jack_transport_query_fun = 0;
  553. EXPORT jack_transport_state_t jack_transport_query(const jack_client_t* ext_client, jack_position_t* pos)
  554. {
  555. return jack_transport_query_fun(ext_client, pos);
  556. }
  557. typedef jack_nframes_t (*jack_get_current_transport_frame_fun_def)(const jack_client_t* ext_client);
  558. static jack_get_current_transport_frame_fun_def jack_get_current_transport_frame_fun = 0;
  559. EXPORT jack_nframes_t jack_get_current_transport_frame(const jack_client_t* ext_client)
  560. {
  561. return jack_get_current_transport_frame_fun(ext_client);
  562. }
  563. typedef int (*jack_transport_reposition_fun_def)(jack_client_t* ext_client, jack_position_t* pos);
  564. static jack_transport_reposition_fun_def jack_transport_reposition_fun = 0;
  565. EXPORT int jack_transport_reposition(jack_client_t* ext_client, jack_position_t* pos)
  566. {
  567. return jack_transport_reposition_fun(ext_client, pos);
  568. }
  569. typedef void (*jack_transport_start_fun_def)(jack_client_t* ext_client);
  570. static jack_transport_start_fun_def jack_transport_start_fun = 0;
  571. EXPORT void jack_transport_start(jack_client_t* ext_client)
  572. {
  573. return jack_transport_start_fun(ext_client);
  574. }
  575. typedef void (*jack_transport_stop_fun_def)(jack_client_t* ext_client);
  576. static jack_transport_stop_fun_def jack_transport_stop_fun = 0;
  577. EXPORT void jack_transport_stop(jack_client_t* ext_client)
  578. {
  579. return jack_transport_stop_fun(ext_client);
  580. }
  581. // deprecated
  582. typedef void (*jack_get_transport_info_fun_def)(jack_client_t* ext_client, jack_transport_info_t* tinfo);
  583. static jack_get_transport_info_fun_def jack_get_transport_info_fun = 0;
  584. EXPORT void jack_get_transport_info(jack_client_t* ext_client, jack_transport_info_t* tinfo)
  585. {
  586. jack_get_transport_info_fun(ext_client, tinfo);
  587. }
  588. typedef void (*jack_set_transport_info_fun_def)(jack_client_t* ext_client, jack_transport_info_t* tinfo);
  589. static jack_set_transport_info_fun_def jack_set_transport_info_fun = 0;
  590. EXPORT void jack_set_transport_info(jack_client_t* ext_client, jack_transport_info_t* tinfo)
  591. {
  592. jack_set_transport_info_fun(ext_client, tinfo);
  593. }
  594. // statistics.h
  595. typedef float (*jack_get_max_delayed_usecs_fun_def)(jack_client_t* ext_client);
  596. static jack_get_max_delayed_usecs_fun_def jack_get_max_delayed_usecs_fun = 0;
  597. EXPORT float jack_get_max_delayed_usecs(jack_client_t* ext_client)
  598. {
  599. return jack_get_max_delayed_usecs_fun(ext_client);
  600. }
  601. typedef float (*jack_get_xrun_delayed_usecs_fun_def)(jack_client_t* ext_client);
  602. static jack_get_xrun_delayed_usecs_fun_def jack_get_xrun_delayed_usecs_fun = 0;
  603. EXPORT float jack_get_xrun_delayed_usecs(jack_client_t* ext_client)
  604. {
  605. return jack_get_xrun_delayed_usecs_fun(ext_client);
  606. }
  607. typedef void (*jack_reset_max_delayed_usecs_fun_def)(jack_client_t* ext_client);
  608. static jack_reset_max_delayed_usecs_fun_def jack_reset_max_delayed_usecs_fun = 0;
  609. EXPORT void jack_reset_max_delayed_usecs(jack_client_t* ext_client)
  610. {
  611. jack_reset_max_delayed_usecs(ext_client);
  612. }
  613. // thread.h
  614. typedef int (*jack_acquire_real_time_scheduling_fun_def)(pthread_t thread, int priority);
  615. static jack_acquire_real_time_scheduling_fun_def jack_acquire_real_time_scheduling_fun = 0;
  616. EXPORT int jack_acquire_real_time_scheduling(pthread_t thread, int priority)
  617. {
  618. return jack_acquire_real_time_scheduling_fun(thread, priority);
  619. }
  620. typedef void *(*start_routine)(void*);
  621. typedef int (*jack_client_create_thread_fun_def)(jack_client_t* client,
  622. pthread_t *thread,
  623. int priority,
  624. int realtime, // boolean
  625. start_routine callback,
  626. void *arg);
  627. static jack_client_create_thread_fun_def jack_client_create_thread_fun = 0;
  628. EXPORT int jack_client_create_thread(jack_client_t* client,
  629. pthread_t *thread,
  630. int priority,
  631. int realtime, // boolean
  632. start_routine callback,
  633. void *arg)
  634. {
  635. return jack_client_create_thread_fun(client, thread, priority, realtime, callback, arg);
  636. }
  637. typedef int (*jack_drop_real_time_scheduling_fun_def)(pthread_t thread);
  638. static jack_drop_real_time_scheduling_fun_def jack_drop_real_time_scheduling_fun = 0;
  639. EXPORT int jack_drop_real_time_scheduling(pthread_t thread)
  640. {
  641. return jack_drop_real_time_scheduling_fun(thread);
  642. }
  643. // intclient.h
  644. typedef char* (*jack_get_internal_client_name_fun_def)(jack_client_t* ext_client, jack_intclient_t intclient);
  645. static jack_get_internal_client_name_fun_def jack_get_internal_client_name_fun = 0;
  646. EXPORT char* jack_get_internal_client_name(jack_client_t* ext_client, jack_intclient_t intclient)
  647. {
  648. return jack_get_internal_client_name_fun(ext_client, intclient);
  649. }
  650. typedef jack_intclient_t (*jack_internal_client_handle_fun_def)(jack_client_t* ext_client, const char* client_name, jack_status_t* status);
  651. static jack_internal_client_handle_fun_def jack_internal_client_handle_fun = 0;
  652. EXPORT jack_intclient_t jack_internal_client_handle(jack_client_t* ext_client, const char* client_name, jack_status_t* status)
  653. {
  654. return jack_internal_client_handle_fun(ext_client, client_name, status);
  655. }
  656. // to check
  657. typedef jack_intclient_t (*jack_internal_client_load_fun_def)(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, ...);
  658. static jack_internal_client_load_fun_def jack_internal_client_load_fun = 0;
  659. EXPORT jack_intclient_t jack_internal_client_load(jack_client_t* ext_client, const char* client_name, jack_options_t options, jack_status_t* status, ...)
  660. {
  661. va_list ap;
  662. va_start(ap, status);
  663. jack_intclient_t res = jack_internal_client_load_fun(ext_client, client_name, options, status, ap);
  664. va_end(ap);
  665. return res;
  666. }
  667. typedef jack_status_t (*jack_internal_client_unload_fun_def)(jack_client_t* ext_client, jack_intclient_t intclient);
  668. static jack_internal_client_unload_fun_def jack_internal_client_unload_fun = 0;
  669. EXPORT jack_status_t jack_internal_client_unload(jack_client_t* ext_client, jack_intclient_t intclient)
  670. {
  671. return jack_internal_client_unload_fun(ext_client, intclient);
  672. }
  673. // client
  674. typedef jack_client_t * (*jack_client_open_fun_def)(const char *client_name, jack_options_t options, jack_status_t *status, ...);
  675. static jack_client_open_fun_def jack_client_open_fun = 0;
  676. EXPORT jack_client_t * jack_client_open(const char *client_name, jack_options_t options, jack_status_t *status, ...)
  677. {
  678. va_list ap;
  679. va_start(ap, status);
  680. jack_client_t* res = jack_client_open_fun(client_name, options, status, ap);
  681. va_end(ap);
  682. return res;
  683. }
  684. typedef jack_client_t * (*jack_client_new_fun_def)(const char *client_name);
  685. static jack_client_new_fun_def jack_client_new_fun = 0;
  686. EXPORT jack_client_t * jack_client_new(const char *client_name)
  687. {
  688. return jack_client_new_fun(client_name);
  689. }
  690. typedef int (*jack_client_close_fun_def)(jack_client_t *client);
  691. static jack_client_close_fun_def jack_client_close_fun = 0;
  692. EXPORT int jack_client_close(jack_client_t *client)
  693. {
  694. return jack_client_close_fun(client);
  695. }
  696. // Library loader
  697. bool init_library(bool mp)
  698. {
  699. void* library = (mp) ? dlopen("libjackmp.so", RTLD_LAZY) : dlopen("libjack.so", RTLD_LAZY);
  700. if (!library) {
  701. printf ("Jack ibrary not found\n");
  702. return false;
  703. }
  704. jack_port_get_buffer_fun = (jack_port_get_buffer_fun_def)dlsym(library, "jack_port_get_buffer");
  705. jack_port_name_fun = (jack_port_name_fun_def)dlsym(library, "jack_port_name");
  706. jack_port_short_name_fun = (jack_port_short_name_fun_def)dlsym(library, "jack_port_short_name");
  707. jack_port_flags_fun = (jack_port_flags_fun_def)dlsym(library, "jack_port_flags");
  708. jack_port_type_fun = (jack_port_type_fun_def)dlsym(library, "jack_port_type");
  709. jack_port_connected_fun = (jack_port_connected_fun_def)dlsym(library, "jack_port_connected");
  710. jack_port_connected_to_fun = (jack_port_connected_to_fun_def)dlsym(library, "jack_port_connected_to");
  711. jack_port_tie_fun = (jack_port_tie_fun_def)dlsym(library, "jack_port_tie");
  712. jack_port_untie_fun = (jack_port_untie_fun_def)dlsym(library, "jack_port_untie");
  713. jack_port_get_latency_fun = (jack_port_get_latency_fun_def)dlsym(library, "jack_port_get_latency");
  714. jack_port_set_latency_fun = (jack_port_set_latency_fun_def)dlsym(library, "jack_port_set_latency");
  715. jack_recompute_total_latencies_fun = (jack_recompute_total_latencies_fun_def)dlsym(library, "jack_recompute_total_latencies");
  716. jack_port_set_name_fun = (jack_port_set_name_fun_def)dlsym(library, "jack_port_set_name");
  717. jack_port_request_monitor_fun = (jack_port_request_monitor_fun_def)dlsym(library, "jack_port_request_monitor");
  718. jack_port_request_monitor_by_name_fun = (jack_port_request_monitor_by_name_fun_def)dlsym(library, "jack_port_request_monitor_by_name");
  719. jack_port_ensure_monitor_fun = (jack_port_ensure_monitor_fun_def)dlsym(library, "jack_port_ensure_monitor");
  720. jack_port_monitoring_input_fun = (jack_port_monitoring_input_fun_def)dlsym(library, "jack_port_monitoring_input_fun");
  721. jack_is_realtime_fun = (jack_is_realtime_fun_def)dlsym(library, "jack_is_realtime");
  722. jack_on_shutdown_fun = (jack_on_shutdown_fun_def)dlsym(library, "jack_on_shutdown");
  723. jack_set_process_callback_fun = (jack_set_process_callback_fun_def)dlsym(library, "jack_set_process_callback");
  724. jack_set_freewheel_fun = (jack_set_freewheel_fun_def)dlsym(library, "jack_set_freewheel");
  725. jack_set_buffer_size_fun = (jack_set_buffer_size_fun_def)dlsym(library, "jack_set_buffer_size");
  726. jack_set_buffer_size_callback_fun = (jack_set_buffer_size_callback_fun_def)dlsym(library, "jack_set_buffer_size_callback");
  727. jack_set_sample_rate_callback_fun = (jack_set_sample_rate_callback_fun_def)dlsym(library, "jack_set_sample_rate_callback");
  728. jack_set_port_registration_callback_fun = (jack_set_port_registration_callback_fun_def)dlsym(library, "jack_set_port_registration_callback");
  729. jack_set_graph_order_callback_fun = (jack_set_graph_order_callback_fun_def)dlsym(library, "jack_set_graph_order_callback");
  730. jack_set_xrun_callback_fun = (jack_set_xrun_callback_fun_def)dlsym(library, "jack_set_xrun_callback");
  731. jack_set_thread_init_callback_fun = (jack_set_thread_init_callback_fun_def)dlsym(library, "jack_set_thread_init_callback");
  732. jack_activate_fun = (jack_activate_fun_def)dlsym(library, "jack_activate");
  733. jack_deactivate_fun = (jack_deactivate_fun_def)dlsym(library, "jack_deactivate");
  734. jack_port_register_fun = (jack_port_register_fun_def)dlsym(library, "jack_port_register");
  735. jack_port_unregister_fun = (jack_port_unregister_fun_def)dlsym(library, "jack_port_unregister");
  736. jack_port_is_mine_fun = (jack_port_is_mine_fun_def)dlsym(library, "jack_port_is_mine");
  737. jack_port_get_connections_fun = (jack_port_get_connections_fun_def)dlsym(library, "jack_port_get_connections");
  738. jack_port_get_all_connections_fun = (jack_port_get_all_connections_fun_def)dlsym(library, "jack_port_get_all_connections_fun");
  739. jack_port_lock_fun = (jack_port_lock_fun_def)dlsym(library, "jack_port_lock");
  740. jack_port_unlock_fun = (jack_port_unlock_fun_def)dlsym(library, "jack_port_unlock");
  741. jack_port_get_total_latency_fun = (jack_port_get_total_latency_fun_def)dlsym(library, "jack_port_get_total_latency");
  742. jack_connect_fun = (jack_connect_fun_def)dlsym(library, "jack_connect");
  743. jack_disconnect_fun = (jack_disconnect_fun_def)dlsym(library, "jack_disconnect");
  744. jack_port_connect_fun = (jack_port_connect_fun_def)dlsym(library, "jack_port_connect");
  745. jack_port_disconnect_fun = (jack_port_disconnect_fun_def)dlsym(library, "jack_port_disconnect");
  746. jack_get_sample_rate_fun = (jack_get_sample_rate_fun_def)dlsym(library, "jack_get_sample_rate");
  747. jack_get_buffer_size_fun = (jack_get_buffer_size_fun_def)dlsym(library, "jack_get_buffer_size");
  748. jack_get_ports_fun = (jack_get_ports_fun_def)dlsym(library, "jack_get_ports");
  749. jack_port_by_name_fun = (jack_port_by_name_fun_def)dlsym(library, "jack_port_by_name");
  750. jack_port_by_id_fun = (jack_port_by_id_fun_def)dlsym(library, "jack_port_by_id");
  751. jack_engine_takeover_timebase_fun = (jack_engine_takeover_timebase_fun_def)dlsym(library, "jack_engine_takeover_timebase");
  752. jack_frames_since_cycle_start_fun = (jack_frames_since_cycle_start_fun_def)dlsym(library, "jack_frames_since_cycle_start");
  753. jack_frame_time_fun = (jack_frame_time_fun_def)dlsym(library, "jack_frame_time_fun");
  754. jack_last_frame_time_fun = (jack_last_frame_time_fun_def)dlsym(library, "jack_last_frame_time");
  755. jack_cpu_load_fun = (jack_cpu_load_fun_def)dlsym(library, "jack_cpu_load");
  756. jack_client_thread_id_fun = (jack_client_thread_id_fun_def)dlsym(library, "jack_client_thread_id");
  757. jack_get_client_name_fun = (jack_get_client_name_fun_def)dlsym(library, "jack_get_client_name");
  758. jack_port_name_size_fun = (jack_port_name_size_fun_def)dlsym(library, "jack_port_name_size");
  759. jack_client_name_size_fun = (jack_client_name_size_fun_def)dlsym(library, "jack_client_name_size");
  760. jack_release_timebase_fun = (jack_release_timebase_fun_def)dlsym(library, "jack_release_timebase");
  761. jack_set_sync_callback_fun = (jack_set_sync_callback_fun_def)dlsym(library, "jack_set_sync_callback");
  762. jack_set_sync_timeout_fun = (jack_set_sync_timeout_fun_def)dlsym(library, "jack_set_sync_timeout");
  763. jack_set_timebase_callback_fun = (jack_set_timebase_callback_fun_def)dlsym(library, "jack_set_timebase_callback");
  764. jack_transport_locate_fun = (jack_transport_locate_fun_def)dlsym(library, "jack_transport_locate_fun");
  765. jack_transport_query_fun = (jack_transport_query_fun_def)dlsym(library, "jack_transport_query");
  766. jack_get_current_transport_frame_fun = (jack_get_current_transport_frame_fun_def)dlsym(library, "jack_get_current_transport_frame");
  767. jack_transport_reposition_fun = (jack_transport_reposition_fun_def)dlsym(library, "jack_transport_reposition");
  768. jack_transport_start_fun = (jack_transport_start_fun_def)dlsym(library, "jack_transport_start");
  769. jack_transport_stop_fun = (jack_transport_stop_fun_def)dlsym(library, "jack_transport_stop");
  770. jack_get_transport_info_fun = (jack_get_transport_info_fun_def)dlsym(library, "jack_get_transport_info");
  771. jack_set_transport_info_fun = (jack_set_transport_info_fun_def)dlsym(library, "jack_set_transport_info");
  772. jack_get_max_delayed_usecs_fun = (jack_get_max_delayed_usecs_fun_def)dlsym(library, "jack_get_max_delayed_usecs");
  773. jack_get_xrun_delayed_usecs_fun = (jack_get_xrun_delayed_usecs_fun_def)dlsym(library, "jack_get_xrun_delayed_usecs");
  774. jack_reset_max_delayed_usecs_fun = (jack_reset_max_delayed_usecs_fun_def)dlsym(library, "jack_reset_max_delayed_usecs");
  775. jack_acquire_real_time_scheduling_fun = (jack_acquire_real_time_scheduling_fun_def)dlsym(library, "jack_acquire_real_time_scheduling");
  776. jack_client_create_thread_fun = (jack_client_create_thread_fun_def)dlsym(library, "jack_client_create_thread");
  777. jack_drop_real_time_scheduling_fun = (jack_drop_real_time_scheduling_fun_def)dlsym(library, "jack_drop_real_time_scheduling");
  778. jack_get_internal_client_name_fun = (jack_get_internal_client_name_fun_def)dlsym(library, "jack_get_internal_client_name");
  779. jack_internal_client_handle_fun = (jack_internal_client_handle_fun_def)dlsym(library, "jack_internal_client_handle");
  780. jack_internal_client_load_fun = (jack_internal_client_load_fun_def)dlsym(library, "jack_internal_client_load");
  781. jack_internal_client_unload_fun = (jack_internal_client_unload_fun_def)dlsym(library, "jack_internal_client_unload");
  782. jack_client_open_fun = (jack_client_open_fun_def)dlsym(library, "jack_client_open");
  783. jack_client_new_fun = (jack_client_new_fun_def)dlsym(library, "jack_client_new");
  784. jack_client_close_fun = (jack_client_close_fun_def)dlsym(library, "jack_client_close");
  785. return true;
  786. }