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);