Browse Source

Cleanup.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@4241 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 14 years ago
parent
commit
ff7978b4a0
6 changed files with 182 additions and 187 deletions
  1. +155
    -156
      common/JackNetAPI.cpp
  2. +7
    -7
      common/JackNetInterface.cpp
  3. +1
    -1
      common/jack/net.h
  4. +5
    -5
      example-clients/netmaster.c
  5. +14
    -14
      example-clients/netslave.c
  6. +0
    -4
      macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj

+ 155
- 156
common/JackNetAPI.cpp View File

@@ -29,9 +29,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
extern "C" extern "C"
{ {
#endif #endif
// NetJack common API // NetJack common API
#define MASTER_NAME_SIZE 256 #define MASTER_NAME_SIZE 256


enum JackNetMode { enum JackNetMode {
@@ -40,7 +40,7 @@ extern "C"
JackNormalMode = 'n', JackNormalMode = 'n',
JackSlowMode = 's', JackSlowMode = 's',
}; };
enum JackNetEncoder { enum JackNetEncoder {


JackFloatEncoder = 0, JackFloatEncoder = 0,
@@ -49,11 +49,11 @@ extern "C"
}; };


typedef struct { typedef struct {
int audio_input; int audio_input;
int audio_output; int audio_output;
int midi_input; int midi_input;
int midi_output;
int midi_output;
int mtu; int mtu;
int time_out; // in millisecond, -1 means in infinite int time_out; // in millisecond, -1 means in infinite
int encoder; int encoder;
@@ -63,59 +63,59 @@ extern "C"
} jack_slave_t; } jack_slave_t;


typedef struct { typedef struct {
jack_nframes_t buffer_size; jack_nframes_t buffer_size;
jack_nframes_t sample_rate; jack_nframes_t sample_rate;
char master_name[MASTER_NAME_SIZE]; char master_name[MASTER_NAME_SIZE];


} jack_master_t; } jack_master_t;
// NetJack slave API // NetJack slave API
typedef struct _jack_net_slave jack_net_slave_t; typedef struct _jack_net_slave jack_net_slave_t;
typedef int (* JackNetSlaveProcessCallback) (jack_nframes_t buffer_size, typedef int (* JackNetSlaveProcessCallback) (jack_nframes_t buffer_size,
int audio_input,
float** audio_input_buffer,
int audio_input,
float** audio_input_buffer,
int midi_input, int midi_input,
void** midi_input_buffer, void** midi_input_buffer,
int audio_output, int audio_output,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
void* data); void* data);
typedef int (*JackNetSlaveBufferSizeCallback) (jack_nframes_t nframes, void *arg); typedef int (*JackNetSlaveBufferSizeCallback) (jack_nframes_t nframes, void *arg);
typedef int (*JackNetSlaveSampleRateCallback) (jack_nframes_t nframes, void *arg); typedef int (*JackNetSlaveSampleRateCallback) (jack_nframes_t nframes, void *arg);
typedef void (*JackNetSlaveShutdownCallback) (void* data); typedef void (*JackNetSlaveShutdownCallback) (void* data);


SERVER_EXPORT jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result); SERVER_EXPORT jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result);
SERVER_EXPORT int jack_net_slave_close(jack_net_slave_t* net); SERVER_EXPORT int jack_net_slave_close(jack_net_slave_t* net);
SERVER_EXPORT int jack_net_slave_activate(jack_net_slave_t* net); SERVER_EXPORT int jack_net_slave_activate(jack_net_slave_t* net);
SERVER_EXPORT int jack_net_slave_deactivate(jack_net_slave_t* net); SERVER_EXPORT int jack_net_slave_deactivate(jack_net_slave_t* net);
SERVER_EXPORT int jack_set_net_slave_process_callback(jack_net_slave_t * net, JackNetSlaveProcessCallback net_callback, void *arg); SERVER_EXPORT int jack_set_net_slave_process_callback(jack_net_slave_t * net, JackNetSlaveProcessCallback net_callback, void *arg);
SERVER_EXPORT int jack_set_net_slave_buffer_size_callback(jack_net_slave_t *net, JackNetSlaveBufferSizeCallback bufsize_callback, void *arg); SERVER_EXPORT int jack_set_net_slave_buffer_size_callback(jack_net_slave_t *net, JackNetSlaveBufferSizeCallback bufsize_callback, void *arg);
SERVER_EXPORT int jack_set_net_slave_sample_rate_callback(jack_net_slave_t *net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg); SERVER_EXPORT int jack_set_net_slave_sample_rate_callback(jack_net_slave_t *net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg);
SERVER_EXPORT int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, JackNetSlaveShutdownCallback shutdown_callback, void *arg); SERVER_EXPORT int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, JackNetSlaveShutdownCallback shutdown_callback, void *arg);
// NetJack master API // NetJack master API
typedef struct _jack_net_master jack_net_master_t; typedef struct _jack_net_master jack_net_master_t;
SERVER_EXPORT jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result); SERVER_EXPORT jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result);
SERVER_EXPORT int jack_net_master_close(jack_net_master_t* net); SERVER_EXPORT int jack_net_master_close(jack_net_master_t* net);
SERVER_EXPORT int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer); SERVER_EXPORT int jack_net_master_recv(jack_net_master_t* net, int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer);
SERVER_EXPORT int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer); SERVER_EXPORT int jack_net_master_send(jack_net_master_t* net, int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer);
// NetJack adapter API // NetJack adapter API
typedef struct _jack_adapter jack_adapter_t; typedef struct _jack_adapter jack_adapter_t;
SERVER_EXPORT jack_adapter_t* jack_create_adapter(int input, int output, SERVER_EXPORT jack_adapter_t* jack_create_adapter(int input, int output,
jack_nframes_t host_buffer_size,
jack_nframes_t host_buffer_size,
jack_nframes_t host_sample_rate, jack_nframes_t host_sample_rate,
jack_nframes_t adapted_buffer_size, jack_nframes_t adapted_buffer_size,
jack_nframes_t adapted_sample_rate); jack_nframes_t adapted_sample_rate);
@@ -124,7 +124,7 @@ extern "C"


SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames); SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
SERVER_EXPORT int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames); SERVER_EXPORT int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -133,19 +133,19 @@ namespace Jack
{ {


struct JackNetExtMaster : public JackNetMasterInterface { struct JackNetExtMaster : public JackNetMasterInterface {
// Data buffers // Data buffers
float** fAudioCaptureBuffer; float** fAudioCaptureBuffer;
float** fAudioPlaybackBuffer; float** fAudioPlaybackBuffer;
JackMidiBuffer** fMidiCaptureBuffer; JackMidiBuffer** fMidiCaptureBuffer;
JackMidiBuffer** fMidiPlaybackBuffer; JackMidiBuffer** fMidiPlaybackBuffer;
jack_master_t fRequest; jack_master_t fRequest;
JackNetExtMaster(const char* ip,
int port,
const char* name,
JackNetExtMaster(const char* ip,
int port,
const char* name,
jack_master_t* request) jack_master_t* request)
{ {
fRunning = true; fRunning = true;
@@ -159,10 +159,10 @@ struct JackNetExtMaster : public JackNetMasterInterface {
fMidiCaptureBuffer = NULL; fMidiCaptureBuffer = NULL;
fMidiPlaybackBuffer = NULL; fMidiPlaybackBuffer = NULL;
} }
virtual ~JackNetExtMaster() virtual ~JackNetExtMaster()
{} {}
int Open(jack_slave_t* result) int Open(jack_slave_t* result)
{ {
// Init socket API (win32) // Init socket API (win32)
@@ -195,18 +195,18 @@ struct JackNetExtMaster : public JackNetMasterInterface {
// Set a timeout on the multicast receive (the thread can now be cancelled) // Set a timeout on the multicast receive (the thread can now be cancelled)
if (fSocket.SetTimeOut(2000000) == SOCKET_ERROR) if (fSocket.SetTimeOut(2000000) == SOCKET_ERROR)
fprintf(stderr, "Can't set timeout : %s\n", StrError(NET_ERROR_CODE)); fprintf(stderr, "Can't set timeout : %s\n", StrError(NET_ERROR_CODE));
//main loop, wait for data, deal with it and wait again //main loop, wait for data, deal with it and wait again
//utility variables //utility variables
int attempt = 0; int attempt = 0;
int rx_bytes = 0; int rx_bytes = 0;
do do
{ {
session_params_t net_params; session_params_t net_params;
rx_bytes = fSocket.CatchHost(&net_params, sizeof(session_params_t), 0); rx_bytes = fSocket.CatchHost(&net_params, sizeof(session_params_t), 0);
SessionParamsNToH(&net_params, &fParams); SessionParamsNToH(&net_params, &fParams);
if ((rx_bytes == SOCKET_ERROR) && (fSocket.GetError() != NET_NO_DATA)) { if ((rx_bytes == SOCKET_ERROR) && (fSocket.GetError() != NET_NO_DATA)) {
fprintf(stderr, "Error in receive : %s\n", StrError(NET_ERROR_CODE)); fprintf(stderr, "Error in receive : %s\n", StrError(NET_ERROR_CODE));
if (++attempt == 10) { if (++attempt == 10) {
@@ -214,11 +214,11 @@ struct JackNetExtMaster : public JackNetMasterInterface {
goto error; goto error;
} }
} }
if (rx_bytes == sizeof(session_params_t )) { if (rx_bytes == sizeof(session_params_t )) {
switch (GetPacketType(&fParams)) { switch (GetPacketType(&fParams)) {
case SLAVE_AVAILABLE: case SLAVE_AVAILABLE:
if (MasterInit() == 0) { if (MasterInit() == 0) {
SessionParamsDisplay(&fParams); SessionParamsDisplay(&fParams);
@@ -229,17 +229,17 @@ struct JackNetExtMaster : public JackNetMasterInterface {
} }
jack_info ( "Waiting for a slave..." ); jack_info ( "Waiting for a slave..." );
break; break;
case KILL_MASTER: case KILL_MASTER:
break; break;
default: default:
break; break;
} }
} }
} }
while (fRunning); while (fRunning);
// Set result paramaters // Set result paramaters
result->audio_input = fParams.fSendAudioChannels; result->audio_input = fParams.fSendAudioChannels;
result->audio_output = fParams.fReturnAudioChannels; result->audio_output = fParams.fReturnAudioChannels;
@@ -248,12 +248,12 @@ struct JackNetExtMaster : public JackNetMasterInterface {
result->mtu = fParams.fMtu; result->mtu = fParams.fMtu;
result->mode = fParams.fNetworkMode; result->mode = fParams.fNetworkMode;
return 0; return 0;
error: error:
fSocket.Close(); fSocket.Close();
return -1; return -1;
} }
int MasterInit() int MasterInit()
{ {
// Check MASTER <==> SLAVE network protocol coherency // Check MASTER <==> SLAVE network protocol coherency
@@ -268,10 +268,10 @@ struct JackNetExtMaster : public JackNetMasterInterface {
fParams.fSampleEncoder = JackFloatEncoder; fParams.fSampleEncoder = JackFloatEncoder;
fParams.fPeriodSize = fRequest.buffer_size; fParams.fPeriodSize = fRequest.buffer_size;
fParams.fSampleRate = fRequest.sample_rate; fParams.fSampleRate = fRequest.sample_rate;
// Close request socket // Close request socket
fSocket.Close(); fSocket.Close();
// Network slave init // Network slave init
if (!JackNetMasterInterface::Init()) if (!JackNetMasterInterface::Init())
return -1; return -1;
@@ -279,22 +279,22 @@ struct JackNetExtMaster : public JackNetMasterInterface {
// Set global parameters // Set global parameters
if (!SetParams()) if (!SetParams())
return -1; return -1;
AllocPorts(); AllocPorts();
return 0; return 0;
} }
int Close() int Close()
{ {
fSocket.Close(); fSocket.Close();
FreePorts(); FreePorts();
return 0; return 0;
} }
void AllocPorts() void AllocPorts()
{ {
unsigned int port_index; unsigned int port_index;
// Set buffers // Set buffers
if (fParams.fSendAudioChannels > 0) { if (fParams.fSendAudioChannels > 0) {
fAudioCaptureBuffer = new float*[fParams.fSendAudioChannels]; fAudioCaptureBuffer = new float*[fParams.fSendAudioChannels];
@@ -303,7 +303,7 @@ struct JackNetExtMaster : public JackNetMasterInterface {
fNetAudioCaptureBuffer->SetBuffer(port_index, fAudioCaptureBuffer[port_index]); fNetAudioCaptureBuffer->SetBuffer(port_index, fAudioCaptureBuffer[port_index]);
} }
} }
if (fParams.fSendMidiChannels > 0) { if (fParams.fSendMidiChannels > 0) {
fMidiCaptureBuffer = new JackMidiBuffer*[fParams.fSendMidiChannels]; fMidiCaptureBuffer = new JackMidiBuffer*[fParams.fSendMidiChannels];
for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) { for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) {
@@ -311,15 +311,15 @@ struct JackNetExtMaster : public JackNetMasterInterface {
fNetMidiCaptureBuffer->SetBuffer(port_index, fMidiCaptureBuffer[port_index]); fNetMidiCaptureBuffer->SetBuffer(port_index, fMidiCaptureBuffer[port_index]);
} }
} }
if (fParams.fReturnAudioChannels > 0) { if (fParams.fReturnAudioChannels > 0) {
fAudioPlaybackBuffer = new float*[fParams.fReturnAudioChannels]; fAudioPlaybackBuffer = new float*[fParams.fReturnAudioChannels];
for (port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++) { for (port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++) {
fAudioPlaybackBuffer[port_index] = new float[fParams.fPeriodSize]; fAudioPlaybackBuffer[port_index] = new float[fParams.fPeriodSize];
fNetAudioPlaybackBuffer->SetBuffer(port_index, fAudioPlaybackBuffer[port_index]); fNetAudioPlaybackBuffer->SetBuffer(port_index, fAudioPlaybackBuffer[port_index]);
}
}
} }
if (fParams.fReturnMidiChannels > 0) { if (fParams.fReturnMidiChannels > 0) {
fMidiPlaybackBuffer = new JackMidiBuffer*[fParams.fReturnMidiChannels]; fMidiPlaybackBuffer = new JackMidiBuffer*[fParams.fReturnMidiChannels];
for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) { for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) {
@@ -328,18 +328,18 @@ struct JackNetExtMaster : public JackNetMasterInterface {
} }
} }
} }
void FreePorts() void FreePorts()
{ {
unsigned int port_index; unsigned int port_index;
if (fAudioPlaybackBuffer) { if (fAudioPlaybackBuffer) {
for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++) for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++)
delete[] fAudioPlaybackBuffer[port_index]; delete[] fAudioPlaybackBuffer[port_index];
delete[] fAudioPlaybackBuffer; delete[] fAudioPlaybackBuffer;
fAudioPlaybackBuffer = NULL; fAudioPlaybackBuffer = NULL;
} }
if (fMidiPlaybackBuffer) { if (fMidiPlaybackBuffer) {
for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++)
delete[] (fMidiPlaybackBuffer[port_index]); delete[] (fMidiPlaybackBuffer[port_index]);
@@ -353,7 +353,7 @@ struct JackNetExtMaster : public JackNetMasterInterface {
delete[] fAudioCaptureBuffer; delete[] fAudioCaptureBuffer;
fAudioCaptureBuffer = NULL; fAudioCaptureBuffer = NULL;
} }
if (fMidiCaptureBuffer) { if (fMidiCaptureBuffer) {
for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++)
delete[] fMidiCaptureBuffer[port_index]; delete[] fMidiCaptureBuffer[port_index];
@@ -361,98 +361,98 @@ struct JackNetExtMaster : public JackNetMasterInterface {
fMidiCaptureBuffer = NULL; fMidiCaptureBuffer = NULL;
} }
} }
int Read(int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer) int Read(int audio_input, float** audio_input_buffer, int midi_input, void** midi_input_buffer)
{ {
try { try {
assert((unsigned int)audio_input == fParams.fReturnAudioChannels); assert((unsigned int)audio_input == fParams.fReturnAudioChannels);
for (int port_index = 0; port_index < audio_input; port_index++) { for (int port_index = 0; port_index < audio_input; port_index++) {
fNetAudioPlaybackBuffer->SetBuffer(port_index, audio_input_buffer[port_index]); fNetAudioPlaybackBuffer->SetBuffer(port_index, audio_input_buffer[port_index]);
} }
for (int port_index = 0; port_index < midi_input; port_index++) { for (int port_index = 0; port_index < midi_input; port_index++) {
fNetMidiPlaybackBuffer->SetBuffer(port_index, ((JackMidiBuffer**)midi_input_buffer)[port_index]); fNetMidiPlaybackBuffer->SetBuffer(port_index, ((JackMidiBuffer**)midi_input_buffer)[port_index]);
} }
if (SyncRecv() == SOCKET_ERROR) if (SyncRecv() == SOCKET_ERROR)
return 0; return 0;


DecodeSyncPacket(); DecodeSyncPacket();
return DataRecv(); return DataRecv();
} catch (JackNetException& e) { } catch (JackNetException& e) {
jack_error("Connection lost."); jack_error("Connection lost.");
return -1; return -1;
}
}
} }


int Write(int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer) int Write(int audio_output, float** audio_output_buffer, int midi_output, void** midi_output_buffer)
{ {
try { try {
assert((unsigned int)audio_output == fParams.fSendAudioChannels); assert((unsigned int)audio_output == fParams.fSendAudioChannels);
for (int port_index = 0; port_index < audio_output; port_index++) { for (int port_index = 0; port_index < audio_output; port_index++) {
fNetAudioCaptureBuffer->SetBuffer(port_index, audio_output_buffer[port_index]); fNetAudioCaptureBuffer->SetBuffer(port_index, audio_output_buffer[port_index]);
} }
for (int port_index = 0; port_index < midi_output; port_index++) { for (int port_index = 0; port_index < midi_output; port_index++) {
fNetMidiCaptureBuffer->SetBuffer(port_index, ((JackMidiBuffer**)midi_output_buffer)[port_index]); fNetMidiCaptureBuffer->SetBuffer(port_index, ((JackMidiBuffer**)midi_output_buffer)[port_index]);
} }
EncodeSyncPacket(); EncodeSyncPacket();
if (SyncSend() == SOCKET_ERROR) if (SyncSend() == SOCKET_ERROR)
return SOCKET_ERROR; return SOCKET_ERROR;


return DataSend(); return DataSend();
} catch (JackNetException& e) { } catch (JackNetException& e) {
jack_error("Connection lost."); jack_error("Connection lost.");
return -1; return -1;
}
}
} }
// Transport // Transport
void EncodeTransportData() void EncodeTransportData()
{} {}
void DecodeTransportData() void DecodeTransportData()
{} {}
}; };


struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterface { struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterface {
JackThread fThread; JackThread fThread;
JackNetSlaveProcessCallback fProcessCallback; JackNetSlaveProcessCallback fProcessCallback;
void* fProcessArg; void* fProcessArg;
JackNetSlaveShutdownCallback fShutdownCallback; JackNetSlaveShutdownCallback fShutdownCallback;
void* fShutdownArg; void* fShutdownArg;
JackNetSlaveBufferSizeCallback fBufferSizeCallback; JackNetSlaveBufferSizeCallback fBufferSizeCallback;
void* fBufferSizeArg; void* fBufferSizeArg;
JackNetSlaveSampleRateCallback fSampleRateCallback; JackNetSlaveSampleRateCallback fSampleRateCallback;
void* fSampleRateArg; void* fSampleRateArg;
//sample buffers //sample buffers
float** fAudioCaptureBuffer; float** fAudioCaptureBuffer;
float** fAudioPlaybackBuffer; float** fAudioPlaybackBuffer;
JackMidiBuffer** fMidiCaptureBuffer; JackMidiBuffer** fMidiCaptureBuffer;
JackMidiBuffer** fMidiPlaybackBuffer; JackMidiBuffer** fMidiPlaybackBuffer;
int fConnectTimeOut; int fConnectTimeOut;
JackNetExtSlave(const char* ip,
int port,
const char* name,
JackNetExtSlave(const char* ip,
int port,
const char* name,
jack_slave_t* request) jack_slave_t* request)
:fThread(this), :fThread(this),
fProcessCallback(NULL),fProcessArg(NULL),
fProcessCallback(NULL),fProcessArg(NULL),
fShutdownCallback(NULL), fShutdownArg(NULL), fShutdownCallback(NULL), fShutdownArg(NULL),
fBufferSizeCallback(NULL), fBufferSizeArg(NULL), fBufferSizeCallback(NULL), fBufferSizeArg(NULL),
fSampleRateCallback(NULL), fSampleRateArg(NULL), fSampleRateCallback(NULL), fSampleRateArg(NULL),
@@ -460,11 +460,11 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
fMidiCaptureBuffer(NULL), fMidiPlaybackBuffer(NULL) fMidiCaptureBuffer(NULL), fMidiPlaybackBuffer(NULL)
{ {
char host_name[JACK_CLIENT_NAME_SIZE]; char host_name[JACK_CLIENT_NAME_SIZE];
// Request parameters // Request parameters
assert(strlen(ip) < 32); assert(strlen(ip) < 32);
strcpy(fMulticastIP, ip); strcpy(fMulticastIP, ip);
fParams.fMtu = request->mtu; fParams.fMtu = request->mtu;
fParams.fTransportSync = 0; fParams.fTransportSync = 0;
fParams.fSendAudioChannels = request->audio_input; fParams.fSendAudioChannels = request->audio_input;
@@ -475,66 +475,66 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
fParams.fSampleEncoder = request->encoder; fParams.fSampleEncoder = request->encoder;
fParams.fKBps = request->kbps; fParams.fKBps = request->kbps;
fConnectTimeOut = request->time_out; fConnectTimeOut = request->time_out;
// Create name with hostname and client name // Create name with hostname and client name
GetHostName(host_name, JACK_CLIENT_NAME_SIZE); GetHostName(host_name, JACK_CLIENT_NAME_SIZE);
snprintf(fParams.fName, JACK_CLIENT_NAME_SIZE, "%s_%s", host_name, name); snprintf(fParams.fName, JACK_CLIENT_NAME_SIZE, "%s_%s", host_name, name);
fSocket.GetName(fParams.fSlaveNetName); fSocket.GetName(fParams.fSlaveNetName);
// Set the socket parameters // Set the socket parameters
fSocket.SetPort(port); fSocket.SetPort(port);
fSocket.SetAddress(fMulticastIP, port); fSocket.SetAddress(fMulticastIP, port);
} }
virtual ~JackNetExtSlave() virtual ~JackNetExtSlave()
{} {}
int Open(jack_master_t* result) int Open(jack_master_t* result)
{ {
// Init network connection // Init network connection
if (!JackNetSlaveInterface::InitConnection(fConnectTimeOut))
if (!JackNetSlaveInterface::InitConnection(fConnectTimeOut))
return -1; return -1;
// Then set global parameters // Then set global parameters
if (!SetParams()) if (!SetParams())
return -1; return -1;
// Set result // Set result
if (result != NULL) { if (result != NULL) {
result->buffer_size = fParams.fPeriodSize; result->buffer_size = fParams.fPeriodSize;
result->sample_rate = fParams.fSampleRate; result->sample_rate = fParams.fSampleRate;
strcpy(result->master_name, fParams.fMasterNetName); strcpy(result->master_name, fParams.fMasterNetName);
} }
AllocPorts(); AllocPorts();
return 0; return 0;
} }
int Restart() int Restart()
{ {
// If shutdown cb is set, then call it // If shutdown cb is set, then call it
if (fShutdownCallback) if (fShutdownCallback)
fShutdownCallback(fShutdownArg); fShutdownCallback(fShutdownArg);
// Init complete network connection // Init complete network connection
if (!JackNetSlaveInterface::Init()) if (!JackNetSlaveInterface::Init())
return -1; return -1;
// Then set global parameters // Then set global parameters
if (!SetParams()) if (!SetParams())
return -1; return -1;
// We need to notify possibly new buffer size and sample rate (see Execute) // We need to notify possibly new buffer size and sample rate (see Execute)
if (fBufferSizeCallback)
if (fBufferSizeCallback)
fBufferSizeCallback(fParams.fPeriodSize, fBufferSizeArg); fBufferSizeCallback(fParams.fPeriodSize, fBufferSizeArg);
if (fSampleRateCallback)
if (fSampleRateCallback)
fSampleRateCallback(fParams.fSampleRate, fSampleRateArg); fSampleRateCallback(fParams.fSampleRate, fSampleRateArg);
AllocPorts(); AllocPorts();
return 0; return 0;
} }
int Close() int Close()
{ {
fSocket.Close(); fSocket.Close();
@@ -545,44 +545,44 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
void AllocPorts() void AllocPorts()
{ {
unsigned int port_index; unsigned int port_index;
// Set buffers // Set buffers
fAudioCaptureBuffer = new float*[fParams.fSendAudioChannels]; fAudioCaptureBuffer = new float*[fParams.fSendAudioChannels];
for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++) { for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++) {
fAudioCaptureBuffer[port_index] = new float[fParams.fPeriodSize]; fAudioCaptureBuffer[port_index] = new float[fParams.fPeriodSize];
fNetAudioCaptureBuffer->SetBuffer(port_index, fAudioCaptureBuffer[port_index]); fNetAudioCaptureBuffer->SetBuffer(port_index, fAudioCaptureBuffer[port_index]);
} }
fMidiCaptureBuffer = new JackMidiBuffer*[fParams.fSendMidiChannels]; fMidiCaptureBuffer = new JackMidiBuffer*[fParams.fSendMidiChannels];
for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) { for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) {
fMidiCaptureBuffer[port_index] = (JackMidiBuffer*)new float[fParams.fPeriodSize]; fMidiCaptureBuffer[port_index] = (JackMidiBuffer*)new float[fParams.fPeriodSize];
fNetMidiCaptureBuffer->SetBuffer(port_index, fMidiCaptureBuffer[port_index]); fNetMidiCaptureBuffer->SetBuffer(port_index, fMidiCaptureBuffer[port_index]);
} }
fAudioPlaybackBuffer = new float*[fParams.fReturnAudioChannels]; fAudioPlaybackBuffer = new float*[fParams.fReturnAudioChannels];
for (port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++) { for (port_index = 0; port_index < fParams.fReturnAudioChannels; port_index++) {
fAudioPlaybackBuffer[port_index] = new float[fParams.fPeriodSize]; fAudioPlaybackBuffer[port_index] = new float[fParams.fPeriodSize];
fNetAudioPlaybackBuffer->SetBuffer(port_index, fAudioPlaybackBuffer[port_index]); fNetAudioPlaybackBuffer->SetBuffer(port_index, fAudioPlaybackBuffer[port_index]);
}
}
fMidiPlaybackBuffer = new JackMidiBuffer*[fParams.fReturnMidiChannels]; fMidiPlaybackBuffer = new JackMidiBuffer*[fParams.fReturnMidiChannels];
for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) { for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) {
fMidiPlaybackBuffer[port_index] = (JackMidiBuffer*)new float[fParams.fPeriodSize]; fMidiPlaybackBuffer[port_index] = (JackMidiBuffer*)new float[fParams.fPeriodSize];
fNetMidiPlaybackBuffer->SetBuffer(port_index, fMidiPlaybackBuffer[port_index]); fNetMidiPlaybackBuffer->SetBuffer(port_index, fMidiPlaybackBuffer[port_index]);
} }
} }
void FreePorts() void FreePorts()
{ {
unsigned int port_index; unsigned int port_index;
if (fAudioCaptureBuffer) { if (fAudioCaptureBuffer) {
for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++) for (port_index = 0; port_index < fParams.fSendAudioChannels; port_index++)
delete[] fAudioCaptureBuffer[port_index]; delete[] fAudioCaptureBuffer[port_index];
delete[] fAudioCaptureBuffer; delete[] fAudioCaptureBuffer;
fAudioCaptureBuffer = NULL; fAudioCaptureBuffer = NULL;
} }
if (fMidiCaptureBuffer) { if (fMidiCaptureBuffer) {
for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++) for (port_index = 0; port_index < fParams.fSendMidiChannels; port_index++)
delete[] (fMidiCaptureBuffer[port_index]); delete[] (fMidiCaptureBuffer[port_index]);
@@ -596,7 +596,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
delete[] fAudioPlaybackBuffer; delete[] fAudioPlaybackBuffer;
fAudioPlaybackBuffer = NULL; fAudioPlaybackBuffer = NULL;
} }
if (fMidiPlaybackBuffer) { if (fMidiPlaybackBuffer) {
for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++) for (port_index = 0; port_index < fParams.fReturnMidiChannels; port_index++)
delete[] fMidiPlaybackBuffer[port_index]; delete[] fMidiPlaybackBuffer[port_index];
@@ -604,21 +604,21 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
fMidiPlaybackBuffer = NULL; fMidiPlaybackBuffer = NULL;
} }
} }
// Transport // Transport
void EncodeTransportData() void EncodeTransportData()
{} {}
void DecodeTransportData() void DecodeTransportData()
{} {}
bool Init()
bool Init()
{ {
// Will do "something" on OSX only... // Will do "something" on OSX only...
fThread.SetParams(float(fParams.fPeriodSize) / float(fParams.fSampleRate) * 1000000, 100 * 1000, 500 * 1000);
fThread.SetParams(float(fParams.fPeriodSize) / float(fParams.fSampleRate) * 1000000, 100 * 1000, 500 * 1000);
return (fThread.AcquireRealTime(80) == 0); // TODO: get a value from the server return (fThread.AcquireRealTime(80) == 0); // TODO: get a value from the server
} }
bool Execute() bool Execute()
{ {
try { try {
@@ -629,7 +629,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
} }
return false; return false;
} catch (JackNetException& e) { } catch (JackNetException& e) {
// Otherwise just restart... // Otherwise just restart...
e.PrintMessage(); e.PrintMessage();
fThread.DropRealTime(); fThread.DropRealTime();
@@ -644,7 +644,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
} }
} }
} }
int Read() int Read()
{ {
// Don't return -1 in case of sync recv failure // Don't return -1 in case of sync recv failure
@@ -659,31 +659,31 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
int Write() int Write()
{ {
EncodeSyncPacket(); EncodeSyncPacket();
if (SyncSend() == SOCKET_ERROR) if (SyncSend() == SOCKET_ERROR)
return SOCKET_ERROR; return SOCKET_ERROR;


return DataSend(); return DataSend();
} }
int Process()
int Process()
{ {
// Read data from the network // Read data from the network
// in case of fatal network error, stop the process // in case of fatal network error, stop the process
if (Read() == SOCKET_ERROR) if (Read() == SOCKET_ERROR)
return SOCKET_ERROR; return SOCKET_ERROR;
fProcessCallback(fParams.fPeriodSize,
fParams.fSendAudioChannels,
fAudioCaptureBuffer,
fProcessCallback(fParams.fPeriodSize,
fParams.fSendAudioChannels,
fAudioCaptureBuffer,
fParams.fSendMidiChannels, fParams.fSendMidiChannels,
(void**)fMidiCaptureBuffer,
(void**)fMidiCaptureBuffer,
fParams.fReturnAudioChannels, fParams.fReturnAudioChannels,
fAudioPlaybackBuffer,
fAudioPlaybackBuffer,
fParams.fReturnMidiChannels, fParams.fReturnMidiChannels,
(void**)fMidiPlaybackBuffer,
fProcessArg);
(void**)fMidiPlaybackBuffer,
fProcessArg);
// Then write data to network // Then write data to network
// in case of failure, stop process // in case of failure, stop process
if (Write() == SOCKET_ERROR) if (Write() == SOCKET_ERROR)
@@ -691,14 +691,14 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf


return 0; return 0;
} }
int Start() int Start()
{ {
// Finish connection..
// Finish connection..
if (!JackNetSlaveInterface::InitRendering()) { if (!JackNetSlaveInterface::InitRendering()) {
return -1; return -1;
} }
return (fProcessCallback == 0) ? -1 : fThread.StartSync(); return (fProcessCallback == 0) ? -1 : fThread.StartSync();
} }


@@ -706,7 +706,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
{ {
return (fProcessCallback == 0) ? -1 : fThread.Kill(); return (fProcessCallback == 0) ? -1 : fThread.Kill();
} }
// Callback // Callback
int SetProcessCallback(JackNetSlaveProcessCallback net_callback, void *arg) int SetProcessCallback(JackNetSlaveProcessCallback net_callback, void *arg)
{ {
@@ -729,7 +729,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
return 0; return 0;
} }
} }
int SetBufferSizeCallback(JackNetSlaveBufferSizeCallback bufsize_callback, void *arg) int SetBufferSizeCallback(JackNetSlaveBufferSizeCallback bufsize_callback, void *arg)
{ {
if (fThread.GetStatus() == JackThread::kRunning) { if (fThread.GetStatus() == JackThread::kRunning) {
@@ -740,7 +740,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
return 0; return 0;
} }
} }
int SetSampleRateCallback(JackNetSlaveSampleRateCallback samplerate_callback, void *arg) int SetSampleRateCallback(JackNetSlaveSampleRateCallback samplerate_callback, void *arg)
{ {
if (fThread.GetStatus() == JackThread::kRunning) { if (fThread.GetStatus() == JackThread::kRunning) {
@@ -756,9 +756,8 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf


struct JackNetAdapter : public JackAudioAdapterInterface { struct JackNetAdapter : public JackAudioAdapterInterface {



JackNetAdapter(int input, int output, JackNetAdapter(int input, int output,
jack_nframes_t host_buffer_size,
jack_nframes_t host_buffer_size,
jack_nframes_t host_sample_rate, jack_nframes_t host_sample_rate,
jack_nframes_t adapted_buffer_size, jack_nframes_t adapted_buffer_size,
jack_nframes_t adapted_sample_rate) jack_nframes_t adapted_sample_rate)
@@ -768,21 +767,21 @@ struct JackNetAdapter : public JackAudioAdapterInterface {
fPlaybackChannels = output; fPlaybackChannels = output;
Create(); Create();
} }
void Create() void Create()
{ {
//ringbuffers //ringbuffers
if (fCaptureChannels > 0) if (fCaptureChannels > 0)
fCaptureRingBuffer = new JackResampler*[fCaptureChannels]; fCaptureRingBuffer = new JackResampler*[fCaptureChannels];
if (fPlaybackChannels > 0) if (fPlaybackChannels > 0)
fPlaybackRingBuffer = new JackResampler*[fPlaybackChannels]; fPlaybackRingBuffer = new JackResampler*[fPlaybackChannels];
if (fAdaptative) { if (fAdaptative) {
AdaptRingBufferSize(); AdaptRingBufferSize();
jack_info("Ringbuffer automatic adaptative mode size = %d frames", fRingbufferCurSize); jack_info("Ringbuffer automatic adaptative mode size = %d frames", fRingbufferCurSize);
} else { } else {
if (fRingbufferCurSize > DEFAULT_RB_SIZE)
if (fRingbufferCurSize > DEFAULT_RB_SIZE)
fRingbufferCurSize = DEFAULT_RB_SIZE; fRingbufferCurSize = DEFAULT_RB_SIZE;
jack_info("Fixed ringbuffer size = %d frames", fRingbufferCurSize); jack_info("Fixed ringbuffer size = %d frames", fRingbufferCurSize);
} }
@@ -806,7 +805,7 @@ struct JackNetAdapter : public JackAudioAdapterInterface {
{ {
Destroy(); Destroy();
} }
void Flush() void Flush()
{ {
for (int i = 0; i < fCaptureChannels; i++ ) { for (int i = 0; i < fCaptureChannels; i++ ) {
@@ -816,7 +815,7 @@ struct JackNetAdapter : public JackAudioAdapterInterface {
fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize); fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize);
} }
} }
}; };




@@ -826,7 +825,7 @@ using namespace Jack;


SERVER_EXPORT jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result) SERVER_EXPORT jack_net_slave_t* jack_net_slave_open(const char* ip, int port, const char* name, jack_slave_t* request, jack_master_t* result)
{ {
JackNetExtSlave* slave = new JackNetExtSlave(ip, port, name, request);
JackNetExtSlave* slave = new JackNetExtSlave(ip, port, name, request);
if (slave->Open(result) == 0) { if (slave->Open(result) == 0) {
return (jack_net_slave_t*)slave; return (jack_net_slave_t*)slave;
} else { } else {
@@ -842,7 +841,7 @@ SERVER_EXPORT int jack_net_slave_close(jack_net_slave_t* net)
delete slave; delete slave;
return 0; return 0;
} }
SERVER_EXPORT int jack_set_net_slave_process_callback(jack_net_slave_t* net, JackNetSlaveProcessCallback net_callback, void *arg) SERVER_EXPORT int jack_set_net_slave_process_callback(jack_net_slave_t* net, JackNetSlaveProcessCallback net_callback, void *arg)
{ {
JackNetExtSlave* slave = (JackNetExtSlave*)net; JackNetExtSlave* slave = (JackNetExtSlave*)net;
@@ -883,7 +882,7 @@ SERVER_EXPORT int jack_set_net_slave_shutdown_callback(jack_net_slave_t *net, Ja


SERVER_EXPORT jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result) SERVER_EXPORT jack_net_master_t* jack_net_master_open(const char* ip, int port, const char* name, jack_master_t* request, jack_slave_t* result)
{ {
JackNetExtMaster* master = new JackNetExtMaster(ip, port, name, request);
JackNetExtMaster* master = new JackNetExtMaster(ip, port, name, request);
if (master->Open(result) == 0) { if (master->Open(result) == 0) {
return (jack_net_master_t*)master; return (jack_net_master_t*)master;
} else { } else {
@@ -914,7 +913,7 @@ SERVER_EXPORT int jack_net_master_send(jack_net_master_t* net, int audio_output,
// Adapter API // Adapter API


SERVER_EXPORT jack_adapter_t* jack_create_adapter(int input, int output, SERVER_EXPORT jack_adapter_t* jack_create_adapter(int input, int output,
jack_nframes_t host_buffer_size,
jack_nframes_t host_buffer_size,
jack_nframes_t host_sample_rate, jack_nframes_t host_sample_rate,
jack_nframes_t adapted_buffer_size, jack_nframes_t adapted_buffer_size,
jack_nframes_t adapted_sample_rate) jack_nframes_t adapted_sample_rate)
@@ -953,14 +952,14 @@ static void jack_format_and_log(int level, const char *prefix, const char *fmt,
{ {
char buffer[300]; char buffer[300];
size_t len; size_t len;
if (prefix != NULL) { if (prefix != NULL) {
len = strlen(prefix); len = strlen(prefix);
memcpy(buffer, prefix, len); memcpy(buffer, prefix, len);
} else { } else {
len = 0; len = 0;
} }
vsnprintf(buffer + len, sizeof(buffer) - len, fmt, ap); vsnprintf(buffer + len, sizeof(buffer) - len, fmt, ap);
printf(buffer); printf(buffer);
printf("\n"); printf("\n");


+ 7
- 7
common/JackNetInterface.cpp View File

@@ -250,16 +250,16 @@ namespace Jack
switch (fParams.fSampleEncoder) { switch (fParams.fSampleEncoder) {
case JackFloatEncoder: case JackFloatEncoder:
fNetAudioCaptureBuffer = new NetFloatAudioBuffer ( &fParams, fParams.fSendAudioChannels, fTxData );
fNetAudioCaptureBuffer = new NetFloatAudioBuffer(&fParams, fParams.fSendAudioChannels, fTxData);
break; break;
case JackIntEncoder: case JackIntEncoder:
fNetAudioCaptureBuffer = new NetIntAudioBuffer ( &fParams, fParams.fSendAudioChannels, fTxData );
fNetAudioCaptureBuffer = new NetIntAudioBuffer(&fParams, fParams.fSendAudioChannels, fTxData);
break; break;
case JackCeltEncoder: case JackCeltEncoder:
#ifdef CELT #ifdef CELT
fNetAudioCaptureBuffer = new NetCeltAudioBuffer ( &fParams, fParams.fSendAudioChannels, fTxData, fParams.fKBps );
fNetAudioCaptureBuffer = new NetCeltAudioBuffer(&fParams, fParams.fSendAudioChannels, fTxData, fParams.fKBps);
#endif #endif
break; break;
} }
@@ -270,16 +270,16 @@ namespace Jack
switch (fParams.fSampleEncoder) { switch (fParams.fSampleEncoder) {
case JackFloatEncoder: case JackFloatEncoder:
fNetAudioPlaybackBuffer = new NetFloatAudioBuffer ( &fParams, fParams.fReturnAudioChannels, fRxData );
fNetAudioPlaybackBuffer = new NetFloatAudioBuffer(&fParams, fParams.fReturnAudioChannels, fRxData);
break; break;
case JackIntEncoder: case JackIntEncoder:
fNetAudioPlaybackBuffer = new NetIntAudioBuffer ( &fParams, fParams.fReturnAudioChannels, fRxData );
fNetAudioPlaybackBuffer = new NetIntAudioBuffer(&fParams, fParams.fReturnAudioChannels, fRxData);
break; break;
case JackCeltEncoder: case JackCeltEncoder:
#ifdef CELT #ifdef CELT
fNetAudioPlaybackBuffer = new NetCeltAudioBuffer ( &fParams, fParams.fReturnAudioChannels, fRxData, fParams.fKBps );
fNetAudioPlaybackBuffer = new NetCeltAudioBuffer(&fParams, fParams.fReturnAudioChannels, fRxData, fParams.fKBps);
#endif #endif
break; break;
} }
@@ -552,7 +552,7 @@ namespace Jack
fRxHeader.fCycle = rx_head->fCycle; fRxHeader.fCycle = rx_head->fCycle;
fRxHeader.fSubCycle = rx_head->fSubCycle; fRxHeader.fSubCycle = rx_head->fSubCycle;
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; fRxHeader.fIsLastPckt = rx_head->fIsLastPckt;
fNetAudioPlaybackBuffer->RenderFromNetwork (rx_head->fCycle, rx_head->fSubCycle, rx_bytes - HEADER_SIZE);
fNetAudioPlaybackBuffer->RenderFromNetwork(rx_head->fCycle, rx_head->fSubCycle, rx_bytes - HEADER_SIZE);
// Last audio packet is received, so finish rendering... // Last audio packet is received, so finish rendering...
if (fRxHeader.fIsLastPckt) if (fRxHeader.fIsLastPckt)
fNetAudioPlaybackBuffer->RenderToJackPorts(); fNetAudioPlaybackBuffer->RenderToJackPorts();


+ 1
- 1
common/jack/net.h View File

@@ -55,7 +55,7 @@ typedef struct {
int audio_output; // to master or from slave int audio_output; // to master or from slave
int midi_input; // from master or to slave int midi_input; // from master or to slave
int midi_output; // to master or from slave int midi_output; // to master or from slave
int mtu; // Network Maximum Transmission Unit
int mtu; // network Maximum Transmission Unit
int time_out; // in second, -1 means in infinite int time_out; // in second, -1 means in infinite
int encoder; // Encoder type (one of JackNetEncoder) int encoder; // Encoder type (one of JackNetEncoder)
int kbps; // KB per second for CELT encoder int kbps; // KB per second for CELT encoder


+ 5
- 5
example-clients/netmaster.c View File

@@ -45,11 +45,11 @@ static void
usage () usage ()
{ {
fprintf (stderr, "\n" fprintf (stderr, "\n"
"usage: jack_net_master \n"
" [ -b buffer size (default = %d) ]\n"
" [ -r sample rate (default = %d) ]\n"
" [ -a hostname (default = %s) ]\n"
" [ -p port (default = %d) ]\n", BUFFER_SIZE, SAMPLE_RATE, DEFAULT_MULTICAST_IP, DEFAULT_PORT);
"usage: jack_net_master \n"
" [ -b buffer size (default = %d) ]\n"
" [ -r sample rate (default = %d) ]\n"
" [ -a hostname (default = %s) ]\n"
" [ -p port (default = %d) ]\n", BUFFER_SIZE, SAMPLE_RATE, DEFAULT_MULTICAST_IP, DEFAULT_PORT);
} }


int int


+ 14
- 14
example-clients/netslave.c View File

@@ -42,11 +42,11 @@ static void
usage () usage ()
{ {
fprintf (stderr, "\n" fprintf (stderr, "\n"
"usage: jack_net_slave \n"
" [ -C capture channels (default = 2)]\n"
" [ -P playback channels (default = 2) ]\n"
" [ -a hostname (default = %s) ]\n"
" [ -p port (default = %d)]\n", DEFAULT_MULTICAST_IP, DEFAULT_PORT);
"usage: jack_net_slave \n"
" [ -C capture channels (default = 2)]\n"
" [ -P playback channels (default = 2) ]\n"
" [ -a hostname (default = %s) ]\n"
" [ -p port (default = %d)]\n", DEFAULT_MULTICAST_IP, DEFAULT_PORT);
} }


static void net_shutdown(void* data) static void net_shutdown(void* data)
@@ -55,15 +55,15 @@ static void net_shutdown(void* data)
} }


static int net_process(jack_nframes_t buffer_size, static int net_process(jack_nframes_t buffer_size,
int audio_input,
float** audio_input_buffer,
int midi_input,
void** midi_input_buffer,
int audio_output,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
void* data)
int audio_input,
float** audio_input_buffer,
int midi_input,
void** midi_input_buffer,
int audio_output,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
void* data)
{ {
int i; int i;


+ 0
- 4
macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj View File

@@ -85,7 +85,6 @@
4BCB37C8112D647C008C7BC1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 4BCB37C8112D647C008C7BC1 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
4BCB37C9112D647C008C7BC1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 4BCB37C9112D647C008C7BC1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
4BCB37CA112D647C008C7BC1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; }; 4BCB37CA112D647C008C7BC1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B1A95750F49CEAB00D3626B /* AudioToolbox.framework */; };
4BCB37D6112D64B4008C7BC1 /* HardwareClock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCB37D5112D64B4008C7BC1 /* HardwareClock.cpp */; };
4BCB37D9112D64D8008C7BC1 /* iphone-faust.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */; }; 4BCB37D9112D64D8008C7BC1 /* iphone-faust.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */; };
4BCF75DA10BC2FD90082C526 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 4BCF75DA10BC2FD90082C526 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; };
4BCF75DC10BC2FD90082C526 /* JackMachThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1A93550F49ACFC00D3626B /* JackMachThread.cpp */; }; 4BCF75DC10BC2FD90082C526 /* JackMachThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1A93550F49ACFC00D3626B /* JackMachThread.cpp */; };
@@ -181,7 +180,6 @@
4BBDC8F90F5420C000465F9C /* freeverb.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = freeverb.mm; sourceTree = SOURCE_ROOT; }; 4BBDC8F90F5420C000465F9C /* freeverb.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = freeverb.mm; sourceTree = SOURCE_ROOT; };
4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iPhoneNetMasterAppl-Info.plist"; sourceTree = "<group>"; }; 4BC9C1D31135AA1800D22670 /* iPhoneNetMasterAppl-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iPhoneNetMasterAppl-Info.plist"; sourceTree = "<group>"; };
4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaust.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCB37CE112D647C008C7BC1 /* iPhoneFaust.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneFaust.app; sourceTree = BUILT_PRODUCTS_DIR; };
4BCB37D5112D64B4008C7BC1 /* HardwareClock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HardwareClock.cpp; sourceTree = SOURCE_ROOT; };
4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "iphone-faust.mm"; sourceTree = SOURCE_ROOT; }; 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "iphone-faust.mm"; sourceTree = SOURCE_ROOT; };
4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneThruNet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BCF75F210BC2FD90082C526 /* iPhoneThruNet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iPhoneThruNet.app; sourceTree = BUILT_PRODUCTS_DIR; };
4BCF75F610BC30140082C526 /* audio_thru.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_thru.mm; sourceTree = SOURCE_ROOT; }; 4BCF75F610BC30140082C526 /* audio_thru.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_thru.mm; sourceTree = SOURCE_ROOT; };
@@ -305,7 +303,6 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */, 4BCB37D8112D64D8008C7BC1 /* iphone-faust.mm */,
4BCB37D5112D64B4008C7BC1 /* HardwareClock.cpp */,
4BF15E2411356A3E00B36B9A /* CAHostTimeBase.cpp */, 4BF15E2411356A3E00B36B9A /* CAHostTimeBase.cpp */,
4BF15F7711357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp */, 4BF15F7711357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp */,
29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97315FDCFA39411CA2CEA /* Other Sources */,
@@ -703,7 +700,6 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
4BCB37D6112D64B4008C7BC1 /* HardwareClock.cpp in Sources */,
4BCB37D9112D64D8008C7BC1 /* iphone-faust.mm in Sources */, 4BCB37D9112D64D8008C7BC1 /* iphone-faust.mm in Sources */,
4BF15E2A11356A3E00B36B9A /* CAHostTimeBase.cpp in Sources */, 4BF15E2A11356A3E00B36B9A /* CAHostTimeBase.cpp in Sources */,
4BF15F7D11357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp in Sources */, 4BF15F7D11357A0E00B36B9A /* TiPhoneCoreAudioRenderer.cpp in Sources */,


Loading…
Cancel
Save