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 };
00044
00045 typedef struct {
00046
00047 int audio_input;
00048 int audio_output;
00049 int midi_input;
00050 int midi_output;
00051 int mtu;
00052 int time_out;
00053 int encoder;
00054 int kbps;
00055 int latency;
00056
00057 } jack_slave_t;
00058
00059 typedef struct {
00060
00061 int audio_input;
00062 int audio_output;
00063 int midi_input;
00064 int midi_output;
00065 jack_nframes_t buffer_size;
00066 jack_nframes_t sample_rate;
00067 char master_name[MASTER_NAME_SIZE];
00068
00069 } jack_master_t;
00070
00075 typedef struct _jack_net_slave jack_net_slave_t;
00076
00086 jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result);
00087
00094 int jack_net_slave_close(jack_net_slave_t* net);
00095
00111 typedef int (* JackNetSlaveProcessCallback) (jack_nframes_t buffer_size,
00112 int audio_input,
00113 float** audio_input_buffer,
00114 int midi_input,
00115 void** midi_input_buffer,
00116 int audio_output,
00117 float** audio_output_buffer,
00118 int midi_output,
00119 void** midi_output_buffer,
00120 void* data);
00121
00130 int jack_set_net_slave_process_callback(jack_net_slave_t * net, JackNetSlaveProcessCallback net_callback, void *arg);
00131
00138 int jack_net_slave_activate(jack_net_slave_t* net);
00139
00146 int jack_net_slave_deactivate(jack_net_slave_t* net);
00147
00155 typedef int (*JackNetSlaveBufferSizeCallback)(jack_nframes_t nframes, void *arg);
00156
00164 typedef int (*JackNetSlaveSampleRateCallback)(jack_nframes_t nframes, void *arg);
00165
00174 int jack_set_net_slave_buffer_size_callback(jack_net_slave_t *net, JackNetSlaveBufferSizeCallback bufsize_callback, void *arg);
00175
00184 int jack_set_net_slave_sample_rate_callback(jack_net_slave_t *net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg);
00185
00190 typedef void (*JackNetSlaveShutdownCallback)(void* data);
00191
00200 int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, JackNetSlaveShutdownCallback shutdown_callback, void *arg);
00201
00205 typedef struct _jack_net_master jack_net_master_t;
00206
00216 jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result);
00217
00224 int jack_net_master_close(jack_net_master_t* net);
00225
00236 int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer);
00237
00248 int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer);
00249
00250
00251
00255 typedef struct _jack_adapter jack_adapter_t;
00256
00268 jack_adapter_t* jack_create_adapter(int input, int output,
00269 jack_nframes_t host_buffer_size,
00270 jack_nframes_t host_sample_rate,
00271 jack_nframes_t adapted_buffer_size,
00272 jack_nframes_t adapted_sample_rate);
00273
00280 int jack_destroy_adapter(jack_adapter_t* adapter);
00281
00288 void jack_flush_adapter(jack_adapter_t* adapter);
00289
00299 int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00300
00310 int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
00311
00312 #ifdef __cplusplus
00313 }
00314 #endif
00315
00316 #endif