JACK-AUDIO-CONNECTION-KIT 0.120.1

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 <pthread.h>
00029 
00030 #include <jack/types.h>
00031 #include <jack/transport.h>
00032 
00038 /*************************************************************
00039  * NOTE: JACK_WEAK_EXPORT ***MUST*** be used on every function
00040  * added to the JACK API after the 0.116.2 release.
00041  * 
00042  * Functions that predate this release are marked with 
00043  * JACK_WEAK_OPTIONAL_EXPORT which can be defined at compile
00044  * time in a variety of ways. The default definition is empty,
00045  * so that these symbols get normal linkage. If you wish to
00046  * use all JACK symbols with weak linkage, include 
00047  * <jack/weakjack.h> before jack.h.
00048  *************************************************************/
00049 
00050 #include <jack/weakmacros.h>
00051 
00090 jack_client_t *jack_client_open (const char *client_name,
00091                                  jack_options_t options,
00092                                  jack_status_t *status, ...) JACK_OPTIONAL_WEAK_EXPORT;
00093 
00099 jack_client_t *jack_client_new (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00100 
00106 int jack_client_close (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00107 
00112 int jack_client_name_size (void) JACK_OPTIONAL_WEAK_EXPORT;
00113 
00120 char *jack_get_client_name (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00121 
00143 int jack_internal_client_new (const char *client_name,
00144                               const char *load_name,
00145                               const char *load_init) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00146 
00152 void jack_internal_client_close (const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00153 
00160 int jack_activate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00161 
00169 int jack_deactivate (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00170 
00175 pthread_t jack_client_thread_id (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00176 
00186 int jack_is_realtime (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00187 
00200 jack_nframes_t jack_thread_wait (jack_client_t*, int status) JACK_OPTIONAL_WEAK_EXPORT;
00201 
00209 jack_nframes_t jack_cycle_wait (jack_client_t* client) JACK_OPTIONAL_WEAK_EXPORT;
00210         
00217 void jack_cycle_signal (jack_client_t* client, int status) JACK_OPTIONAL_WEAK_EXPORT;
00218         
00230 int jack_set_process_thread(jack_client_t* client, JackThreadCallback fun, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00231 
00250 int jack_set_thread_init_callback (jack_client_t *client,
00251                                    JackThreadInitCallback thread_init_callback,
00252                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00253 
00277 void jack_on_shutdown (jack_client_t *client,
00278                        JackShutdownCallback function, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00279 
00303 void jack_on_info_shutdown (jack_client_t *client,
00304                             JackInfoShutdownCallback function, void *arg) JACK_WEAK_EXPORT;
00305 
00319 int jack_set_process_callback (jack_client_t *client,
00320                                JackProcessCallback process_callback,
00321                                void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00322 
00332 int jack_set_freewheel_callback (jack_client_t *client,
00333                                  JackFreewheelCallback freewheel_callback,
00334                                  void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00335 
00348 int jack_set_buffer_size_callback (jack_client_t *client,
00349                                    JackBufferSizeCallback bufsize_callback,
00350                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00351 
00358 int jack_set_sample_rate_callback (jack_client_t *client,
00359                                    JackSampleRateCallback srate_callback,
00360                                    void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00361 
00368 int jack_set_client_registration_callback (jack_client_t *,
00369                                            JackClientRegistrationCallback
00370                                            registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00371         
00378 int jack_set_port_registration_callback (jack_client_t *,
00379                                          JackPortRegistrationCallback
00380                                          registration_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00381 
00388 int jack_set_port_connect_callback (jack_client_t *,
00389                                     JackPortConnectCallback
00390                                     connect_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00397 int jack_set_graph_order_callback (jack_client_t *,
00398                                    JackGraphOrderCallback graph_callback,
00399                                    void *) JACK_OPTIONAL_WEAK_EXPORT;
00400 
00407 int jack_set_xrun_callback (jack_client_t *,
00408                             JackXRunCallback xrun_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00409 
00416 int jack_set_latency_callback (jack_client_t *,
00417                                    JackLatencyCallback latency_callback,
00418                                    void *) JACK_WEAK_EXPORT;
00450 int jack_set_freewheel(jack_client_t* client, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00451 
00467 int jack_set_buffer_size (jack_client_t *client, jack_nframes_t nframes) JACK_OPTIONAL_WEAK_EXPORT;
00468 
00473 jack_nframes_t jack_get_sample_rate (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00474 
00484 jack_nframes_t jack_get_buffer_size (jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00485 
00496 int  jack_engine_takeover_timebase (jack_client_t *) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00497 
00504 float jack_cpu_load (jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00505         
00506 
00543 jack_port_t *jack_port_register (jack_client_t *client,
00544                                  const char *port_name,
00545                                  const char *port_type,
00546                                  unsigned long flags,
00547                                  unsigned long buffer_size) JACK_OPTIONAL_WEAK_EXPORT;
00548 
00555 int jack_port_unregister (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00556 
00568 void *jack_port_get_buffer (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00569 
00576 const char *jack_port_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00577 
00584 const char *jack_port_short_name (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00585 
00589 int jack_port_flags (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00590 
00595 const char *jack_port_type (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00596 
00600 int jack_port_is_mine (const jack_client_t *, const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00601 
00607 int jack_port_connected (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00608 
00615 int jack_port_connected_to (const jack_port_t *port,
00616                             const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00617 
00629 const char **jack_port_get_connections (const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00630 
00650 const char **jack_port_get_all_connections (const jack_client_t *client,
00651                                             const jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00652 
00660 int  jack_port_tie (jack_port_t *src, jack_port_t *dst) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00661 
00669 int  jack_port_untie (jack_port_t *port) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00670 
00681 jack_nframes_t jack_port_get_latency (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00682 
00688 jack_nframes_t jack_port_get_total_latency (jack_client_t *,
00689                                             jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00690 
00701 void jack_port_set_latency (jack_port_t *, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00702         
00708 void jack_port_get_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
00709 
00713 void jack_port_set_latency_range (jack_port_t *port, jack_latency_callback_mode_t mode, jack_latency_range_t *range) JACK_WEAK_EXPORT;
00714 
00726 int jack_recompute_total_latency (jack_client_t*, jack_port_t* port) JACK_OPTIONAL_WEAK_EXPORT;
00727 
00741 int jack_recompute_total_latencies (jack_client_t*) JACK_OPTIONAL_WEAK_EXPORT;
00742 
00750 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00751 
00765 int jack_port_set_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00766 
00775 int jack_port_unset_alias (jack_port_t *port, const char *alias) JACK_OPTIONAL_WEAK_EXPORT;
00776 
00777 /*
00778  * Get any aliases known for @port.
00779  *
00780  * @return the number of aliases discovered for the port
00781  */
00782 int jack_port_get_aliases (const jack_port_t *port, char* const aliases[2]) JACK_OPTIONAL_WEAK_EXPORT;
00783 
00788 int jack_port_request_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00789 
00798 int jack_port_request_monitor_by_name (jack_client_t *client,
00799                                        const char *port_name, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00800 
00808 int jack_port_ensure_monitor (jack_port_t *port, int onoff) JACK_OPTIONAL_WEAK_EXPORT;
00809 
00813 int jack_port_monitoring_input (jack_port_t *port) JACK_OPTIONAL_WEAK_EXPORT;
00814 
00832 int jack_connect (jack_client_t *,
00833                   const char *source_port,
00834                   const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00835 
00849 int jack_disconnect (jack_client_t *,
00850                      const char *source_port,
00851                      const char *destination_port) JACK_OPTIONAL_WEAK_EXPORT;
00852 
00862 int jack_port_disconnect (jack_client_t *, jack_port_t *) JACK_OPTIONAL_WEAK_EXPORT;
00863 
00872 int jack_port_name_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00873 
00878 int jack_port_type_size(void) JACK_OPTIONAL_WEAK_EXPORT;
00902 const char **jack_get_ports (jack_client_t *, 
00903                              const char *port_name_pattern, 
00904                              const char *type_name_pattern, 
00905                              unsigned long flags) JACK_OPTIONAL_WEAK_EXPORT;
00906 
00912 jack_port_t *jack_port_by_name (jack_client_t *, const char *port_name) JACK_OPTIONAL_WEAK_EXPORT;
00913 
00917 jack_port_t *jack_port_by_id (jack_client_t *client,
00918                               jack_port_id_t port_id) JACK_OPTIONAL_WEAK_EXPORT;
00919 
00936 jack_nframes_t jack_frames_since_cycle_start (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00937 
00944 jack_nframes_t jack_frame_time (const jack_client_t *) JACK_OPTIONAL_WEAK_EXPORT;
00945 
00960 jack_nframes_t jack_last_frame_time (const jack_client_t *client) JACK_OPTIONAL_WEAK_EXPORT;
00961 
00965 jack_time_t jack_frames_to_time(const jack_client_t *client, jack_nframes_t) JACK_OPTIONAL_WEAK_EXPORT;
00966 
00970 jack_nframes_t jack_time_to_frames(const jack_client_t *client, jack_time_t) JACK_OPTIONAL_WEAK_EXPORT;
00971 
00978 jack_time_t jack_get_time() JACK_OPTIONAL_WEAK_EXPORT;
00979 
00986 
00995 extern void (*jack_error_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
00996 
01003 void jack_set_error_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01004 
01013 extern void (*jack_info_callback)(const char *msg) JACK_OPTIONAL_WEAK_EXPORT;
01014 
01018 void jack_set_info_function (void (*func)(const char *)) JACK_OPTIONAL_WEAK_EXPORT;
01028 void jack_free(void* ptr) JACK_OPTIONAL_WEAK_EXPORT;
01029 
01030 #ifdef __cplusplus
01031 }
01032 #endif
01033 
01034 #endif /* __jack_h__ */
01035