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.

893 lines
44KB

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