types.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_types_h__
00022 #define __jack_types_h__
00023 
00024 #include <inttypes.h>
00025 #ifndef PRIu32
00026 #define        PRIi32          "i"     /* int32_t */
00027 #define        PRIu32          "u"     /* uint32_t */
00028 #define        PRIu64          "llu"    /* uint64_t */
00029 #define        SCNu64          "llu"    /* uint64_t */
00030 #define        PRId32          "d"     /* int32_t */
00031 #define        PRIx64          "llx"    /* uint64_t */
00032 #endif
00033 
00034 typedef int32_t jack_shmsize_t;
00035 
00039 typedef uint32_t             jack_nframes_t;
00040 
00044 #define JACK_MAX_FRAMES (4294967295U)   /* This should be UINT32_MAX, but
00045                                            C++ has a problem with that. */
00046 
00051 typedef uint64_t jack_time_t;
00052 
00057 #define JACK_LOAD_INIT_LIMIT 1024
00058 
00064 typedef uint64_t jack_intclient_t;
00065 
00070 typedef struct _jack_port    jack_port_t;
00071 
00076 typedef struct _jack_client  jack_client_t;
00077 
00082 typedef uint32_t             jack_port_id_t;
00083 
00084 
00088 enum JackOptions {
00089 
00093      JackNullOption = 0x00,
00094 
00101      JackNoStartServer = 0x01,
00102 
00107      JackUseExactName = 0x02,
00108 
00112      JackServerName = 0x04,
00113 
00118      JackLoadName = 0x08,
00119 
00124      JackLoadInit = 0x10
00125 };
00126 
00128 #define JackOpenOptions (JackServerName|JackNoStartServer|JackUseExactName)
00129 
00131 #define JackLoadOptions (JackLoadInit|JackLoadName|JackUseExactName)
00132 
00137 typedef enum JackOptions jack_options_t;
00138 
00142 enum JackStatus {
00143 
00147      JackFailure = 0x01,
00148 
00152      JackInvalidOption = 0x02,
00153 
00163      JackNameNotUnique = 0x04,
00164 
00171      JackServerStarted = 0x08,
00172 
00176      JackServerFailed = 0x10,
00177 
00181      JackServerError = 0x20,
00182 
00186      JackNoSuchClient = 0x40,
00187 
00191      JackLoadFailure = 0x80,
00192 
00196      JackInitFailure = 0x100,
00197 
00201      JackShmFailure = 0x200,
00202 
00206      JackVersionError = 0x400,
00207 
00208      /*
00209       * BackendError
00210       */
00211      JackBackendError = 0x800,
00212 
00213      /*
00214       * Client is being shutdown against its will
00215       */
00216      JackClientZombie = 0x1000
00217 };
00218 
00223 typedef enum JackStatus jack_status_t;
00224 
00237 typedef int  (*JackProcessCallback)(jack_nframes_t nframes, void *arg);
00238 
00251 typedef void  (*JackThreadInitCallback)(void *arg);
00252 
00261 typedef int  (*JackGraphOrderCallback)(void *arg);
00262 
00273 typedef int  (*JackXRunCallback)(void *arg);
00274 
00289 typedef int  (*JackBufferSizeCallback)(jack_nframes_t nframes, void *arg);
00290 
00300 typedef int  (*JackSampleRateCallback)(jack_nframes_t nframes, void *arg);
00301 
00311 typedef void (*JackPortRegistrationCallback)(jack_port_id_t port, int register, void *arg);
00312 
00322 typedef void (*JackClientRegistrationCallback)(const char* name, int register, void *arg);
00323 
00334 typedef void (*JackPortConnectCallback)(jack_port_id_t a, jack_port_id_t b, int connect, void* arg);
00335 
00343 typedef void (*JackFreewheelCallback)(int starting, void *arg);
00344 
00345 typedef void *(*JackThreadCallback)(void* arg);
00346 
00358 typedef void (*JackShutdownCallback)(void *arg);
00359 
00373 typedef void (*JackInfoShutdownCallback)(jack_status_t code, const char* reason, void *arg);
00374 
00379 #define JACK_DEFAULT_AUDIO_TYPE "32 bit float mono audio"
00380 #define JACK_DEFAULT_MIDI_TYPE "8 bit raw midi"
00381 
00387 typedef float jack_default_audio_sample_t;
00388 
00395 enum JackPortFlags {
00396 
00401      JackPortIsInput = 0x1,
00402 
00407      JackPortIsOutput = 0x2,
00408 
00413      JackPortIsPhysical = 0x4, 
00414 
00428      JackPortCanMonitor = 0x8,
00429 
00444      JackPortIsTerminal = 0x10
00445 };          
00446 
00447 
00448 #endif /* __jack_types_h__ */
00449