Jack2 1.9.10

jack.h

00001 /*
00002   Copyright (C) 2001 Paul Davis
00003   Copyright (C) 2004 Jack O'Quin
00004 
00005   This program is free software; you can redistribute it and/or modify
00006   it under the terms of the GNU Lesser General Public License as published by
00007   the Free Software Foundation; either version 2.1 of the License, or
00008   (at your option) any later version.
00009 
00010   This program is distributed in the hope that it will be useful,
00011   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013   GNU Lesser General Public License for more details.
00014 
00015   You should have received a copy of the GNU Lesser General Public License
00016   along with this program; if not, write to the Free Software
00017   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018 
00019 */
00020 
00021 #ifndef __jack_h__
00022 #define __jack_h__
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00029 #include <jack/systemdeps.h>
00030 #include <jack/types.h>
00031 #include <jack/transport.h>
00032 
00037     /*************************************************************
00038      * NOTE: JACK_WEAK_EXPORT ***MUST*** be used on every function
00039      * added to the JACK API after the 0.116.2 release.
00040      *
00041      * Functions that predate this release are marked with
00042      * JACK_WEAK_OPTIONAL_EXPORT which can be defined at compile
00043      * time in a variety of ways. The default definition is empty,
00044      * so that these symbols get normal linkage. If you wish to
00045      * use all JACK symbols with weak linkage, include
00046      * <jack/weakjack.h> before jack.h.
00047      *************************************************************/
00048 
00049 #include <jack/weakmacros.h>
00050 
00063 void
00064 jack_get_version(
00065     int *major_ptr,
00066     int *minor_ptr,
00067     int *micro_ptr,
00068     int *proto_ptr) JACK_OPTIONAL_WEAK_EXPORT;
00069 
00076 const char *
00077 jack_get_version_string() JACK_OPTIONAL_WEAK_EXPORT;
00078 
00117 jack_client_t * jack_client_open (const char *client_name,
00118                                   jack_options_t options,
00119                                   jack_status_t *status, ...) JACK_OPTIONAL_WEAK_EXPORT;
00120 
00127 jack_client_t * jack_client_new (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00128 
00134 int jack_client_close (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00135 
00140 int jack_client_name_size (void) JACK_OPTIONAL_WEAK_EXPORT;
00141 
00148 char * jack_get_client_name (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00149 
00158 char *jack_get_uuid_for_client_name (jack_client_t *client,
00159                                      const char    *client_name) JACK_WEAK_EXPORT;
00160 
00170 char *jack_get_client_name_by_uuid (jack_client_t *client,
00171                                     const char    *client_uuid ) JACK_WEAK_EXPORT;
00172 
00194 int jack_internal_client_new (const char *client_name,
00195                               const char *load_name,
00196                               const char *load_init) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00197 
00203 void jack_internal_client_close (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00204 
00211 int jack_activate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00212 
00220 int jack_deactivate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00221 
00225 int jack_get_client_pid (const char *name) JACK_OPTIONAL_WEAK_EXPORT;
00226 
00231 jack_native_thread_t jack_client_thread_id (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00232 
00242 int jack_is_realtime (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00243 
00255 jack_nframes_t jack_thread_wait (jack_client_t *client, int status) JACK_OPTIONAL_WEAK_EXPORT;
00256 
00264 jack_nframes_t jack_cycle_wait (jack_client_t* client) JACK_OPTIONAL_WEAK_EXPORT;
00265 
00272 void jack_cycle_signal (jack_client_t* client, int status) JACK_OPTIONAL_WEAK_EXPORT;
00273 
00290 int jack_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00291 
00313 int jack_set_thread_init_callback (jack_client_t *client,
00314                                    JackThreadInitCallback thread_init_callback,
00315                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00316 
00345 void jack_on_shutdown (jack_client_t *client,
00346                        JackShutdownCallback shutdown_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00347 
00375 void jack_on_info_shutdown (jack_client_t *client,
00376                             JackInfoShutdownCallback shutdown_callback, void *arg) JACK_WEAK_EXPORT;
00377 
00395 int jack_set_process_callback (jack_client_t *client,
00396                                JackProcessCallback process_callback,
00397                                void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00398 
00415 int jack_set_freewheel_callback (jack_client_t *client,
00416                                  JackFreewheelCallback freewheel_callback,
00417                                  void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00418 
00438 int jack_set_buffer_size_callback (jack_client_t *client,
00439                                    JackBufferSizeCallback bufsize_callback,
00440                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00441 
00455 int jack_set_sample_rate_callback (jack_client_t *client,
00456                                    JackSampleRateCallback srate_callback,
00457                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00458 
00472 int jack_set_client_registration_callback (jack_client_t *client,
00473                                             JackClientRegistrationCallback
00474                                             registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00475 
00489  int jack_set_port_registration_callback (jack_client_t *client,
00490                                           JackPortRegistrationCallback
00491                                           registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00492 
00506 int jack_set_port_connect_callback (jack_client_t *client,
00507                                     JackPortConnectCallback
00508                                     connect_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00509 
00523 int jack_set_port_rename_callback (jack_client_t *client,
00524                                    JackPortRenameCallback
00525                                    rename_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00526 
00540 int jack_set_graph_order_callback (jack_client_t *client,
00541                                    JackGraphOrderCallback graph_callback,
00542                                    void *) JACK_OPTIONAL_WEAK_EXPORT;
00543 
00557 int jack_set_xrun_callback (jack_client_t *client,
00558                             JackXRunCallback xrun_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00559 
00615 int jack_set_latency_callback (jack_client_t *client,
00616                                JackLatencyCallback latency_callback,
00617                                void *) JACK_WEAK_EXPORT;
00649 int jack_set_freewheel(jack_client_t* client, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00650 
00666 int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) JACK_OPTIONAL_WEAK_EXPORT;
00667 
00672 jack_nframes_t jack_get_sample_rate (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00673 
00683 jack_nframes_t jack_get_buffer_size (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00684 
00695 int jack_engine_takeover_timebase (jack_client_t *) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00696 
00703 float jack_cpu_load (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00704 
00741 jack_port_t * jack_port_register (jack_client_t *client,
00742                                   const char *port_name,
00743                                   const char *port_type,
00744                                   unsigned long flags,
00745                                   unsigned long buffer_size) JACK_OPTIONAL_WEAK_EXPORT;
00746 
00753 int jack_port_unregister (jack_client_t *client, jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00754 
00774 void * jack_port_get_buffer (jack_port_t *port, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00775 
00781 jack_uuid_t jack_port_uuid (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00782 
00789 const char * jack_port_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00790 
00797 const char * jack_port_short_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00798 
00802 int jack_port_flags (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00803 
00808 const char * jack_port_type (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00809 
00813 jack_port_type_id_t jack_port_type_id (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00814 
00818 int jack_port_is_mine (const jack_client_t *client, const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00819 
00825 int jack_port_connected (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00826 
00833 int jack_port_connected_to (const jack_port_t *port,
00834                             const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00835 
00847 const char ** jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00848 
00868 const char ** jack_port_get_all_connections (const jack_client_t *client,
00869                                              const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00870 
00878 int jack_port_tie (jack_port_t *src, jack_port_t *dst) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00879 
00887 int jack_port_untie (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00888 
00896 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00897 
00911 int jack_port_set_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00912 
00921 int jack_port_unset_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00922 
00928 int jack_port_get_aliases (const jack_port_t *port, char* const aliases[2]) JACK_OPTIONAL_WEAK_EXPORT;
00929 
00934 int jack_port_request_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00935 
00944 int jack_port_request_monitor_by_name (jack_client_t *client,
00945                                        const char *port_name, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00946 
00954 int jack_port_ensure_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00955 
00959 int jack_port_monitoring_input (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00960 
00978 int jack_connect (jack_client_t *client,
00979                   const char *source_port,
00980                   const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00981 
00995 int jack_disconnect (jack_client_t *client,
00996                      const char *source_port,
00997                      const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00998 
01008 int jack_port_disconnect (jack_client_t *client, jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
01009 
01018 int jack_port_name_size(void) JACK_OPTIONAL_WEAK_EXPORT;
01019 
01024 int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
01025 
01031 size_t jack_port_type_get_buffer_size (jack_client_t *client, const char *port_type) JACK_WEAK_EXPORT;
01032 
01099 void jack_port_set_latency (jack_port_t *port, jack_nframes_t) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01100 
01110 void jack_port_get_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
01111 
01179 void jack_port_set_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
01180 
01194 int jack_recompute_total_latencies (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
01195 
01211 jack_nframes_t jack_port_get_latency (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01212 
01223 jack_nframes_t jack_port_get_total_latency (jack_client_t *client,
01224                                             jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01225 
01242 int jack_recompute_total_latency (jack_client_t*, jack_port_t* port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01243 
01267 const char ** jack_get_ports (jack_client_t *client,
01268                               const char *port_name_pattern,
01269                               const char *type_name_pattern,
01270                               unsigned long flags) JACK_OPTIONAL_WEAK_EXPORT;
01271 
01277 jack_port_t * jack_port_by_name (jack_client_t *client, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
01278 
01282 jack_port_t * jack_port_by_id (jack_client_t *client,
01283                                jack_port_id_t port_id) JACK_OPTIONAL_WEAK_EXPORT;
01284 
01300 jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01301 
01308 jack_nframes_t jack_frame_time (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01309 
01324 jack_nframes_t jack_last_frame_time (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
01325 
01369 int jack_get_cycle_times(const jack_client_t *client,
01370                         jack_nframes_t *current_frames,
01371                         jack_time_t    *current_usecs,
01372                         jack_time_t    *next_usecs,
01373                         float          *period_usecs) JACK_OPTIONAL_WEAK_EXPORT;
01374                   
01378 jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
01379 
01383 jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t) JACK_OPTIONAL_WEAK_EXPORT;
01384 
01391 jack_time_t jack_get_time() JACK_OPTIONAL_WEAK_EXPORT;
01392 
01399 
01408 extern void (*jack_error_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01409 
01417 void jack_set_error_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01418 
01427 extern void (*jack_info_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01428 
01436 void jack_set_info_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01437 
01447 void jack_free(void* ptr) JACK_OPTIONAL_WEAK_EXPORT;
01448 
01449 
01450 #ifdef __cplusplus
01451 }
01452 #endif
01453 
01454 #endif /* __jack_h__ */