1 /// C declarations of JACK that libsoundio uses 2 module soundio.headers.jackheader; 3 4 @nogc nothrow: 5 extern(C): __gshared: 6 7 8 import core.stdc.config: c_long, c_ulong; 9 10 enum JACK_DEFAULT_AUDIO_TYPE = "32 bit float mono audio"; 11 12 alias jack_nframes_t = uint; 13 alias jack_port_id_t = uint; 14 15 struct jack_latency_range_t { 16 jack_nframes_t min; 17 jack_nframes_t max; 18 } 19 20 struct jack_client_t; 21 struct jack_port_t; 22 23 alias int function(jack_nframes_t nframes, void* arg) JackBufferSizeCallback; 24 alias int function(jack_nframes_t nframes, void* arg) JackSampleRateCallback; 25 alias void function(jack_port_id_t port, int, void* arg) JackPortRegistrationCallback; 26 alias void function(jack_port_id_t port, const(char)* old_name, const(char)* new_name, void* arg) JackPortRenameCallback; 27 alias void function(void* arg) JackShutdownCallback; 28 alias int function(jack_nframes_t nframes, void* arg) JackProcessCallback; 29 alias int function(void* arg) JackXRunCallback; 30 31 alias jack_latency_callback_mode_t = int; // C enum; JackLatencyCallbackMode 32 enum { 33 JackCaptureLatency, 34 JackPlaybackLatency, 35 } 36 37 // JackPortFlags 38 enum { 39 JackPortIsInput = 0x1, 40 JackPortIsOutput = 0x2, 41 JackPortIsPhysical = 0x4, 42 JackPortCanMonitor = 0x8, 43 JackPortIsTerminal = 0x10 44 } 45 46 alias jack_status_t = int; // C enum 47 enum { 48 JackFailure = 0x01, 49 JackInvalidOption = 0x02, 50 JackNameNotUnique = 0x04, 51 JackServerStarted = 0x08, 52 JackServerFailed = 0x10, 53 JackServerError = 0x20, 54 JackNoSuchClient = 0x40, 55 JackLoadFailure = 0x80, 56 JackInitFailure = 0x100, 57 JackShmFailure = 0x200, 58 JackVersionError = 0x400, 59 JackBackendError = 0x800, 60 JackClientZombie = 0x1000 61 } 62 63 alias jack_options_t = int; 64 enum { 65 JackNullOption = 0x00, 66 JackNoStartServer = 0x01, 67 JackUseExactName = 0x02, 68 JackServerName = 0x04, 69 JackLoadName = 0x08, 70 JackLoadInit = 0x10, 71 JackSessionID = 0x20 72 } 73 74 void jack_free(void* ptr); 75 int jack_set_buffer_size_callback(jack_client_t* client, JackBufferSizeCallback bufsize_callback, void* arg); 76 int jack_set_sample_rate_callback(jack_client_t* client, JackSampleRateCallback srate_callback, void* arg); 77 jack_port_t* jack_port_by_name(jack_client_t*, const(char)* port_name); 78 int jack_port_flags(const(jack_port_t)* port); 79 const(char)* jack_port_type(const(jack_port_t)* port); 80 void jack_port_get_latency_range(jack_port_t* port, jack_latency_callback_mode_t mode, jack_latency_range_t* range); 81 const(char)** jack_get_ports(jack_client_t*, const(char)* port_name_pattern, const(char)* type_name_pattern, c_ulong flags); 82 jack_nframes_t jack_get_sample_rate(jack_client_t*); 83 jack_nframes_t jack_get_buffer_size(jack_client_t*); 84 int jack_activate(jack_client_t* client); 85 int jack_set_port_rename_callback(jack_client_t*, JackPortRenameCallback rename_callback, void* arg); 86 int jack_set_port_registration_callback(jack_client_t*, JackPortRegistrationCallback registration_callback, void* arg); 87 jack_client_t* jack_client_open(const(char)* client_name, jack_options_t options, jack_status_t* status, ...); 88 void jack_set_info_function(void function(const(char)*) func); 89 void jack_on_shutdown(jack_client_t* client, JackShutdownCallback function_, void* arg); 90 void jack_set_error_function(void function(const(char)*) func); 91 int jack_client_close(jack_client_t* client); 92 int jack_connect(jack_client_t*, const(char)* source_port, const(char)* destination_port); 93 const(char)* jack_port_name(const(jack_port_t)* port); 94 void* jack_port_get_buffer(jack_port_t*, jack_nframes_t); 95 int jack_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg); 96 int jack_set_xrun_callback(jack_client_t*, JackXRunCallback xrun_callback, void* arg); 97 jack_port_t* jack_port_register(jack_client_t* client, const(char)* port_name, const(char)* port_type, c_ulong flags, c_ulong buffer_size);