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.

171 lines
5.1KB

  1. /*
  2. * Carla JACK API for external applications
  3. * Copyright (C) 2016-2017 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 General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. // need to include this first
  18. #include "libjack.hpp"
  19. CARLA_BACKEND_USE_NAMESPACE
  20. // --------------------------------------------------------------------------------------------------------------------
  21. CARLA_EXPORT
  22. int jack_set_thread_init_callback(jack_client_t*, JackThreadInitCallback, void*)
  23. {
  24. return 0;
  25. }
  26. CARLA_EXPORT
  27. void jack_on_shutdown(jack_client_t* client, JackShutdownCallback callback, void* arg)
  28. {
  29. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  30. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  31. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr,);
  32. JackClientState& jstate(jclient->fState);
  33. CARLA_SAFE_ASSERT_RETURN(! jstate.activated,);
  34. jstate.shutdown = callback;
  35. jstate.shutdownPtr = arg;
  36. }
  37. // void jack_on_info_shutdown (jack_client_t *client,
  38. // JackInfoShutdownCallback shutdown_callback, void *arg) JACK_WEAK_EXPORT;
  39. CARLA_EXPORT
  40. int jack_set_process_callback(jack_client_t* client, JackProcessCallback callback, void* arg)
  41. {
  42. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  43. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  44. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  45. JackClientState& jstate(jclient->fState);
  46. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  47. jstate.process = callback;
  48. jstate.processPtr = arg;
  49. return 0;
  50. }
  51. // int jack_set_freewheel_callback (jack_client_t *client,
  52. // JackFreewheelCallback freewheel_callback,
  53. // void *arg) JACK_OPTIONAL_WEAK_EXPORT;
  54. CARLA_EXPORT
  55. int jack_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback /*callback*/, void* /*arg*/)
  56. {
  57. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  58. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  59. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  60. const JackClientState& jstate(jclient->fState);
  61. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  62. // TODO
  63. return 0;
  64. }
  65. CARLA_EXPORT
  66. int jack_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback /*callback*/, void* /*arg*/)
  67. {
  68. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  69. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  70. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  71. const JackClientState& jstate(jclient->fState);
  72. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  73. // TODO
  74. return 0;
  75. }
  76. CARLA_EXPORT
  77. int jack_set_client_registration_callback(jack_client_t* client, JackClientRegistrationCallback, void*)
  78. {
  79. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  80. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  81. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  82. const JackClientState& jstate(jclient->fState);
  83. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  84. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  85. return 0;
  86. }
  87. CARLA_EXPORT
  88. int jack_set_port_registration_callback(jack_client_t* client, JackPortRegistrationCallback, void*)
  89. {
  90. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  91. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  92. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  93. const JackClientState& jstate(jclient->fState);
  94. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  95. return 0;
  96. }
  97. CARLA_EXPORT
  98. int jack_set_port_connect_callback(jack_client_t* client, JackPortConnectCallback, void*)
  99. {
  100. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  101. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  102. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  103. const JackClientState& jstate(jclient->fState);
  104. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  105. return 0;
  106. }
  107. // int jack_set_port_rename_callback (jack_client_t *client,
  108. // JackPortRenameCallback
  109. // rename_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
  110. CARLA_EXPORT
  111. int jack_set_graph_order_callback(jack_client_t* client, JackGraphOrderCallback, void*)
  112. {
  113. carla_stdout("CarlaJackClient :: %s", __FUNCTION__);
  114. CarlaJackClient* const jclient = (CarlaJackClient*)client;
  115. CARLA_SAFE_ASSERT_RETURN(jclient != nullptr, 1);
  116. const JackClientState& jstate(jclient->fState);
  117. CARLA_SAFE_ASSERT_RETURN(! jstate.activated, 1);
  118. return 0;
  119. }
  120. CARLA_EXPORT
  121. int jack_set_xrun_callback(jack_client_t*, JackXRunCallback, void*)
  122. {
  123. return 0;
  124. }
  125. // --------------------------------------------------------------------------------------------------------------------