JACK-AUDIO-CONNECTION-KIT  0.121.2
jack.h
Go to the documentation of this file.
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 #endif
00027 
00028 #include <jack/types.h>
00029 #include <jack/transport.h>
00030 
00036 /*************************************************************
00037  * NOTE: JACK_WEAK_EXPORT ***MUST*** be used on every function
00038  * added to the JACK API after the 0.116.2 release.
00039  * 
00040  * Functions that predate this release are marked with 
00041  * JACK_WEAK_OPTIONAL_EXPORT which can be defined at compile
00042  * time in a variety of ways. The default definition is empty,
00043  * so that these symbols get normal linkage. If you wish to
00044  * use all JACK symbols with weak linkage, include 
00045  * <jack/weakjack.h> before jack.h.
00046  *************************************************************/
00047 
00048 #include <jack/weakmacros.h>
00049 
00088 jack_client_t *jack_client_open (const char *client_name,
00089                                  jack_options_t options,
00090                                  jack_status_t *status, ...) JACK_OPTIONAL_WEAK_EXPORT;
00091 
00097 jack_client_t *jack_client_new (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00098 
00104 int jack_client_close (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00105 
00110 int jack_client_name_size (void) JACK_OPTIONAL_WEAK_EXPORT;
00111 
00118 char *jack_get_client_name (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00119 
00141 int jack_internal_client_new (const char *client_name,
00142                               const char *load_name,
00143                               const char *load_init) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00144 
00150 void jack_internal_client_close (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00151 
00158 int jack_activate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00159 
00167 int jack_deactivate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00168 
00173 jack_native_thread_t jack_client_thread_id (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00174 
00184 int jack_is_realtime (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00185 
00198 jack_nframes_t jack_thread_wait (jack_client_t*, int status) JACK_OPTIONAL_WEAK_EXPORT;
00199 
00207 jack_nframes_t jack_cycle_wait (jack_client_t* client) JACK_OPTIONAL_WEAK_EXPORT;
00208         
00215 void jack_cycle_signal (jack_client_t* client, int status) JACK_OPTIONAL_WEAK_EXPORT;
00216         
00228 int jack_set_process_thread(jack_client_t* client, JackThreadCallback fun, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00229 
00248 int jack_set_thread_init_callback (jack_client_t *client,
00249                                    JackThreadInitCallback thread_init_callback,
00250                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00251 
00275 void jack_on_shutdown (jack_client_t *client,
00276                        JackShutdownCallback function, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00277 
00301 void jack_on_info_shutdown (jack_client_t *client,
00302                             JackInfoShutdownCallback function, void *arg) JACK_WEAK_EXPORT;
00303 
00317 int jack_set_process_callback (jack_client_t *client,
00318                                JackProcessCallback process_callback,
00319                                void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00320 
00330 int jack_set_freewheel_callback (jack_client_t *client,
00331                                  JackFreewheelCallback freewheel_callback,
00332                                  void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00333 
00346 int jack_set_buffer_size_callback (jack_client_t *client,
00347                                    JackBufferSizeCallback bufsize_callback,
00348                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00349 
00356 int jack_set_sample_rate_callback (jack_client_t *client,
00357                                    JackSampleRateCallback srate_callback,
00358                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00359 
00366 int jack_set_client_registration_callback (jack_client_t *,
00367                                            JackClientRegistrationCallback
00368                                            registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00369         
00376 int jack_set_port_registration_callback (jack_client_t *,
00377                                          JackPortRegistrationCallback
00378                                          registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00379 
00386 int jack_set_port_connect_callback (jack_client_t *,
00387                                     JackPortConnectCallback
00388                                     connect_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00395 int jack_set_graph_order_callback (jack_client_t *,
00396                                    JackGraphOrderCallback graph_callback,
00397                                    void *) JACK_OPTIONAL_WEAK_EXPORT;
00398 
00405 int jack_set_xrun_callback (jack_client_t *,
00406                             JackXRunCallback xrun_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00407 
00461 int jack_set_latency_callback (jack_client_t *,
00462                                JackLatencyCallback latency_callback,
00463                                void *) JACK_WEAK_EXPORT;
00495 int jack_set_freewheel(jack_client_t* client, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00496 
00512 int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) JACK_OPTIONAL_WEAK_EXPORT;
00513 
00518 jack_nframes_t jack_get_sample_rate (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00519 
00529 jack_nframes_t jack_get_buffer_size (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00530 
00541 int  jack_engine_takeover_timebase (jack_client_t *) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00542 
00549 float jack_cpu_load (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00550         
00551 
00588 jack_port_t *jack_port_register (jack_client_t *client,
00589                                  const char *port_name,
00590                                  const char *port_type,
00591                                  unsigned long flags,
00592                                  unsigned long buffer_size) JACK_OPTIONAL_WEAK_EXPORT;
00593 
00600 int jack_port_unregister (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00601 
00613 void *jack_port_get_buffer (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00614 
00621 const char *jack_port_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00622 
00629 const char *jack_port_short_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00630 
00634 int jack_port_flags (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00635 
00640 const char *jack_port_type (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00641 
00645 int jack_port_is_mine (const jack_client_t *, const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00646 
00652 int jack_port_connected (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00653 
00660 int jack_port_connected_to (const jack_port_t *port,
00661                             const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00662 
00674 const char **jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00675 
00695 const char **jack_port_get_all_connections (const jack_client_t *client,
00696                                             const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00697 
00705 int  jack_port_tie (jack_port_t *src, jack_port_t *dst) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00706 
00714 int  jack_port_untie (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00715 
00723 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00724 
00738 int jack_port_set_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00739 
00748 int jack_port_unset_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00749 
00750 /*
00751  * Get any aliases known for @port.
00752  *
00753  * @return the number of aliases discovered for the port
00754  */
00755 int jack_port_get_aliases (const jack_port_t *port, char* const aliases[2]) JACK_OPTIONAL_WEAK_EXPORT;
00756 
00761 int jack_port_request_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00762 
00771 int jack_port_request_monitor_by_name (jack_client_t *client,
00772                                        const char *port_name, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00773 
00781 int jack_port_ensure_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00782 
00786 int jack_port_monitoring_input (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00787 
00805 int jack_connect (jack_client_t *,
00806                   const char *source_port,
00807                   const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00808 
00822 int jack_disconnect (jack_client_t *,
00823                      const char *source_port,
00824                      const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00825 
00835 int jack_port_disconnect (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00836 
00845 int jack_port_name_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00846 
00851 int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00852 
00858 size_t jack_port_type_get_buffer_size (jack_client_t *client, const char *port_type) JACK_WEAK_EXPORT;
00859 
00926 void jack_port_set_latency (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00927         
00937 void jack_port_get_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
00938 
01006 void jack_port_set_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
01007 
01021 int jack_recompute_total_latencies (jack_client_t*) JACK_OPTIONAL_WEAK_EXPORT;
01022 
01038 jack_nframes_t jack_port_get_latency (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01039 
01050 jack_nframes_t jack_port_get_total_latency (jack_client_t *,
01051                                             jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01052 
01069 int jack_recompute_total_latency (jack_client_t*, jack_port_t* port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
01070 
01094 const char **jack_get_ports (jack_client_t *, 
01095                              const char *port_name_pattern, 
01096                              const char *type_name_pattern, 
01097                              unsigned long flags) JACK_OPTIONAL_WEAK_EXPORT;
01098 
01104 jack_port_t *jack_port_by_name (jack_client_t *, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
01105 
01109 jack_port_t *jack_port_by_id (jack_client_t *client,
01110                               jack_port_id_t port_id) JACK_OPTIONAL_WEAK_EXPORT;
01111 
01128 jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01129 
01136 jack_nframes_t jack_frame_time (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
01137 
01152 jack_nframes_t jack_last_frame_time (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
01153 
01157 jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
01158 
01162 jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t) JACK_OPTIONAL_WEAK_EXPORT;
01163 
01170 jack_time_t jack_get_time() JACK_OPTIONAL_WEAK_EXPORT;
01171 
01178 
01187 extern void (*jack_error_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01188 
01195 void jack_set_error_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01196 
01205 extern void (*jack_info_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01206 
01210 void jack_set_info_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01220 void jack_free(void* ptr) JACK_OPTIONAL_WEAK_EXPORT;
01221 
01222 #ifdef __cplusplus
01223 }
01224 #endif
01225 
01226 #endif /* __jack_h__ */
01227