Jack2 1.9.7
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 
00112 jack_client_t * jack_client_open (const char *client_name,
00113                                   jack_options_t options,
00114                                   jack_status_t *status, ...) JACK_OPTIONAL_WEAK_EXPORT;
00115 
00122 jack_client_t * jack_client_new (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00123 
00129 int jack_client_close (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00130 
00135 int jack_client_name_size (void) JACK_OPTIONAL_WEAK_EXPORT;
00136 
00143 char * jack_get_client_name (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00144 
00166 int jack_internal_client_new (const char *client_name,
00167                               const char *load_name,
00168                               const char *load_init) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00169 
00175 void jack_internal_client_close (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00176 
00183 int jack_activate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00184 
00192 int jack_deactivate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00193 
00197 int jack_get_client_pid (const char *name) JACK_OPTIONAL_WEAK_EXPORT;
00198 
00203 jack_native_thread_t jack_client_thread_id (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00204 
00214 int jack_is_realtime (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00215 
00227 jack_nframes_t jack_thread_wait (jack_client_t*, int status) JACK_OPTIONAL_WEAK_EXPORT;
00228 
00236     jack_nframes_t jack_cycle_wait (jack_client_t* client) JACK_OPTIONAL_WEAK_EXPORT;
00237 
00244 void jack_cycle_signal (jack_client_t* client, int status) JACK_OPTIONAL_WEAK_EXPORT;
00245 
00262 int jack_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00263 
00285 int jack_set_thread_init_callback (jack_client_t *client,
00286                                    JackThreadInitCallback thread_init_callback,
00287                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00288 
00312 void jack_on_shutdown (jack_client_t *client,
00313                        JackShutdownCallback shutdown_callback, void *arg) JACK_WEAK_EXPORT;
00314 
00338 void jack_on_info_shutdown (jack_client_t *client,
00339                             JackInfoShutdownCallback shutdown_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00340 
00358 int jack_set_process_callback (jack_client_t *client,
00359                                JackProcessCallback process_callback,
00360                                void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00361 
00378 int jack_set_freewheel_callback (jack_client_t *client,
00379                                  JackFreewheelCallback freewheel_callback,
00380                                  void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00381 
00401 int jack_set_buffer_size_callback (jack_client_t *client,
00402                                    JackBufferSizeCallback bufsize_callback,
00403                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00404 
00418 int jack_set_sample_rate_callback (jack_client_t *client,
00419                                    JackSampleRateCallback srate_callback,
00420                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00421 
00435 int jack_set_client_registration_callback (jack_client_t *,
00436                        JackClientRegistrationCallback
00437                                            registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00438 
00452  int jack_set_port_registration_callback (jack_client_t *,
00453                                           JackPortRegistrationCallback
00454                                           registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00455 
00469 int jack_set_port_connect_callback (jack_client_t *,
00470                                     JackPortConnectCallback
00471                                     connect_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00472 
00486 int jack_set_port_rename_callback (jack_client_t *,
00487                                    JackPortRenameCallback
00488                                    rename_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00489 
00503 int jack_set_graph_order_callback (jack_client_t *,
00504                                    JackGraphOrderCallback graph_callback,
00505                                    void *) JACK_OPTIONAL_WEAK_EXPORT;
00506 
00520 int jack_set_xrun_callback (jack_client_t *,
00521                             JackXRunCallback xrun_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00522 
00578 int jack_set_latency_callback (jack_client_t *,
00579                                JackLatencyCallback latency_callback,
00580                                void *) JACK_WEAK_EXPORT;
00612 int jack_set_freewheel(jack_client_t* client, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00613 
00629 int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) JACK_OPTIONAL_WEAK_EXPORT;
00630 
00635 jack_nframes_t jack_get_sample_rate (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00636 
00646 jack_nframes_t jack_get_buffer_size (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00647 
00658 int jack_engine_takeover_timebase (jack_client_t *) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00659 
00666 float jack_cpu_load (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00667 
00704 jack_port_t * jack_port_register (jack_client_t *client,
00705                                   const char *port_name,
00706                                   const char *port_type,
00707                                   unsigned long flags,
00708                                   unsigned long buffer_size) JACK_OPTIONAL_WEAK_EXPORT;
00709 
00716 int jack_port_unregister (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00717 
00737 void * jack_port_get_buffer (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00738 
00745 const char * jack_port_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00746 
00753 const char * jack_port_short_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00754 
00758 int jack_port_flags (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00759 
00764 const char * jack_port_type (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00765 
00769 jack_port_type_id_t jack_port_type_id (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00770 
00774 int jack_port_is_mine (const jack_client_t *, const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00775 
00781 int jack_port_connected (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00782 
00789 int jack_port_connected_to (const jack_port_t *port,
00790                             const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00791 
00803 const char ** jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00804 
00824 const char ** jack_port_get_all_connections (const jack_client_t *client,
00825                                              const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00826 
00834 int jack_port_tie (jack_port_t *src, jack_port_t *dst) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00835 
00843 int jack_port_untie (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00844 
00852 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00853 
00867 int jack_port_set_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00868 
00877 int jack_port_unset_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00878 
00884 int jack_port_get_aliases (const jack_port_t *port, char* const aliases[2]) JACK_OPTIONAL_WEAK_EXPORT;
00885 
00890 int jack_port_request_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00891 
00900 int jack_port_request_monitor_by_name (jack_client_t *client,
00901                                        const char *port_name, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00902 
00910 int jack_port_ensure_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00911 
00915 int jack_port_monitoring_input (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00916 
00934 int jack_connect (jack_client_t *,
00935                   const char *source_port,
00936                   const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00937 
00951 int jack_disconnect (jack_client_t *,
00952                      const char *source_port,
00953                      const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00954 
00964 int jack_port_disconnect (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00965 
00974 int jack_port_name_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00975 
00980 int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00981 
00987 size_t jack_port_type_get_buffer_size (jack_client_t *client, const char *port_type) JACK_WEAK_EXPORT;
00988 
01055 void jack_port_set_latency (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01056 
01066 void jack_port_get_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
01067 
01135 void jack_port_set_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
01136 
01150 int jack_recompute_total_latencies (jack_client_t*) JACK_OPTIONAL_WEAK_EXPORT;
01151 
01167 jack_nframes_t jack_port_get_latency (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01168 
01179 jack_nframes_t jack_port_get_total_latency (jack_client_t *,
01180                                             jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01181 
01198 int jack_recompute_total_latency (jack_client_t*, jack_port_t* port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01199 
01223 const char ** jack_get_ports (jack_client_t *,
01224                               const char *port_name_pattern,
01225                               const char *type_name_pattern,
01226                               unsigned long flags) JACK_OPTIONAL_WEAK_EXPORT;
01227 
01233 jack_port_t * jack_port_by_name (jack_client_t *, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
01234 
01238 jack_port_t * jack_port_by_id (jack_client_t *client,
01239                                jack_port_id_t port_id) JACK_OPTIONAL_WEAK_EXPORT;
01240 
01256 jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01257 
01264 jack_nframes_t jack_frame_time (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01265 
01280 jack_nframes_t jack_last_frame_time (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
01281 
01285 jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
01286 
01290 jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t) JACK_OPTIONAL_WEAK_EXPORT;
01291 
01298 jack_time_t jack_get_time() JACK_OPTIONAL_WEAK_EXPORT;
01299 
01306 
01315 extern void (*jack_error_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01316 
01324 void jack_set_error_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01325 
01334 extern void (*jack_info_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01335 
01343 void jack_set_info_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01344 
01354 void jack_free(void* ptr) JACK_OPTIONAL_WEAK_EXPORT;
01355 
01356 
01357 #ifdef __cplusplus
01358 }
01359 #endif
01360 
01361 #endif /* __jack_h__ */