Skip to content

Commit e8e88c6

Browse files
CHG: Increased ExtraData buffer size for all events to fix Kinect image streaming across multiple oinputservers
1 parent 67b2d58 commit e8e88c6

File tree

7 files changed

+58
-173
lines changed

7 files changed

+58
-173
lines changed

include/connector/omicronConnectorClient.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ namespace omicronConnector
430430
{
431431
#ifndef OMICRON_EVENTDATA_DEFINED
432432
#define OMICRON_EVENTDATA_DEFINED
433-
433+
#define DEFAULT_BUFLEN 51200 // Moved out of OmicronConnectorClient as NetClient/InputServer also uses this
434434
#define OFLOAT_PTR(x) *((float*)&x)
435435
#define OINT_PTR(x) *((int*)&x)
436436

@@ -451,7 +451,7 @@ namespace omicronConnector
451451
float orz;
452452
float orw;
453453

454-
static const int ExtraDataSize = 1024;
454+
static const int ExtraDataSize = DEFAULT_BUFLEN;
455455
unsigned int extraDataType;
456456
#if !defined(__GNUC__)
457457
unsigned int extraDataItems;
@@ -494,8 +494,7 @@ namespace omicronConnector
494494

495495
// if OMICRON_CONNECTOR_LEAN_AND_MEAN, only define the omicron::EventBase and omicronConnector::EventData classes.
496496
// Skip the OmicronConnectorClient class and all socket functionality.
497-
#define DEFAULT_BUFLEN 1024 // Moved out of OmicronConnectorClient as NetClient/InputServer also uses this
498-
#define DEFAULT_LRGBUFLEN 51200 // Moved out of OmicronConnectorClient as NetClient/InputServer also uses this
497+
//#define DEFAULT_LRGBUFLEN 51200 // Moved out of OmicronConnectorClient as NetClient/InputServer also uses this
499498

500499
#ifndef OMICRON_CONNECTOR_LEAN_AND_MEAN
501500
#ifndef OMICRON_CONNECTORCLIENT_DEFINED

include/omicron/Event.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ namespace omicron
6464
friend class EventUtils;
6565
friend class Service;
6666
public:
67-
static const int ExtraDataSize = 1024;
67+
static const int ExtraDataSize = DEFAULT_BUFLEN;
6868
static const int MaxExtraDataItems = 32;
6969
static Event::Flags parseButtonName(const String& name);
7070
static int parseJointName(const String& name);
@@ -188,8 +188,6 @@ namespace omicron
188188
//! Returns the raw etra data buffer.
189189
void* getExtraDataBuffer() const;
190190

191-
bool isExtraDataLarge() const;
192-
193191
private:
194192
unsigned int mySourceId;
195193
enum Service::ServiceType myServiceType;
@@ -658,12 +656,6 @@ namespace omicron
658656
return myExtraDataItems;
659657
}
660658

661-
///////////////////////////////////////////////////////////////////////////
662-
inline bool Event::isExtraDataLarge() const
663-
{
664-
return usingExtraDataLarge;
665-
}
666-
667659
///////////////////////////////////////////////////////////////////////////
668660
inline bool Event::getChar(char* c) const
669661
{

include/omicron/InputServer.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,6 @@ class OMICRON_API InputServer
456456
char legacyPacket[DEFAULT_BUFLEN];
457457
char tacTilePacket[DEFAULT_BUFLEN];
458458

459-
char eventPacketLarge[DEFAULT_LRGBUFLEN];
460-
461459
bool validLegacyEvent;
462460
bool validTacTileEvent;
463461

src/apps/oinputserver/oinputserver.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ int main(int argc, char** argv)
8585

8686
// Mark the original event as processed
8787
e->setProcessed();
88-
89-
if (e->isExtraDataLarge())
90-
{
91-
e->resetExtraData();
92-
}
9388
}
9489
sm->unlockEvents();
9590
}

src/omicron/omicron/InputServer.cpp

Lines changed: 51 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -63,68 +63,33 @@ char* InputServer::createOmicronPacketFromEvent(const Event* evt)
6363
{
6464
int offset = 0;
6565

66-
if (!evt->isExtraDataLarge())
66+
char* eventPacket = new char[DEFAULT_BUFLEN];
67+
68+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getTimestamp());
69+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getSourceId());
70+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getDeviceTag());
71+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getServiceType());
72+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getType());
73+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getFlags());
74+
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().x());
75+
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().y());
76+
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().z());
77+
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().w());
78+
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().x());
79+
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().y());
80+
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().z());
81+
82+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataType());
83+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataItems());
84+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataMask());
85+
86+
if (evt->getExtraDataType() != Event::ExtraDataNull)
6787
{
68-
char* eventPacket = new char[DEFAULT_BUFLEN];
69-
70-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getTimestamp());
71-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getSourceId());
72-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getDeviceTag());
73-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getServiceType());
74-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getType());
75-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getFlags());
76-
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().x());
77-
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().y());
78-
OI_WRITEBUF(float, eventPacket, offset, evt->getPosition().z());
79-
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().w());
80-
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().x());
81-
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().y());
82-
OI_WRITEBUF(float, eventPacket, offset, evt->getOrientation().z());
83-
84-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataType());
85-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataItems());
86-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt->getExtraDataMask());
87-
88-
if (evt->getExtraDataType() != Event::ExtraDataNull)
89-
{
90-
memcpy(&eventPacket[offset], evt->getExtraDataBuffer(), evt->getExtraDataSize());
91-
}
92-
offset += evt->getExtraDataSize();
93-
94-
return eventPacket;
95-
}
96-
else
97-
{
98-
char* eventPacketLarge = new char[DEFAULT_LRGBUFLEN];
99-
100-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getTimestamp());
101-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getSourceId());
102-
OI_WRITEBUF(int, eventPacketLarge, offset, evt->getDeviceTag());
103-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getServiceType());
104-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getType());
105-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getFlags());
106-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getPosition().x());
107-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getPosition().y());
108-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getPosition().z());
109-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getOrientation().w());
110-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getOrientation().x());
111-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getOrientation().y());
112-
OI_WRITEBUF(float, eventPacketLarge, offset, evt->getOrientation().z());
113-
114-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getExtraDataType());
115-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getExtraDataItems());
116-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt->getExtraDataMask());
117-
118-
//void* buffer = evt->getExtraDataBuffer();
119-
//int bufferSize = evt->getExtraDataSize();
120-
//eventPacketLarge = (char*)buffer;
121-
122-
memcpy(&eventPacketLarge[offset], evt->getExtraDataBuffer(), evt->getExtraDataSize());
123-
124-
offset += evt->getExtraDataSize();
125-
126-
return eventPacketLarge;
88+
memcpy(&eventPacket[offset], evt->getExtraDataBuffer(), evt->getExtraDataSize());
12789
}
90+
offset += evt->getExtraDataSize();
91+
92+
return eventPacket;
12893
}
12994

13095
///////////////////////////////////////////////////////////////////////////////
@@ -187,59 +152,30 @@ void InputServer::handleEvent(const Event& evt)
187152
#endif
188153

189154
int offset = 0;
190-
int LargeBufferSize = 65535;
191155

192-
if (!evt.isExtraDataLarge())
193-
{
156+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getTimestamp());
157+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getSourceId());
158+
OI_WRITEBUF(int, eventPacket, offset, evt.getDeviceTag());
159+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getServiceType());
160+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getType());
161+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getFlags());
162+
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().x());
163+
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().y());
164+
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().z());
165+
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().w());
166+
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().x());
167+
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().y());
168+
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().z());
194169

195-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getTimestamp());
196-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getSourceId());
197-
OI_WRITEBUF(int, eventPacket, offset, evt.getDeviceTag());
198-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getServiceType());
199-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getType());
200-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getFlags());
201-
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().x());
202-
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().y());
203-
OI_WRITEBUF(float, eventPacket, offset, evt.getPosition().z());
204-
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().w());
205-
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().x());
206-
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().y());
207-
OI_WRITEBUF(float, eventPacket, offset, evt.getOrientation().z());
208-
209-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataType());
210-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataItems());
211-
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataMask());
212-
213-
memcpy(&eventPacket[offset], evt.getExtraDataBuffer(), evt.getExtraDataSize());
214-
215-
offset += evt.getExtraDataSize();
216-
217-
validTacTileEvent = handleTacTileEvent(evt);
218-
}
219-
else
220-
{
221-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getTimestamp());
222-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getSourceId());
223-
OI_WRITEBUF(int, eventPacketLarge, offset, evt.getDeviceTag());
224-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getServiceType());
225-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getType());
226-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getFlags());
227-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getPosition().x());
228-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getPosition().y());
229-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getPosition().z());
230-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getOrientation().w());
231-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getOrientation().x());
232-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getOrientation().y());
233-
OI_WRITEBUF(float, eventPacketLarge, offset, evt.getOrientation().z());
234-
235-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getExtraDataType());
236-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getExtraDataItems());
237-
OI_WRITEBUF(unsigned int, eventPacketLarge, offset, evt.getExtraDataMask());
238-
239-
memcpy(&eventPacketLarge[offset], evt.getExtraDataBuffer(), evt.getExtraDataSize());
240-
241-
offset += evt.getExtraDataSize();
242-
}
170+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataType());
171+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataItems());
172+
OI_WRITEBUF(unsigned int, eventPacket, offset, evt.getExtraDataMask());
173+
174+
memcpy(&eventPacket[offset], evt.getExtraDataBuffer(), evt.getExtraDataSize());
175+
176+
offset += evt.getExtraDataSize();
177+
178+
validTacTileEvent = handleTacTileEvent(evt);
243179

244180
if( showStreamSpeed )
245181
{
@@ -283,53 +219,25 @@ void InputServer::handleEvent(const Event& evt)
283219
{
284220
if (evt.getType() == Event::Update || evt.getType() == Event::Move)
285221
{
286-
// Send continual data streams as UDP
287-
if (!evt.isExtraDataLarge())
288-
{
289-
client->sendEvent(eventPacket, DEFAULT_BUFLEN);
290-
}
291-
else
292-
{
293-
client->sendEvent(eventPacketLarge, DEFAULT_LRGBUFLEN);
294-
//ofmsg("Sent frame %1% %2%", %evt.getSourceId() %evt.getFlags());
295-
}
222+
client->sendEvent(eventPacket, DEFAULT_BUFLEN);
296223
}
297224
else
298225
{
299226
// If client supports dual TCP/UDP (V2), send single events as TCP
300227
if (client->getMode() == data_omicronV2)
301228
{
302-
if (!evt.isExtraDataLarge())
303-
{
304-
client->sendMsg(eventPacket, DEFAULT_BUFLEN);
305-
}
306-
else
307-
{
308-
client->sendMsg(eventPacketLarge, DEFAULT_LRGBUFLEN);
309-
}
229+
client->sendMsg(eventPacket, DEFAULT_BUFLEN);
310230
}
311231
else
312232
{
313233
// Legacy support, send single events as UDP
314-
if (!evt.isExtraDataLarge())
315-
{
316-
client->sendEvent(eventPacket, DEFAULT_BUFLEN);
317-
}
318-
else
319-
{
320-
client->sendEvent(eventPacketLarge, DEFAULT_LRGBUFLEN);
321-
}
234+
client->sendEvent(eventPacket, DEFAULT_BUFLEN);
322235
}
323236
}
324237
}
325238
}
326239
itr++;
327240
}
328-
329-
if (evt.isExtraDataLarge())
330-
{
331-
// delete(eventPacketLarge);
332-
}
333241
}
334242

335243
///////////////////////////////////////////////////////////////////////////////
@@ -988,7 +896,7 @@ void InputServer::loop()
988896
if ( client->isReceivingData() )
989897
{
990898
// Grab data from client
991-
int iresult = client->recvEvent(eventPacket, DEFAULT_LRGBUFLEN);
899+
int iresult = client->recvEvent(eventPacket, DEFAULT_BUFLEN);
992900
if (iresult > 0)
993901
{
994902
// Convert client packet to omicron event

src/omicron/omicron/MSKinect2Service.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ void MSKinectService::poll()
180180
Event* evt = mysInstance->writeHead();
181181
evt->reset(Event::Update, Service::Image, currentFrameTimestamp);
182182
evt->setPosition(cColorWidth, cColorHeight, 0); // Position: imageWidth, imageHeight, typeFlag (Color = 0, Depth = 1)
183-
evt->setFlags(currentPacket);
183+
evt->setOrientation(currentPacket, nPackets, 0, 0);
184184

185185
evt->setExtraData(EventBase::ExtraDataString, dataPacketSize, 1, imageEventBuffer);
186186
mysInstance->unlockEvents();
@@ -481,7 +481,7 @@ void MSKinectService::pollDepth()
481481
Event* evt = mysInstance->writeHead();
482482
evt->reset(Event::Update, Service::Image, timestamp);
483483
evt->setPosition(cDepthWidth, cDepthHeight, 1); // Position: imageWidth, imageHeight, typeFlag (Color = 0, Depth = 1)
484-
evt->setFlags(i);
484+
evt->setOrientation(i, nPackets, 0, 0);
485485

486486
evt->setExtraData(EventBase::ExtraDataString, dataPacketSize, 1, imageEventBuffer);
487487
mysInstance->unlockEvents();

src/omicron/omicron/NetService.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,7 @@ void NetService::poll()
102102

103103
char* eventPacket = InputServer::createOmicronPacketFromEvent(e);
104104

105-
if (!e->isExtraDataLarge())
106-
{
107-
streamClient->sendEvent(eventPacket, DEFAULT_BUFLEN);
108-
}
109-
else
110-
{
111-
streamClient->sendEvent(eventPacket, DEFAULT_LRGBUFLEN);
112-
}
105+
streamClient->sendEvent(eventPacket, DEFAULT_BUFLEN);
113106

114107
delete eventPacket;
115108
}

0 commit comments

Comments
 (0)