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 #include <jack/weakmacros.h>
00031
00032 #define DEFAULT_MULTICAST_IP "225.3.19.154"
00033 #define DEFAULT_PORT 19000
00034 #define DEFAULT_MTU 1500
00035 #define MASTER_NAME_SIZE 256
00036
00037
00038
00039 #define NO_ERROR 0
00040 #define SOCKET_ERROR -1
00041 #define SYNC_PACKET_ERROR -2
00042 #define DATA_PACKET_ERROR -3
00043
00044 #define RESTART_CB_API 1
00045
00046 enum JackNetEncoder {
00047
00048 JackFloatEncoder = 0,
00049 JackIntEncoder = 1,
00050 JackCeltEncoder = 2,
00051 JackOpusEncoder = 3,
00052 };
00053
00054 typedef struct {
00055
00056 int audio_input;
00057 int audio_output;
00058 int midi_input;
00059 int midi_output;
00060 int mtu;
00061 int time_out;
00062 int encoder;
00063 int kbps;
00064 int latency;
00065
00066 } jack_slave_t;
00067
00068 typedef struct {
00069
00070 int audio_input;
00071 int audio_output;
00072 int midi_input;
00073 int midi_output;
00074 jack_nframes_t buffer_size;
00075 jack_nframes_t sample_rate;
00076 char master_name[MASTER_NAME_SIZE];
00077 int time_out;
00078 int partial_cycle;
00079
00080 } jack_master_t;
00081
00086 typedef struct _jack_net_slave jack_net_slave_t;
00087
00097 jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result);
00098
00105 int jack_net_slave_close(jack_net_slave_t* net);
00106
00122 typedef int (* JackNetSlaveProcessCallback) (jack_nframes_t buffer_size,
00123 int audio_input,
00124 float** audio_input_buffer,
00125 int midi_input,
00126 void** midi_input_buffer,
00127 int audio_output,
00128 float** audio_output_buffer,
00129 int midi_output,
00130 void** midi_output_buffer,
00131 void* data);
00132
00141 int jack_set_net_slave_process_callback(jack_net_slave_t * net, JackNetSlaveProcessCallback net_callback, void *arg);
00142
00149 int jack_net_slave_activate(jack_net_slave_t* net);
00150
00157 int jack_net_slave_deactivate(jack_net_slave_t* net);
00158
00165 int jack_net_slave_is_active(jack_net_slave_t* net);
00166
00174 typedef int (*JackNetSlaveBufferSizeCallback)(jack_nframes_t nframes, void *arg);
00175
00184 int jack_set_net_slave_buffer_size_callback(jack_net_slave_t *net, JackNetSlaveBufferSizeCallback bufsize_callback, void *arg);
00185
00193 typedef int (*JackNetSlaveSampleRateCallback)(jack_nframes_t nframes, void *arg);
00194
00203 int jack_set_net_slave_sample_rate_callback(jack_net_slave_t *net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg);
00204
00209 typedef void (*JackNetSlaveShutdownCallback)(void* arg);
00210
00219 int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, JackNetSlaveShutdownCallback shutdown_callback, void *arg) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
00220
00231 typedef int (*JackNetSlaveRestartCallback)(void* arg);
00232
00241 int jack_set_net_slave_restart_callback(jack_net_slave_t *net, JackNetSlaveRestartCallback restart_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00242
00248 typedef void (*JackNetSlaveErrorCallback) (int error_code, void* arg);
00249
00258 int jack_set_net_slave_error_callback(jack_net_slave_t *net, JackNetSlaveErrorCallback error_callback, void *arg) JACK_OPTIONAL_WEAK_EXPORT;
00259
00263 typedef struct _jack_net_master jack_net_master_t;
00264
00274 jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result);
00275
00282 int jack_net_master_close(jack_net_master_t* net);
00283
00294 int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer);
00295
00307 int jack_net_master_recv_slice(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer, int frames);
00308
00319 int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer);
00320
00332 int jack_net_master_send_slice(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer, int frames);
00333
00334
00335
00339 typedef struct _jack_adapter jack_adapter_t;
00340
00352 jack_adapter_t* jack_create_adapter(int input, int output,
00353 jack_nframes_t host_buffer_size,
00354 jack_nframes_t host_sample_rate,
00355 jack_nframes_t adapted_buffer_size,
00356 jack_nframes_t adapted_sample_rate);
00357
00364 int jack_destroy_adapter(jack_adapter_t* adapter);
00365
00372 void jack_flush_adapter(jack_adapter_t* adapter);
00373
00383 int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00384
00394 int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00395
00396 #ifdef __cplusplus
00397 }
00398 #endif
00399
00400 #endif