Jack2 1.9.6

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 pthread_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                             
00554 int jack_set_freewheel(jack_client_t* client, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00555 
00571 int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) JACK_OPTIONAL_WEAK_EXPORT;
00572                        
00577 jack_nframes_t jack_get_sample_rate (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00578 
00588 jack_nframes_t jack_get_buffer_size (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00589 
00600 int jack_engine_takeover_timebase (jack_client_t *) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00601 
00608 float jack_cpu_load (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00609 
00643 jack_port_t * jack_port_register (jack_client_t *client,
00644                                   const char *port_name,
00645                                   const char *port_type,
00646                                   unsigned long flags,
00647                                   unsigned long buffer_size) JACK_OPTIONAL_WEAK_EXPORT;
00648 
00655 int jack_port_unregister (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00656 
00676 void * jack_port_get_buffer (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00677 
00684 const char * jack_port_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00685 
00692 const char * jack_port_short_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00693 
00697 int jack_port_flags (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00698 
00703 const char * jack_port_type (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00704 
00708 jack_port_type_id_t jack_port_type_id (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00709 
00713 int jack_port_is_mine (const jack_client_t *, const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00714 
00720 int jack_port_connected (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00721 
00728 int jack_port_connected_to (const jack_port_t *port,
00729                             const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00730 
00742 const char ** jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00743 
00763 const char ** jack_port_get_all_connections (const jack_client_t *client,
00764                                              const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00765 
00773 int jack_port_tie (jack_port_t *src, jack_port_t *dst) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00774 
00782 int jack_port_untie (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00783 
00794 jack_nframes_t jack_port_get_latency (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00795 
00801 jack_nframes_t jack_port_get_total_latency (jack_client_t *,
00802                                             jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00803 
00814 void jack_port_set_latency (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00815 
00827 int jack_recompute_total_latency (jack_client_t*, jack_port_t* port) JACK_OPTIONAL_WEAK_EXPORT;
00828 
00842     int jack_recompute_total_latencies (jack_client_t*) JACK_OPTIONAL_WEAK_EXPORT;
00843 
00851 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00852 
00866 int jack_port_set_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00867 
00876 int jack_port_unset_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00877 
00883 int jack_port_get_aliases (const jack_port_t *port, char* const aliases[2]) JACK_OPTIONAL_WEAK_EXPORT;
00884 
00889 int jack_port_request_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00890 
00899 int jack_port_request_monitor_by_name (jack_client_t *client,
00900                                        const char *port_name, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00901 
00909 int jack_port_ensure_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00910 
00914 int jack_port_monitoring_input (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00915 
00933 int jack_connect (jack_client_t *,
00934                   const char *source_port,
00935                   const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00936 
00950 int jack_disconnect (jack_client_t *,
00951                      const char *source_port,
00952                      const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00953 
00963 int jack_port_disconnect (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00964 
00973 int jack_port_name_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00974 
00979 int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00980 
01004 const char ** jack_get_ports (jack_client_t *,
01005                               const char *port_name_pattern,
01006                               const char *type_name_pattern,
01007                               unsigned long flags) JACK_OPTIONAL_WEAK_EXPORT;
01008 
01014 jack_port_t * jack_port_by_name (jack_client_t *, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
01015 
01019 jack_port_t * jack_port_by_id (jack_client_t *client,
01020                                jack_port_id_t port_id) JACK_OPTIONAL_WEAK_EXPORT;
01021                                
01037 jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01038 
01045 jack_nframes_t jack_frame_time (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01046 
01061 jack_nframes_t jack_last_frame_time (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
01062 
01066 jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
01067 
01071 jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t) JACK_OPTIONAL_WEAK_EXPORT;
01072 
01079 jack_time_t jack_get_time() JACK_OPTIONAL_WEAK_EXPORT;
01080 
01087 
01096 extern void (*jack_error_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01097 
01105 void jack_set_error_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01106 
01115 extern void (*jack_info_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01116 
01124 void jack_set_info_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01125 
01135 void jack_free(void* ptr) JACK_OPTIONAL_WEAK_EXPORT;
01136 
01137 
01138 #ifdef __cplusplus
01139 }
01140 #endif
01141 
01142 #endif /* __jack_h__ */