Browse Source

Distinguish SYNC_PACKET_ERROR and DATA_PACKET_ERROR in NetJack2.

tags/v1.9.10
Stephane Letz 12 years ago
parent
commit
dbf9b71580
8 changed files with 47 additions and 15 deletions
  1. +34
    -4
      common/JackNetAPI.cpp
  2. +1
    -1
      common/JackNetAdapter.cpp
  3. +2
    -2
      common/JackNetDriver.cpp
  4. +3
    -3
      common/JackNetInterface.cpp
  5. +2
    -2
      common/JackNetManager.cpp
  6. +1
    -1
      common/JackNetTool.cpp
  7. +2
    -1
      common/JackNetTool.h
  8. +2
    -1
      common/jack/net.h

+ 34
- 4
common/JackNetAPI.cpp View File

@@ -86,6 +86,7 @@ extern "C"
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);
typedef int (*JackNetSlaveRestartCallback) (void* data); typedef int (*JackNetSlaveRestartCallback) (void* data);
typedef int (*JackNetSlaveErrorCallback) (int error_code, void* data);


LIB_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); LIB_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);
LIB_EXPORT int jack_net_slave_close(jack_net_slave_t* net); LIB_EXPORT int jack_net_slave_close(jack_net_slave_t* net);
@@ -99,6 +100,7 @@ extern "C"
LIB_EXPORT int jack_set_net_slave_sample_rate_callback(jack_net_slave_t* net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg); LIB_EXPORT int jack_set_net_slave_sample_rate_callback(jack_net_slave_t* net, JackNetSlaveSampleRateCallback samplerate_callback, void *arg);
LIB_EXPORT int jack_set_net_slave_shutdown_callback(jack_net_slave_t* net, JackNetSlaveShutdownCallback shutdown_callback, void *arg); LIB_EXPORT int jack_set_net_slave_shutdown_callback(jack_net_slave_t* net, JackNetSlaveShutdownCallback shutdown_callback, void *arg);
LIB_EXPORT int jack_set_net_slave_restart_callback(jack_net_slave_t* net, JackNetSlaveRestartCallback restart_callback, void *arg); LIB_EXPORT int jack_set_net_slave_restart_callback(jack_net_slave_t* net, JackNetSlaveRestartCallback restart_callback, void *arg);
LIB_EXPORT int jack_set_net_slave_error_callback(jack_net_slave_t* net, JackNetSlaveErrorCallback error_callback, void *arg);


// NetJack master API // NetJack master API


@@ -435,7 +437,7 @@ struct JackNetExtMaster : public JackNetMasterInterface {
case SOCKET_ERROR: case SOCKET_ERROR:
return res; return res;
case NET_PACKET_ERROR:
case SYNC_PACKET_ERROR:
// since sync packet is incorrect, don't decode it and continue with data // since sync packet is incorrect, don't decode it and continue with data
break; break;
@@ -507,7 +509,10 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
void* fShutdownArg; void* fShutdownArg;
JackNetSlaveRestartCallback fRestartCallback; JackNetSlaveRestartCallback fRestartCallback;
void* fRestartArg;
void* fRestartArg;
JackNetSlaveErrorCallback fErrorCallback;
void* fErrorArg;


JackNetSlaveBufferSizeCallback fBufferSizeCallback; JackNetSlaveBufferSizeCallback fBufferSizeCallback;
void* fBufferSizeArg; void* fBufferSizeArg;
@@ -532,6 +537,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
fProcessCallback(NULL),fProcessArg(NULL), fProcessCallback(NULL),fProcessArg(NULL),
fShutdownCallback(NULL), fShutdownArg(NULL), fShutdownCallback(NULL), fShutdownArg(NULL),
fRestartCallback(NULL), fRestartArg(NULL), fRestartCallback(NULL), fRestartArg(NULL),
fErrorCallback(NULL), fErrorArg(NULL),
fBufferSizeCallback(NULL), fBufferSizeArg(NULL), fBufferSizeCallback(NULL), fBufferSizeArg(NULL),
fSampleRateCallback(NULL), fSampleRateArg(NULL), fSampleRateCallback(NULL), fSampleRateArg(NULL),
fAudioCaptureBuffer(NULL), fAudioPlaybackBuffer(NULL), fAudioCaptureBuffer(NULL), fAudioPlaybackBuffer(NULL),
@@ -806,8 +812,11 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
case SOCKET_ERROR: case SOCKET_ERROR:
return SOCKET_ERROR; return SOCKET_ERROR;
case NET_PACKET_ERROR:
case SYNC_PACKET_ERROR:
// since sync packet is incorrect, don't decode it and continue with data // since sync packet is incorrect, don't decode it and continue with data
if (fErrorCallback) {
fErrorCallback(SYNC_PACKET_ERROR, fErrorArg);
}
break; break;
default: default:
@@ -816,7 +825,11 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
break; break;
} }


return DataRecv();
int res = DataRecv();
if (res == DATA_PACKET_ERROR && fErrorCallback) {
fErrorCallback(DATA_PACKET_ERROR, fErrorArg);
}
return res;
} }


int Write() int Write()
@@ -911,6 +924,17 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
return 0; return 0;
} }
} }
int SetErrorCallback(JackNetSlaveErrorCallback error_callback, void *arg)
{
if (fThread.GetStatus() == JackThread::kRunning) {
return -1;
} else {
fErrorCallback = error_callback;
fErrorArg = arg;
return 0;
}
}


int SetBufferSizeCallback(JackNetSlaveBufferSizeCallback bufsize_callback, void *arg) int SetBufferSizeCallback(JackNetSlaveBufferSizeCallback bufsize_callback, void *arg)
{ {
@@ -1077,6 +1101,12 @@ LIB_EXPORT int jack_set_net_slave_restart_callback(jack_net_slave_t *net, JackNe
return slave->SetRestartCallback(restart_callback, arg); return slave->SetRestartCallback(restart_callback, arg);
} }


LIB_EXPORT int jack_set_net_slave_error_callback(jack_net_slave_t *net, JackNetSlaveErrorCallback error_callback, void *arg)
{
JackNetExtSlave* slave = (JackNetExtSlave*)net;
return slave->SetErrorCallback(error_callback, arg);
}

// Master API // Master API


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


+ 1
- 1
common/JackNetAdapter.cpp View File

@@ -355,7 +355,7 @@ namespace Jack
case SOCKET_ERROR: case SOCKET_ERROR:
return 0; return 0;
case NET_PACKET_ERROR:
case SYNC_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data // Since sync packet is incorrect, don't decode it and continue with data
break; break;


+ 2
- 2
common/JackNetDriver.cpp View File

@@ -569,7 +569,7 @@ namespace Jack
case SOCKET_ERROR: case SOCKET_ERROR:
return SOCKET_ERROR; return SOCKET_ERROR;
case NET_PACKET_ERROR:
case SYNC_PACKET_ERROR:
// since sync packet is incorrect, don't decode it and continue with data // since sync packet is incorrect, don't decode it and continue with data
break; break;
@@ -593,7 +593,7 @@ namespace Jack
case SOCKET_ERROR: case SOCKET_ERROR:
return SOCKET_ERROR; return SOCKET_ERROR;
case NET_PACKET_ERROR:
case DATA_PACKET_ERROR:
jack_time_t cur_time = GetMicroSeconds(); jack_time_t cur_time = GetMicroSeconds();
NotifyXRun(cur_time, float(cur_time - fBeginDateUst)); // Better this value than nothing... NotifyXRun(cur_time, float(cur_time - fBeginDateUst)); // Better this value than nothing...
break; break;


+ 3
- 3
common/JackNetInterface.cpp View File

@@ -227,7 +227,7 @@ namespace Jack
int JackNetInterface::FinishRecv(NetAudioBuffer* buffer) int JackNetInterface::FinishRecv(NetAudioBuffer* buffer)
{ {
buffer->RenderToJackPorts(); buffer->RenderToJackPorts();
return NET_PACKET_ERROR;
return DATA_PACKET_ERROR;
} }


NetAudioBuffer* JackNetInterface::AudioBufferFactory(int nports, char* buffer) NetAudioBuffer* JackNetInterface::AudioBufferFactory(int nports, char* buffer)
@@ -488,7 +488,7 @@ namespace Jack
jack_error("Wrong packet type : %c", rx_head->fDataType); jack_error("Wrong packet type : %c", rx_head->fDataType);
// not the last packet.. // not the last packet..
fRxHeader.fIsLastPckt = 0; fRxHeader.fIsLastPckt = 0;
return NET_PACKET_ERROR;
return SYNC_PACKET_ERROR;
} }
fCurrentCycleOffset = fTxHeader.fCycle - rx_head->fCycle; fCurrentCycleOffset = fTxHeader.fCycle - rx_head->fCycle;
@@ -874,7 +874,7 @@ namespace Jack
jack_error("Wrong packet type : %c", rx_head->fDataType); jack_error("Wrong packet type : %c", rx_head->fDataType);
// not the last packet... // not the last packet...
fRxHeader.fIsLastPckt = 0; fRxHeader.fIsLastPckt = 0;
return NET_PACKET_ERROR;
return SYNC_PACKET_ERROR;
} }
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; fRxHeader.fIsLastPckt = rx_head->fIsLastPckt;


+ 2
- 2
common/JackNetManager.cpp View File

@@ -537,7 +537,7 @@ namespace Jack
case SOCKET_ERROR: case SOCKET_ERROR:
return res; return res;
case NET_PACKET_ERROR:
case SYNC_PACKET_ERROR:
// Since sync packet is incorrect, don't decode it and continue with data // Since sync packet is incorrect, don't decode it and continue with data
break; break;
@@ -559,7 +559,7 @@ namespace Jack
case SOCKET_ERROR: case SOCKET_ERROR:
return res; return res;
case NET_PACKET_ERROR:
case DATA_PACKET_ERROR:
// Well not a real XRun... // Well not a real XRun...
JackServerGlobals::fInstance->GetEngine()->NotifyClientXRun(ALL_CLIENTS); JackServerGlobals::fInstance->GetEngine()->NotifyClientXRun(ALL_CLIENTS);
break; break;


+ 1
- 1
common/JackNetTool.cpp View File

@@ -247,7 +247,7 @@ namespace Jack


if (sub_cycle != fLastSubCycle + 1) { if (sub_cycle != fLastSubCycle + 1) {
jack_error("Packet(s) missing from... %d %d", fLastSubCycle, sub_cycle); jack_error("Packet(s) missing from... %d %d", fLastSubCycle, sub_cycle);
res = NET_PACKET_ERROR;
res = DATA_PACKET_ERROR;
} else { } else {
res = 0; res = 0;
} }


+ 2
- 1
common/JackNetTool.h View File

@@ -41,7 +41,8 @@ using namespace std;
#define NETWORK_PROTOCOL 7 #define NETWORK_PROTOCOL 7


#define NET_SYNCHING 0 #define NET_SYNCHING 0
#define NET_PACKET_ERROR -2
#define SYNC_PACKET_ERROR -2
#define DATA_PACKET_ERROR -3


#define OPTIMIZED_PROTOCOL 1 #define OPTIMIZED_PROTOCOL 1




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

@@ -36,7 +36,8 @@ extern "C"


#define NO_ERROR 0 #define NO_ERROR 0
#define SOCKET_ERROR -1 #define SOCKET_ERROR -1
#define NET_PACKET_ERROR -2
#define SYNC_PACKET_ERROR -2
#define DATA_PACKET_ERROR -3


#define RESTART_CB_API 1 #define RESTART_CB_API 1




Loading…
Cancel
Save