Browse Source

Correct NetJack2 SyncSend.

tags/v1.9.11-RC1
Stephane Letz 11 years ago
parent
commit
54ada6e545
3 changed files with 15 additions and 6 deletions
  1. +10
    -5
      common/JackNetInterface.cpp
  2. +1
    -0
      common/JackNetTool.cpp
  3. +4
    -1
      common/JackNetTool.h

+ 10
- 5
common/JackNetInterface.cpp View File

@@ -166,6 +166,7 @@ namespace Jack
fTxHeader.fIsLastPckt = ((subproc == (fTxHeader.fNumPacket - 1)) && audio_channels == 0) ? 1 : 0; fTxHeader.fIsLastPckt = ((subproc == (fTxHeader.fNumPacket - 1)) && audio_channels == 0) ? 1 : 0;
fTxHeader.fPacketSize = HEADER_SIZE + buffer->RenderToNetwork(subproc, data_size); fTxHeader.fPacketSize = HEADER_SIZE + buffer->RenderToNetwork(subproc, data_size);
memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE);
//PacketHeaderDisplay(&fTxHeader);
if (Send(fTxHeader.fPacketSize, 0) == SOCKET_ERROR) { if (Send(fTxHeader.fPacketSize, 0) == SOCKET_ERROR) {
return SOCKET_ERROR; return SOCKET_ERROR;
} }
@@ -207,6 +208,7 @@ namespace Jack
if (++recvd_midi_pckt == rx_head->fNumPacket) { if (++recvd_midi_pckt == rx_head->fNumPacket) {
buffer->RenderToJackPorts(); buffer->RenderToJackPorts();
} }
//PacketHeaderDisplay(rx_head);
return rx_bytes; return rx_bytes;
} }


@@ -224,6 +226,7 @@ namespace Jack
if (fRxHeader.fIsLastPckt) { if (fRxHeader.fIsLastPckt) {
buffer->RenderToJackPorts(fRxHeader.fFrames); buffer->RenderToJackPorts(fRxHeader.fFrames);
} }
//PacketHeaderDisplay(rx_head);
return rx_bytes; return rx_bytes;
} }


@@ -461,8 +464,8 @@ namespace Jack
fTxHeader.fSubCycle = 0; fTxHeader.fSubCycle = 0;
fTxHeader.fDataType = 's'; fTxHeader.fDataType = 's';
fTxHeader.fIsLastPckt = (fParams.fSendMidiChannels == 0 && fParams.fSendAudioChannels == 0) ? 1 : 0; fTxHeader.fIsLastPckt = (fParams.fSendMidiChannels == 0 && fParams.fSendAudioChannels == 0) ? 1 : 0;
fTxHeader.fPacketSize = fParams.fMtu;
fTxHeader.fPacketSize = HEADER_SIZE + fTxHeader.fActivePorts * sizeof(int); // Data part is used to encode active ports
memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE);
//PacketHeaderDisplay(&fTxHeader); //PacketHeaderDisplay(&fTxHeader);
return Send(fTxHeader.fPacketSize, 0); return Send(fTxHeader.fPacketSize, 0);
@@ -490,6 +493,7 @@ namespace Jack
} }
} }
while (strcmp(rx_head->fPacketType, "header") != 0); while (strcmp(rx_head->fPacketType, "header") != 0);
//PacketHeaderDisplay(rx_head);
if (rx_head->fDataType != 's') { if (rx_head->fDataType != 's') {
jack_error("Wrong packet type : %c", rx_head->fDataType); jack_error("Wrong packet type : %c", rx_head->fDataType);
@@ -883,7 +887,8 @@ namespace Jack
fRxHeader.fIsLastPckt = 0; fRxHeader.fIsLastPckt = 0;
return SYNC_PACKET_ERROR; return SYNC_PACKET_ERROR;
} }
//PacketHeaderDisplay(rx_head);
fRxHeader.fIsLastPckt = rx_head->fIsLastPckt; fRxHeader.fIsLastPckt = rx_head->fIsLastPckt;
return rx_bytes; return rx_bytes;
} }
@@ -937,8 +942,8 @@ namespace Jack
fTxHeader.fSubCycle = 0; fTxHeader.fSubCycle = 0;
fTxHeader.fDataType = 's'; fTxHeader.fDataType = 's';
fTxHeader.fIsLastPckt = (fParams.fReturnMidiChannels == 0 && fParams.fReturnAudioChannels == 0) ? 1 : 0; fTxHeader.fIsLastPckt = (fParams.fReturnMidiChannels == 0 && fParams.fReturnAudioChannels == 0) ? 1 : 0;
fTxHeader.fPacketSize = fParams.fMtu;
fTxHeader.fPacketSize = HEADER_SIZE + fTxHeader.fActivePorts * sizeof(int); // Data part is used to encode active ports
memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE); memcpy(fTxBuffer, &fTxHeader, HEADER_SIZE);
//PacketHeaderDisplay(&fTxHeader); //PacketHeaderDisplay(&fTxHeader);
return Send(fTxHeader.fPacketSize, 0); return Send(fTxHeader.fPacketSize, 0);


+ 1
- 0
common/JackNetTool.cpp View File

@@ -299,6 +299,7 @@ namespace Jack


for (uint port_index = 0; port_index < port_num; port_index++) { for (uint port_index = 0; port_index < port_num; port_index++) {
int active_port = ntohl(*active_port_address); int active_port = ntohl(*active_port_address);
assert(active_port < fNPorts);
fConnectedPorts[active_port] = true; fConnectedPorts[active_port] = true;
active_port_address++; active_port_address++;
} }


+ 4
- 1
common/JackNetTool.h View File

@@ -46,8 +46,11 @@ using namespace std;


#define OPTIMIZED_PROTOCOL 1 #define OPTIMIZED_PROTOCOL 1


#define UDP_HEADER_SIZE 64 // 40 bytes for IP header in IPV6, 20 in IPV4, 8 for UDP, so take 64
#define HEADER_SIZE (sizeof(packet_header_t)) #define HEADER_SIZE (sizeof(packet_header_t))
#define PACKET_AVAILABLE_SIZE(params) ((params)->fMtu - sizeof(packet_header_t))

// TODO : change PACKET_AVAILABLE_SIZE definition ==> #define PACKET_AVAILABLE_SIZE(params) ((params)->fMtu - UDP_HEADER_SIZE - sizeof(packet_header_t))
#define PACKET_AVAILABLE_SIZE(params) ((params)->fMtu - HEADER_SIZE)


namespace Jack namespace Jack
{ {


Loading…
Cancel
Save