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.

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