Audio plugin host https://kx.studio/carla
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.

314 lines
6.9KB

  1. /*
  2. * JackBridge
  3. * Copyright (C) 2013 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU Lesser General Public
  7. * License as published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU Lesser General Public License for more details.
  13. *
  14. * For a full copy of the license see the LGPL.txt file
  15. */
  16. #include "jackbridge.h"
  17. #ifndef JACKBRIDGE_DUMMY
  18. # include <time.h>
  19. # include <semaphore.h>
  20. #endif
  21. // -----------------------------------------------------------------------------
  22. jack_client_t* jackbridge_client_open(const char* client_name, jack_options_t options, jack_status_t* status, ...)
  23. {
  24. #ifndef JACKBRIDGE_DUMMY
  25. return jack_client_open(client_name, options, status);
  26. #else
  27. return NULL;
  28. #endif
  29. }
  30. int jackbridge_client_close(jack_client_t* client)
  31. {
  32. #ifndef JACKBRIDGE_DUMMY
  33. return jack_client_close(client);
  34. #else
  35. return 0;
  36. #endif
  37. }
  38. int jackbridge_client_name_size()
  39. {
  40. #ifndef JACKBRIDGE_DUMMY
  41. return jack_client_name_size();
  42. #else
  43. return 0;
  44. #endif
  45. }
  46. char* jackbridge_get_client_name(jack_client_t* client)
  47. {
  48. #ifndef JACKBRIDGE_DUMMY
  49. return jack_get_client_name(client);
  50. #else
  51. return NULL;
  52. #endif
  53. }
  54. int jackbridge_port_name_size()
  55. {
  56. #ifndef JACKBRIDGE_DUMMY
  57. return jack_port_name_size();
  58. #else
  59. return 0;
  60. #endif
  61. }
  62. int jackbridge_recompute_total_latencies(jack_client_t* client)
  63. {
  64. #ifndef JACKBRIDGE_DUMMY
  65. return jack_recompute_total_latencies(client);
  66. #else
  67. return 0;
  68. #endif
  69. }
  70. void jackbridge_port_get_latency_range(jack_port_t* port, jack_latency_callback_mode_t mode, jack_latency_range_t* range)
  71. {
  72. #ifndef JACKBRIDGE_DUMMY
  73. jack_port_get_latency_range(port, mode, range);
  74. #endif
  75. }
  76. void jackbridge_port_set_latency_range(jack_port_t* port, jack_latency_callback_mode_t mode, jack_latency_range_t* range)
  77. {
  78. #ifndef JACKBRIDGE_DUMMY
  79. jack_port_set_latency_range(port, mode, range);
  80. #endif
  81. }
  82. int jackbridge_activate(jack_client_t* client)
  83. {
  84. #ifndef JACKBRIDGE_DUMMY
  85. return jack_activate(client);
  86. #else
  87. return 0;
  88. #endif
  89. }
  90. int jackbridge_deactivate(jack_client_t* client)
  91. {
  92. #ifndef JACKBRIDGE_DUMMY
  93. return jack_deactivate(client);
  94. #else
  95. return 0;
  96. #endif
  97. }
  98. void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg)
  99. {
  100. #ifndef JACKBRIDGE_DUMMY
  101. jack_on_shutdown(client, shutdown_callback, arg);
  102. #endif
  103. }
  104. int jackbridge_set_latency_callback(jack_client_t* client, JackLatencyCallback latency_callback, void* arg)
  105. {
  106. #ifndef JACKBRIDGE_DUMMY
  107. return jack_set_latency_callback(client, latency_callback, arg);
  108. #else
  109. return 0;
  110. #endif
  111. }
  112. int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg)
  113. {
  114. #ifndef JACKBRIDGE_DUMMY
  115. return jack_set_process_callback(client, process_callback, arg);
  116. #else
  117. return 0;
  118. #endif
  119. }
  120. int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg)
  121. {
  122. #ifndef JACKBRIDGE_DUMMY
  123. return jack_set_freewheel_callback(client, freewheel_callback, arg);
  124. #else
  125. return 0;
  126. #endif
  127. }
  128. int jackbridge_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg)
  129. {
  130. #ifndef JACKBRIDGE_DUMMY
  131. return jack_set_buffer_size_callback(client, bufsize_callback, arg);
  132. #else
  133. return 0;
  134. #endif
  135. }
  136. int jackbridge_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg)
  137. {
  138. #ifndef JACKBRIDGE_DUMMY
  139. return jack_set_sample_rate_callback(client, srate_callback, arg);
  140. #else
  141. return 0;
  142. #endif
  143. }
  144. jack_nframes_t jackbridge_get_sample_rate(jack_client_t* client)
  145. {
  146. #ifndef JACKBRIDGE_DUMMY
  147. return jack_get_sample_rate(client);
  148. #else
  149. return 0;
  150. #endif
  151. }
  152. jack_nframes_t jackbridge_get_buffer_size(jack_client_t* client)
  153. {
  154. #ifndef JACKBRIDGE_DUMMY
  155. return jack_get_buffer_size(client);
  156. #else
  157. return 0;
  158. #endif
  159. }
  160. jack_port_t* jackbridge_port_register(jack_client_t* client, const char* port_name, const char* port_type, unsigned long flags, unsigned long buffer_size)
  161. {
  162. #ifndef JACKBRIDGE_DUMMY
  163. return jack_port_register(client, port_name, port_type, flags, buffer_size);
  164. #else
  165. return NULL;
  166. #endif
  167. }
  168. int jackbridge_port_unregister(jack_client_t* client, jack_port_t* port)
  169. {
  170. #ifndef JACKBRIDGE_DUMMY
  171. return jack_port_unregister(client, port);
  172. #else
  173. return 0;
  174. #endif
  175. }
  176. void* jackbridge_port_get_buffer(jack_port_t* port, jack_nframes_t nframes)
  177. {
  178. #ifndef JACKBRIDGE_DUMMY
  179. return jack_port_get_buffer(port, nframes);
  180. #else
  181. return NULL;
  182. #endif
  183. }
  184. // -----------------------------------------------------------------------------
  185. uint32_t jackbridge_midi_get_event_count(void* port_buffer)
  186. {
  187. #ifndef JACKBRIDGE_DUMMY
  188. return jack_midi_get_event_count(port_buffer);
  189. #else
  190. return 0;
  191. #endif
  192. }
  193. int jackbridge_midi_event_get(jack_midi_event_t* event, void* port_buffer, uint32_t event_index)
  194. {
  195. #ifndef JACKBRIDGE_DUMMY
  196. return jack_midi_event_get(event, port_buffer, event_index);
  197. #else
  198. return 0;
  199. #endif
  200. }
  201. void jackbridge_midi_clear_buffer(void* port_buffer)
  202. {
  203. #ifndef JACKBRIDGE_DUMMY
  204. jack_midi_clear_buffer(port_buffer);
  205. #endif
  206. }
  207. jack_midi_data_t* jackbridge_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size)
  208. {
  209. #ifndef JACKBRIDGE_DUMMY
  210. return jack_midi_event_reserve(port_buffer, time, data_size);
  211. #else
  212. return NULL;
  213. #endif
  214. }
  215. int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t time, const jack_midi_data_t* data, size_t data_size)
  216. {
  217. #ifndef JACKBRIDGE_DUMMY
  218. return jack_midi_event_write(port_buffer, time, data, data_size);
  219. #else
  220. return 0;
  221. #endif
  222. }
  223. // -----------------------------------------------------------------------------
  224. int jackbridge_transport_locate(jack_client_t* client, jack_nframes_t frame)
  225. {
  226. #ifndef JACKBRIDGE_DUMMY
  227. return jack_transport_locate(client, frame);
  228. #else
  229. return 0;
  230. #endif
  231. }
  232. jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos)
  233. {
  234. #ifndef JACKBRIDGE_DUMMY
  235. return jack_transport_query(client, pos);
  236. #else
  237. return JackTransportStopped;
  238. #endif
  239. }
  240. void jackbridge_transport_start(jack_client_t* client)
  241. {
  242. #ifndef JACKBRIDGE_DUMMY
  243. jack_transport_start(client);
  244. #endif
  245. }
  246. void jackbridge_transport_stop(jack_client_t* client)
  247. {
  248. #ifndef JACKBRIDGE_DUMMY
  249. jack_transport_stop(client);
  250. #endif
  251. }
  252. // -----------------------------------------------------------------------------
  253. void linux_clock_gettime_rt(struct timespec* ts)
  254. {
  255. #ifndef JACKBRIDGE_DUMMY
  256. clock_gettime(CLOCK_REALTIME, ts);
  257. #endif
  258. }
  259. int linux_sem_post(void* sem)
  260. {
  261. #ifndef JACKBRIDGE_DUMMY
  262. return sem_post(sem);
  263. #else
  264. return 1;
  265. #endif
  266. }
  267. int linux_sem_timedwait(void* sem, struct timespec* ts)
  268. {
  269. #ifndef JACKBRIDGE_DUMMY
  270. return sem_timedwait(sem, ts);
  271. #else
  272. return 1;
  273. #endif
  274. }