00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __net_h__
00021 #define __net_h__
00022
00023 #ifdef __cplusplus
00024 extern "C"
00025 {
00026 #endif
00027
00028 #include <jack/systemdeps.h>
00029 #include <jack/types.h>
00030
00031 #define DEFAULT_MULTICAST_IP "225.3.19.154"
00032 #define DEFAULT_PORT 19000
00033 #define DEFAULT_MTU 1500
00034 #define MASTER_NAME_SIZE 256
00035
00036 #define SOCKET_ERROR -1
00037
00038 enum JackNetEncoder {
00039
00040 JackFloatEncoder = 0,
00041 JackIntEncoder = 1,
00042 JackCeltEncoder = 2,
00043 JackOpusEncoder = 3,
00044 };
00045
00046 typedef struct {
00047
00048 int audio_input;
00049 int audio_output;
00050 int midi_input;
00051 int midi_output;
00052 int mtu;
00053 int time_out;
00054 int encoder;
00055 int kbps;
00056 int latency;
00057
00058 } jack_slave_t;
00059
00060 typedef struct {
00061
00062 int audio_input;
00063 int audio_output;
00064 int midi_input;
00065 int midi_output;
00066 jack_nframes_t buffer_size;
00067 jack_nframes_t sample_rate;
00068 char master_name[MASTER_NAME_SIZE];
00069
00070 } jack_master_t;
00071
00076 typedef struct _jack_net_slave jack_net_slave_t;
00077
00087 jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result);
00088
00095 int jack_net_slave_close(jack_net_slave_t* net);
00096
00112 typedef int (* JackNetSlaveProcessCallback) (jack_nframes_t buffer_size,
00113 int audio_input,
00114 float** audio_input_buffer,
00115 int midi_input,
00116 void** midi_input_buffer,
00117 int audio_output,
00118 float** audio_output_buffer,
00119 int midi_output,
00120 void** midi_output_buffer,
00121 void* data);
00122
00131 int jack_set_net_slave_process_callback(jack_net_slave_t * net, JackNetSlaveProcessCallback net_callback, void *arg);
00132
00139 int jack_net_slave_activate(jack_net_slave_t* net);
00140
00147 int jack_net_slave_deactivate(jack_net_slave_t* net);
00148
00156 typedef int (*JackNetSlaveBufferSizeCallback)(jack_nframes_t nframes, void *arg);
00157
00165 typedef int (*JackNetSlaveSampleRateCallback)(jack_nframes_t nframes, void *arg);
00166
00175 int jack_set_net_slave_buffer_size_callback(jack_net_slave_t *net, JackNetSlaveBufferSizeCallback bufsize_callback, void *arg);
00176
00185 int jack_set_net_slave_sample_rate_callback(jack_net_slave_t *net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg);
00186
00191 typedef void (*JackNetSlaveShutdownCallback)(void* data);
00192
00201 int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, JackNetSlaveShutdownCallback shutdown_callback, void *arg);
00202
00206 typedef struct _jack_net_master jack_net_master_t;
00207
00217 jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result);
00218
00225 int jack_net_master_close(jack_net_master_t* net);
00226
00237 int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer);
00238
00249 int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer);
00250
00251
00252
00256 typedef struct _jack_adapter jack_adapter_t;
00257
00269 jack_adapter_t* jack_create_adapter(int input, int output,
00270 jack_nframes_t host_buffer_size,
00271 jack_nframes_t host_sample_rate,
00272 jack_nframes_t adapted_buffer_size,
00273 jack_nframes_t adapted_sample_rate);
00274
00281 int jack_destroy_adapter(jack_adapter_t* adapter);
00282
00289 void jack_flush_adapter(jack_adapter_t* adapter);
00290
00300 int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00301
00311 int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00312
00313 #ifdef __cplusplus
00314 }
00315 #endif
00316
00317 #endif