1 #define _CRT_SECURE_NO_WARNINGS 12 #include <arpa/inet.h> 19 mnMajorVersion = nMajorVersion;
20 mnMinorVersion = nMinorVersion;
21 mbBigEndian = bBigEndian;
28 nMajorVersion = mnMajorVersion;
29 nMinorVersion = mnMinorVersion;
34 mnMajorVersion = nMajorVersion;
35 mnMinorVersion = nMinorVersion;
45 mbBigEndian = bBigEndian;
53 mn2DLinCameraCount = 0;
54 mnImageCameraCount = 0;
55 mnAnalogDeviceCount = 0;
56 mnAnalogSingleDeviceCount = 0;
57 mnForcePlateCount = 0;
58 mnForceSinglePlateCount = 0;
59 mnGazeVectorCount = 0;
76 unsigned int nComponent;
77 unsigned int nCamera, nDevice;
83 mn2DLinCameraCount = 0;
84 mnImageCameraCount = 0;
85 mnAnalogDeviceCount = 0;
86 mnAnalogSingleDeviceCount = 0;
87 mnForcePlateCount = 0;
88 mnForceSinglePlateCount = 0;
89 mnGazeVectorCount = 0;
97 for (nComponent = 1; nComponent <
ComponentNone; nComponent++)
99 mpComponentData[nComponent - 1] =
nullptr;
102 char* pCurrentComponent = mpData + 24;
103 unsigned int nComponentType = SetByteOrder((
unsigned int*)(pCurrentComponent + 4));
105 mnComponentCount = SetByteOrder((
unsigned int*)(mpData + 20));
107 for (nComponent = 1; nComponent <= mnComponentCount && nComponentType > 0 && nComponentType <
ComponentNone; nComponent++)
109 mpComponentData[nComponentType - 1] = pCurrentComponent;
113 mn2DCameraCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
115 mp2DData[0] = pCurrentComponent + 16;
116 for (nCamera = 1; nCamera < mn2DCameraCount; nCamera++)
118 if (mnMajorVersion > 1 || mnMinorVersion > 7)
120 mp2DData[nCamera] = mp2DData[nCamera - 1] + 5 +
Get2DMarkerCount(nCamera - 1) * 12;
124 mp2DData[nCamera] = mp2DData[nCamera - 1] + 4 +
Get2DMarkerCount(nCamera - 1) * 12;
130 mn2DLinCameraCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
132 mp2DLinData[0] = pCurrentComponent + 16;
133 for (nCamera = 1; nCamera < mn2DLinCameraCount; nCamera++)
135 if (mnMajorVersion > 1 || mnMinorVersion > 7)
137 mp2DLinData[nCamera] = mp2DLinData[nCamera - 1] + 5 +
Get2DLinMarkerCount(nCamera - 1) * 12;
141 mp2DLinData[nCamera] = mp2DLinData[nCamera - 1] + 4 +
Get2DLinMarkerCount(nCamera - 1) * 12;
147 mnImageCameraCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
149 mpImageData[0] = pCurrentComponent + 12;
150 for (nCamera = 1; nCamera < mnImageCameraCount; nCamera++)
152 mpImageData[nCamera] = mpImageData[nCamera - 1] + 36 + SetByteOrder((
unsigned int*)(mpImageData[nCamera - 1] + 32));
157 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
159 mnAnalogDeviceCount = 1;
163 mnAnalogDeviceCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
166 if ((mnMajorVersion > 1) || (mnMinorVersion > 7))
168 mpAnalogData[0] = pCurrentComponent + 12;
172 mpAnalogData[0] = pCurrentComponent + 16;
174 for (nDevice = 1; nDevice < mnAnalogDeviceCount; nDevice++)
176 mpAnalogData[nDevice] = mpAnalogData[nDevice - 1] + 16 +
177 (SetByteOrder((
unsigned int*)(mpAnalogData[nDevice - 1] + 4)) *
178 SetByteOrder((
unsigned int*)(mpAnalogData[nDevice - 1] + 8)) * 4);
183 mnAnalogSingleDeviceCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
185 if (mnMajorVersion > 1 || mnMinorVersion > 7)
187 mpAnalogSingleData[0] = pCurrentComponent + 12;
191 mpAnalogSingleData[0] = pCurrentComponent + 16;
194 for (nDevice = 1; nDevice < mnAnalogSingleDeviceCount; nDevice++)
196 mpAnalogSingleData[nDevice] = mpAnalogSingleData[nDevice - 1] + 8 +
197 SetByteOrder((
unsigned int*)(mpAnalogSingleData[nDevice - 1] + 4)) * 4;
202 mnForcePlateCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
204 if (mnMajorVersion > 1 || mnMinorVersion > 7)
206 mpForceData[0] = pCurrentComponent + 12;
210 mpForceData[0] = pCurrentComponent + 16;
212 for (nDevice = 1; nDevice < mnForcePlateCount; nDevice++)
214 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
216 mpForceData[nDevice] = mpForceData[nDevice - 1] + 72;
220 mpForceData[nDevice] = mpForceData[nDevice - 1] + 12 +
221 SetByteOrder((
unsigned int*)(mpForceData[nDevice - 1] + 4)) * 36;
227 mnForceSinglePlateCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
229 mpForceSingleData[0] = pCurrentComponent + 12;
231 for (nDevice = 1; nDevice < mnForceSinglePlateCount; nDevice++)
233 mpForceSingleData[nDevice] = mpForceSingleData[nDevice - 1] + 4 + 36;
238 mnGazeVectorCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
240 mpGazeVectorData[0] = pCurrentComponent + 12;
242 for (nDevice = 1; nDevice < mnGazeVectorCount; nDevice++)
244 unsigned int nPrevSampleCount = SetByteOrder((
unsigned int*)(mpGazeVectorData[nDevice - 1]));
245 mpGazeVectorData[nDevice] = mpGazeVectorData[nDevice - 1] + 4 + ((nPrevSampleCount == 0) ? 0 : 4) +
246 nPrevSampleCount * 24;
251 mnTimecodeCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
253 mpTimecodeData[0] = pCurrentComponent + 12;
255 for (nDevice = 1; nDevice < mnTimecodeCount; nDevice++)
257 mpTimecodeData[nDevice] = mpTimecodeData[nDevice - 1] + 12;
262 mSkeletonCount = SetByteOrder((
unsigned int*)(pCurrentComponent + 8));
264 mpSkeletonData[0] = pCurrentComponent + 12;
266 for (nDevice = 1; nDevice < mSkeletonCount; nDevice++)
268 unsigned int prevSegmentCount = SetByteOrder((
unsigned int*)(mpSkeletonData[nDevice - 1]));
269 mpSkeletonData[nDevice] = mpSkeletonData[nDevice - 1] + 4 + prevSegmentCount * 32;
272 pCurrentComponent += SetByteOrder((
int*)pCurrentComponent);
273 nComponentType = SetByteOrder((
unsigned int*)(pCurrentComponent + 4));
281 if (mpData ==
nullptr)
288 nSize = *((
int*)mpData);
294 if (mpData ==
nullptr)
298 if (mbBigEndian || ((mnMajorVersion == 1) && (mnMinorVersion == 0)))
300 return ntohl(*((
unsigned int*)mpData));
302 return *((
unsigned int*)mpData);
311 if (mbBigEndian || ((mnMajorVersion == 1) && (mnMinorVersion == 0)))
313 return (
EPacketType)ntohl(*(
unsigned int*)(mpData + 4));
315 return (
EPacketType)*((
unsigned int*)(mpData + 4));
322 return SetByteOrder((
long long*)(mpData + 8));
331 return SetByteOrder((
unsigned int*)(mpData + 16));
340 return ntohl(*((
unsigned int*)pData));
342 return *((
unsigned int*)pData);
347 if (
GetSize(pData, bBigEndian) < 8)
353 return (
EPacketType)ntohl(*(
unsigned int*)(pData + 4));
364 return ((
unsigned long long)(ntohl((
long)*((
long long*)(pData + 8)))) << 32) + ntohl(*((
long long*)(pData + 8)) >> 32);
366 return *((
long long*)(pData + 8));
377 return ntohl(*((
unsigned int*)(pData + 16)));
379 return *((
unsigned int*)(pData + 16));
386 return mnComponentCount;
395 if (mpComponentData[eComponent - 1] ==
nullptr)
399 return SetByteOrder((
unsigned int*)(mpComponentData[eComponent - 1]));
446 if (
GetSize() == (8 + strlen(mpData + 8) + 1 + 2))
448 return ntohs(*((
short*)(mpData + 8 + strlen(mpData + 8) + 1)));
458 if (
GetSize(pData, bBigEndian) == (8 + strlen(pData + 8) + 1 + 2))
460 return ntohs(*((
short*)(pData + 8 + strlen(pData + 8) + 1)));
470 eEvent = (
EEvent)*(mpData + 8);
480 eEvent = (
EEvent)*(pData + 8);
488 for (
int i = 0; i <= 1; i++)
490 if (mpComponentData[i] !=
nullptr)
492 return SetByteOrder((
unsigned short*)(mpComponentData[i] + 12));
495 for (
int i = 4; i <= 11; i++)
497 if (mpComponentData[i] !=
nullptr)
499 return SetByteOrder((
unsigned short*)(mpComponentData[i] + 12));
507 for (
int i = 0; i <= 1; i++)
509 if (mpComponentData[i] !=
nullptr)
511 return SetByteOrder((
unsigned short*)(mpComponentData[i] + 14));
514 for (
int i = 4; i <= 11; i++)
516 if (mpComponentData[i] !=
nullptr)
518 return SetByteOrder((
unsigned short*)(mpComponentData[i] + 14));
531 return mn2DCameraCount;
536 if (mn2DCameraCount <= nCameraIndex)
540 return SetByteOrder((
unsigned int*)(mp2DData[nCameraIndex]));
545 if (mn2DCameraCount > nCameraIndex && ((mnMajorVersion > 1) || (mnMinorVersion > 7)))
547 return *((
unsigned char*)(mp2DData[nCameraIndex] + 4));
553 unsigned short &nXDiameter,
unsigned short &nYDiameter)
557 if (mn2DCameraCount <= nCameraIndex ||
Get2DMarkerCount(nCameraIndex) <= nMarkerIndex)
562 if (mnMajorVersion > 1 || mnMinorVersion > 7)
570 nX = SetByteOrder((
unsigned int*)(mp2DData[nCameraIndex] + nOffset + nMarkerIndex * 12));
571 nY = SetByteOrder((
unsigned int*)(mp2DData[nCameraIndex] + nOffset + 4 + nMarkerIndex * 12));
572 nXDiameter = SetByteOrder((
unsigned short*)(mp2DData[nCameraIndex] + nOffset + 8 + nMarkerIndex * 12));
573 nYDiameter = SetByteOrder((
unsigned short*)(mp2DData[nCameraIndex] + nOffset + 10 + nMarkerIndex * 12));
584 return mn2DLinCameraCount;
589 if (mn2DLinCameraCount <= nCameraIndex)
593 return SetByteOrder((
unsigned int*)(mp2DLinData[nCameraIndex]));
598 if (mn2DLinCameraCount > nCameraIndex && ((mnMajorVersion > 1) || (mnMinorVersion > 7)))
600 return *((
unsigned char*)(mp2DLinData[nCameraIndex] + 4));
606 unsigned short &nXDiameter,
unsigned short &nYDiameter)
610 if (mn2DLinCameraCount <= nCameraIndex ||
Get2DLinMarkerCount(nCameraIndex) <= nMarkerIndex)
615 if (mnMajorVersion > 1 || mnMinorVersion > 7)
623 nX = SetByteOrder((
unsigned int*)(mp2DLinData[nCameraIndex] + nOffset + nMarkerIndex * 12));
624 nY = SetByteOrder((
unsigned int*)(mp2DLinData[nCameraIndex] + nOffset + 4 + nMarkerIndex * 12));
625 nXDiameter = SetByteOrder((
unsigned short*)(mp2DLinData[nCameraIndex] + nOffset + 8 + nMarkerIndex * 12));
626 nYDiameter = SetByteOrder((
unsigned short*)(mp2DLinData[nCameraIndex] + nOffset + 10 + nMarkerIndex * 12));
644 if (pData ==
nullptr)
648 return SetByteOrder((
unsigned int*)(pData + 8));
660 if (mnMajorVersion > 1 || mnMinorVersion > 7)
662 fX = SetByteOrder((
float*)(pData + 16 + nMarkerIndex * 12));
663 fY = SetByteOrder((
float*)(pData + 20 + nMarkerIndex * 12));
664 fZ = SetByteOrder((
float*)(pData + 24 + nMarkerIndex * 12));
668 fX = (float)SetByteOrder((
double*)(pData + 16 + nMarkerIndex * 24));
669 fY = (float)SetByteOrder((
double*)(pData + 24 + nMarkerIndex * 24));
670 fZ = (float)SetByteOrder((
double*)(pData + 32 + nMarkerIndex * 24));
672 return (isnan(fX) == 0);
683 if (pData ==
nullptr)
687 return SetByteOrder((
unsigned int*)(pData + 8));
699 if (mnMajorVersion > 1 || mnMinorVersion > 7)
701 fX = SetByteOrder((
float*)(pData + 16 + nMarkerIndex * 16));
702 fY = SetByteOrder((
float*)(pData + 20 + nMarkerIndex * 16));
703 fZ = SetByteOrder((
float*)(pData + 24 + nMarkerIndex * 16));
704 fResidual = SetByteOrder((
float*)(pData + 28 + nMarkerIndex * 16));
708 fX = (float)SetByteOrder((
double*)(pData + 16 + nMarkerIndex * 32));
709 fY = (float)SetByteOrder((
double*)(pData + 24 + nMarkerIndex * 32));
710 fZ = (float)SetByteOrder((
double*)(pData + 32 + nMarkerIndex * 32));
711 fResidual = SetByteOrder((
float*) (pData + 40 + nMarkerIndex * 32));
713 return (isnan(fX) == 0);
724 if (pData ==
nullptr)
728 return SetByteOrder((
unsigned int*)(pData + 8));
740 if (mnMajorVersion > 1 || mnMinorVersion > 7)
742 fX = SetByteOrder((
float*)(pData + 16 + nMarkerIndex * 16));
743 fY = SetByteOrder((
float*)(pData + 20 + nMarkerIndex * 16));
744 fZ = SetByteOrder((
float*)(pData + 24 + nMarkerIndex * 16));
745 nId = SetByteOrder((
unsigned int*)(pData + 28 + nMarkerIndex * 16));
749 fX = (float)SetByteOrder((
double*)(pData + 16 + nMarkerIndex * 32));
750 fY = (float)SetByteOrder((
double*)(pData + 24 + nMarkerIndex * 32));
751 fZ = (float)SetByteOrder((
double*)(pData + 32 + nMarkerIndex * 32));
752 nId = SetByteOrder((
unsigned int*)(pData + 40 + nMarkerIndex * 32));
765 if (pData ==
nullptr)
769 return SetByteOrder((
unsigned int*)(pData + 8));
773 unsigned int &nId,
float &fResidual)
782 if (mnMajorVersion > 1 || mnMinorVersion > 7)
784 fX = SetByteOrder((
float*)(pData + 16 + nMarkerIndex * 20));
785 fY = SetByteOrder((
float*)(pData + 20 + nMarkerIndex * 20));
786 fZ = SetByteOrder((
float*)(pData + 24 + nMarkerIndex * 20));
787 nId = SetByteOrder((
unsigned int*)(pData + 28 + nMarkerIndex * 20));
788 fResidual = SetByteOrder((
float*)(pData + 32 + nMarkerIndex * 20));
792 fX = (float)SetByteOrder((
double*)(pData + 16 + nMarkerIndex * 32));
793 fY = (float)SetByteOrder((
double*)(pData + 24 + nMarkerIndex * 32));
794 fZ = (float)SetByteOrder((
double*)(pData + 32 + nMarkerIndex * 32));
795 nId = SetByteOrder((
unsigned int*)(pData + 40 + nMarkerIndex * 32));
796 fResidual = SetByteOrder((
float*) (pData + 44 + nMarkerIndex * 32));
809 if (pData ==
nullptr)
813 return SetByteOrder((
unsigned int*)(pData + 8));
825 if (mnMajorVersion > 1 || mnMinorVersion > 7)
827 fX = SetByteOrder((
float*)(pData + 16 + nBodyIndex * 48));
828 fY = SetByteOrder((
float*)(pData + 20 + nBodyIndex * 48));
829 fZ = SetByteOrder((
float*)(pData + 24 + nBodyIndex * 48));
830 for (
int i = 0; i < 9; i++)
832 afRotMatrix[i] = SetByteOrder((
float*)(pData + 28 + (i * 4) + nBodyIndex * 48));
837 fX = (float)SetByteOrder((
double*)(pData + 16 + nBodyIndex * 96));
838 fY = (float)SetByteOrder((
double*)(pData + 24 + nBodyIndex * 96));
839 fZ = (float)SetByteOrder((
double*)(pData + 32 + nBodyIndex * 96));
840 for (
int i = 0; i < 9; i++)
842 afRotMatrix[i] = (float)SetByteOrder((
double*)(pData + 40 + (i * 4) + nBodyIndex * 96));
856 if (pData ==
nullptr)
860 return SetByteOrder((
unsigned int*)(pData + 8));
864 float afRotMatrix[9],
float &fResidual)
873 if (mnMajorVersion > 1 || mnMinorVersion > 7)
875 fX = SetByteOrder((
float*)(pData + 16 + nBodyIndex * 52));
876 fY = SetByteOrder((
float*)(pData + 20 + nBodyIndex * 52));
877 fZ = SetByteOrder((
float*)(pData + 24 + nBodyIndex * 52));
878 for (
int i = 0; i < 9; i++)
880 afRotMatrix[i] = SetByteOrder((
float*)(pData + 28 + (i * 4) + nBodyIndex * 52));
882 fResidual = SetByteOrder((
float*)(pData + 64 + nBodyIndex * 52));
886 fX = (float)SetByteOrder((
double*)(pData + 16 + nBodyIndex * 104));
887 fY = (float)SetByteOrder((
double*)(pData + 24 + nBodyIndex * 104));
888 fZ = (float)SetByteOrder((
double*)(pData + 32 + nBodyIndex * 104));
889 for (
int i = 0; i < 9; i++)
891 afRotMatrix[i] = (float)SetByteOrder((
double*)(pData + 40 + (i * 8) + nBodyIndex * 104));
893 fResidual = SetByteOrder((
float*)(pData + 112 + nBodyIndex * 104));
906 if (pData ==
nullptr)
910 return SetByteOrder((
unsigned int*)(pData + 8));
914 float &fAng1,
float &fAng2,
float &fAng3)
923 if (mnMajorVersion > 1 || mnMinorVersion > 7)
925 fX = SetByteOrder((
float*)(pData + 16 + nBodyIndex * 24));
926 fY = SetByteOrder((
float*)(pData + 20 + nBodyIndex * 24));
927 fZ = SetByteOrder((
float*)(pData + 24 + nBodyIndex * 24));
928 fAng1 = SetByteOrder((
float*)(pData + 28 + nBodyIndex * 24));
929 fAng2 = SetByteOrder((
float*)(pData + 32 + nBodyIndex * 24));
930 fAng3 = SetByteOrder((
float*)(pData + 36 + nBodyIndex * 24));
934 fX = (float)SetByteOrder((
double*)(pData + 16 + nBodyIndex * 48));
935 fY = (float)SetByteOrder((
double*)(pData + 24 + nBodyIndex * 48));
936 fZ = (float)SetByteOrder((
double*)(pData + 32 + nBodyIndex * 48));
937 fAng1 = (float)SetByteOrder((
double*)(pData + 40 + nBodyIndex * 48));
938 fAng2 = (float)SetByteOrder((
double*)(pData + 48 + nBodyIndex * 48));
939 fAng3 = (float)SetByteOrder((
double*)(pData + 56 + nBodyIndex * 48));
952 if (pData ==
nullptr)
956 return SetByteOrder((
unsigned int*)(pData + 8));
960 float &fAng1,
float &fAng2,
float &fAng3,
float &fResidual)
969 if (mnMajorVersion > 1 || mnMinorVersion > 7)
971 fX = SetByteOrder((
float*)(pData + 16 + nBodyIndex * 28));
972 fY = SetByteOrder((
float*)(pData + 20 + nBodyIndex * 28));
973 fZ = SetByteOrder((
float*)(pData + 24 + nBodyIndex * 28));
974 fAng1 = SetByteOrder((
float*)(pData + 28 + nBodyIndex * 28));
975 fAng2 = SetByteOrder((
float*)(pData + 32 + nBodyIndex * 28));
976 fAng3 = SetByteOrder((
float*)(pData + 36 + nBodyIndex * 28));
977 fResidual = SetByteOrder((
float*)(pData + 40 + nBodyIndex * 28));
981 fX = (float)SetByteOrder((
double*)(pData + 16 + nBodyIndex * 56));
982 fY = (float)SetByteOrder((
double*)(pData + 24 + nBodyIndex * 56));
983 fZ = (float)SetByteOrder((
double*)(pData + 32 + nBodyIndex * 56));
984 fAng1 = (float)SetByteOrder((
double*)(pData + 40 + nBodyIndex * 56));
985 fAng2 = (float)SetByteOrder((
double*)(pData + 48 + nBodyIndex * 56));
986 fAng3 = (float)SetByteOrder((
double*)(pData + 56 + nBodyIndex * 56));
987 fResidual = SetByteOrder( (
float*)(pData + 64 + nBodyIndex * 56));
998 return mnGazeVectorCount;
1003 if (mnGazeVectorCount <= nVectorIndex)
1007 return SetByteOrder((
unsigned int*)(mpGazeVectorData[nVectorIndex]));
1014 if (nSampleCount == 0)
1018 return SetByteOrder((
unsigned int*)(mpGazeVectorData[nVectorIndex] + 4));
1025 if (nSampleCount == 0 || nSampleIndex >= nSampleCount)
1030 for (
unsigned int k = 0; k < 6; k++)
1032 *(((
float*)&sGazeVector) + k) =
1033 (
float)SetByteOrder((
float*)(mpGazeVectorData[nVectorIndex] + 8 + k *
sizeof(
float) + nSampleIndex * 24));
1036 return (isnan(sGazeVector.
fPosX) == 0);
1043 if (nSampleCount == 0 || (nBufSize < nSampleCount *
sizeof(
SGazeVector)))
1048 for (
unsigned int nSample = 0; nSample < nSampleCount; nSample++)
1050 for (
unsigned int k = 0; k < 6; k++)
1052 *(((
float*)pGazeVectorBuf) + k + (nSample *
sizeof(
SGazeVector))) =
1053 (
float)SetByteOrder((
float*)(mpGazeVectorData[nVectorIndex] + 8 + k *
sizeof(
float) + nSample * 24));
1066 return mnTimecodeCount;
1071 if (mnTimecodeCount <= nTimecodeIndex)
1081 if (mnTimecodeCount <= nTimecodeIndex)
1090 hours = 0x1f & SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8));
1091 minutes = 0x3f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 5);
1092 seconds = 0x3f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 11);
1093 frame = 0x1f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 17);
1102 if (mnTimecodeCount <= nTimecodeIndex)
1111 year = 0x007f & SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 4));
1112 day = 0x01ff & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 4)) >> 7);
1113 hours = 0x001f & SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8));
1114 minutes = 0x003f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 5);
1115 seconds = 0x003f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 11);
1116 tenths = 0x000f & (SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8)) >> 17);
1125 if (mnTimecodeCount <= nTimecodeIndex)
1134 cameraTime = ((
long long)SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 4))) << 32 |
1135 (
long long)SetByteOrder((
unsigned int*)(mpTimecodeData[nTimecodeIndex] + 8));
1148 return mnImageCameraCount;
1153 if (mnImageCameraCount <= nCameraIndex)
1157 return SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex]));
1162 if (mnImageCameraCount <= nCameraIndex)
1166 eImageFormat = (
EImageFormat)SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex] + 4));
1173 if (mnImageCameraCount <= nCameraIndex)
1177 nWidth = SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex] + 8));
1178 nHeight = SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex] + 12));
1184 float &fCropRight,
float &fCropBottom)
1186 if (mnImageCameraCount <= nCameraIndex)
1190 fCropLeft = SetByteOrder((
float*)(mpImageData[nCameraIndex] + 16));
1191 fCropTop = SetByteOrder((
float*)(mpImageData[nCameraIndex] + 20));
1192 fCropRight = SetByteOrder((
float*)(mpImageData[nCameraIndex] + 24));
1193 fCropBottom = SetByteOrder((
float*)(mpImageData[nCameraIndex] + 28));
1200 if (((mnMajorVersion == 1) && (mnMinorVersion < 8)) || mnImageCameraCount <= nCameraIndex)
1205 return SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex] + 32));
1210 if (((mnMajorVersion == 1) && (mnMinorVersion < 8)) || mnImageCameraCount <= nCameraIndex)
1215 unsigned int nSize = SetByteOrder((
unsigned int*)(mpImageData[nCameraIndex] + 32));
1217 if (nBufSize < nSize)
1221 memcpy(pDataBuf, mpImageData[nCameraIndex] + 36, nSize);
1232 return mnAnalogDeviceCount;
1237 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1241 if (mnAnalogDeviceCount <= nDeviceIndex)
1245 return SetByteOrder((
unsigned int*)(mpAnalogData[nDeviceIndex]));
1252 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1254 return SetByteOrder((
unsigned int*)(pData + 8));
1256 if (mnAnalogDeviceCount <= nDeviceIndex)
1260 return SetByteOrder((
unsigned int*)(mpAnalogData[nDeviceIndex] + 4));
1265 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1269 if (mnAnalogDeviceCount <= nDeviceIndex)
1273 return SetByteOrder((
unsigned int*)(mpAnalogData[nDeviceIndex] + 8));
1278 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1283 if (mnAnalogDeviceCount <= nDeviceIndex)
1287 return SetByteOrder((
unsigned int*)(mpAnalogData[nDeviceIndex] + 12));
1292 unsigned int nSize = 0;
1294 if (nDeviceIndex < mnAnalogDeviceCount)
1298 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1300 nSize = nChannelCount;
1301 if (nBufSize < nSize || pDataBuf ==
nullptr)
1305 for (
unsigned int i = 0; i < nSize; i++)
1307 pDataBuf[i] = (float)SetByteOrder((
double*)(mpAnalogData[nDeviceIndex] + i *
sizeof(double)));
1313 if (nBufSize < nSize || pDataBuf ==
nullptr)
1317 for (
unsigned int i = 0; i < nSize; i++)
1319 pDataBuf[i] = (float)SetByteOrder((
float*)(mpAnalogData[nDeviceIndex] + 16 + i *
sizeof(float)));
1329 unsigned int nSampleCount = 0;
1332 if (nDeviceIndex < mnAnalogDeviceCount && nChannelIndex < nChannelCount)
1334 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1336 if (nBufSize == 0 || pDataBuf ==
nullptr)
1343 pDataBuf[0] = (float)SetByteOrder((
double*)(mpAnalogData[nDeviceIndex] + nChannelIndex *
sizeof(double)));
1349 if (nBufSize < nSampleCount || pDataBuf ==
nullptr)
1353 for (
unsigned int i = 0; i < nSampleCount; i++)
1355 pDataBuf[i] = (float)SetByteOrder((
float*)(mpAnalogData[nDeviceIndex] + 16 +
1356 nChannelIndex * nSampleCount *
sizeof(float) + i *
sizeof(
float)));
1361 return nSampleCount;
1365 float &fAnalogValue)
1367 if (nDeviceIndex < mnAnalogDeviceCount)
1372 nSampleCount > nSampleIndex)
1374 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1376 fAnalogValue = (float)SetByteOrder((
double*)(mpAnalogData[nDeviceIndex] + nChannelIndex *
sizeof(double)));
1380 fAnalogValue = SetByteOrder((
float*)(mpAnalogData[nDeviceIndex] + 16 +
1381 (nChannelIndex * nSampleCount + nSampleIndex) *
sizeof(
float)));
1383 if (isnan(fAnalogValue) == 0)
1398 return mnAnalogSingleDeviceCount;
1403 if (mnAnalogSingleDeviceCount <= nDeviceIndex)
1407 return SetByteOrder((
unsigned int*)(mpAnalogSingleData[nDeviceIndex]));
1412 if (mnAnalogSingleDeviceCount <= nDeviceIndex)
1416 return SetByteOrder((
unsigned int*)(mpAnalogSingleData[nDeviceIndex] + 4));
1421 unsigned int nSize = 0;
1423 if (nDeviceIndex < mnAnalogSingleDeviceCount)
1426 if (nBufSize < nSize || pDataBuf ==
nullptr)
1430 for (
unsigned int i = 0; i < nSize; i++)
1432 pDataBuf[i] = SetByteOrder((
float*)(mpAnalogSingleData[nDeviceIndex] + 8 + i *
sizeof(
float)));
1441 if (nDeviceIndex < mnAnalogSingleDeviceCount)
1445 fValue = SetByteOrder(((
float*)(mpAnalogSingleData[nDeviceIndex] + 8 + nChannelIndex *
sizeof(
float))));
1446 return (isnan(fValue) == 0);
1458 return mnForcePlateCount;
1463 if ((mnMajorVersion == 1 && mnMinorVersion == 0) || mnForcePlateCount <= nPlateIndex)
1467 return SetByteOrder((
unsigned int*)(mpForceData[nPlateIndex]));
1472 if (mnForcePlateCount <= nPlateIndex)
1476 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1480 return SetByteOrder((
unsigned int*)(mpForceData[nPlateIndex] + 4));
1485 if (mnForcePlateCount <= nPlateIndex)
1489 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1493 return SetByteOrder((
unsigned int*)(mpForceData[nPlateIndex] + 8));
1498 unsigned int nSize = 0;
1500 if (nPlateIndex < mnForcePlateCount)
1502 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1504 if (nPlateIndex == 0)
1506 for (
unsigned int k = 0; k < 9; k++)
1508 *(((
float*)pForceBuf) + k) =
1509 (
float)SetByteOrder((
double*)(mpForceData[nPlateIndex] + k *
sizeof(
double)));
1517 if (nBufSize < nSize || pForceBuf ==
nullptr)
1521 for (
unsigned int i = 0; i < nSize; i++)
1523 for (
unsigned int k = 0; k < 9; k++)
1525 *(((
float*)&pForceBuf[i]) + k) =
1526 SetByteOrder((
float*)(mpForceData[nPlateIndex] + 12 + (k * 4) + i *
sizeof(
SForce)));
1536 if (nPlateIndex < mnForcePlateCount)
1538 if ((mnMajorVersion == 1) && (mnMinorVersion == 0))
1540 if (nPlateIndex == 0 && nForceIndex == 0)
1542 for (
unsigned int k = 0; k < 9; k++)
1544 *(((
float*)&sForce) + k) =
1545 (
float)SetByteOrder((
double*)(mpForceData[nPlateIndex] + k *
sizeof(
double)));
1548 if (isnan(*(((
float*)&sForce) + k)) != 0)
1560 for (
unsigned int k = 0; k < 9; k++)
1562 *(((
float*)&sForce) + k) =
1563 SetByteOrder((
float*)(mpForceData[nPlateIndex] + 12 + k *
sizeof(float) + nForceIndex *
sizeof(
SForce)));
1566 if (isnan(*(((
float*)&sForce) + k)) != 0)
1584 return mSkeletonCount;
1589 if (mSkeletonCount <= nSkeletonIndex)
1593 return SetByteOrder((
unsigned int*)(mpSkeletonData[nSkeletonIndex]));
1598 if (mSkeletonCount <= nSkeletonIndex)
1604 if (segmentCount == 0)
1609 if (nBufSize < segmentCount * 32 || segmentBuffer ==
nullptr)
1617 for (
unsigned int i = 0; i < segmentCount; i++)
1619 segmentBuffer[i].
id = SetByteOrder((
unsigned int*)(mpSkeletonData[nSkeletonIndex] + 4 + i * 32));
1620 segmentBuffer[i].
positionX = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 8 + i * 32));
1621 segmentBuffer[i].
positionY = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 12 + i * 32));
1622 segmentBuffer[i].
positionZ = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 16 + i * 32));
1623 segmentBuffer[i].
rotationX = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 20 + i * 32));
1624 segmentBuffer[i].
rotationY = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 24 + i * 32));
1625 segmentBuffer[i].
rotationZ = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 28 + i * 32));
1626 segmentBuffer[i].
rotationW = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 32 + i * 32));
1631 memcpy(segmentBuffer, mpSkeletonData[nSkeletonIndex] + 4,
sizeof(
SSkeletonSegment) * segmentCount);
1638 if (mSkeletonCount <= nSkeletonIndex)
1644 if (segmentCount == 0)
1649 if (segmentIndex >= segmentCount)
1656 segment.
id = SetByteOrder((
unsigned int*)(mpSkeletonData[nSkeletonIndex] + 4 + 32 * segmentIndex));
1657 segment.
positionX = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 8 + 32 * segmentIndex));
1658 segment.
positionY = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 12 + 32 * segmentIndex));
1659 segment.
positionZ = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 16 + 32 * segmentIndex));
1660 segment.
rotationX = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 20 + 32 * segmentIndex));
1661 segment.
rotationY = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 24 + 32 * segmentIndex));
1662 segment.
rotationZ = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 28 + 32 * segmentIndex));
1663 segment.
rotationW = SetByteOrder((
float*)(mpSkeletonData[nSkeletonIndex] + 32 + 32 * segmentIndex));
1667 memcpy(&segment, mpSkeletonData[nSkeletonIndex] + 4 + 32 * segmentIndex,
sizeof(
SSkeletonSegment));
1679 return mnForceSinglePlateCount;
1684 if ((mnMajorVersion == 1 && mnMinorVersion == 0) || mnForceSinglePlateCount <= nPlateIndex)
1688 return SetByteOrder((
unsigned int*)(mpForceSingleData[nPlateIndex]));
1693 if (nPlateIndex < mnForceSinglePlateCount)
1695 for (
unsigned int k = 0; k < 9; k++)
1697 *(((
float*)&sForce) + k) =
1698 SetByteOrder((
float*)(mpForceSingleData[nPlateIndex] + 4 + k *
sizeof(float)));
1701 if (isnan(*(((
float*)&sForce) + k)) != 0)
1712 float CRTPacket::SetByteOrder(
float* pfData)
1718 nTmp = ntohl(*((
unsigned int*)pfData));
1719 return *((
float*)&nTmp);
1724 double CRTPacket::SetByteOrder(
double* pfData)
1726 unsigned long long nTmp;
1730 nTmp = (((
unsigned long long)(ntohl((
long)*((
unsigned long long*)pfData))) << 32) + ntohl(*((
unsigned long long*)pfData) >> 32));
1731 return *((
double*)&nTmp);
1736 short CRTPacket::SetByteOrder(
short* pnData)
1740 return ntohs(*pnData);
1745 unsigned short CRTPacket::SetByteOrder(
unsigned short* pnData)
1749 return ntohs(*pnData);
1754 long CRTPacket::SetByteOrder(
long* pnData)
1758 return ntohl(*pnData);
1763 int CRTPacket::SetByteOrder(
int* pnData)
1767 return ntohl(*pnData);
1772 unsigned int CRTPacket::SetByteOrder(
unsigned int* pnData)
1776 return ntohl(*pnData);
1781 long long CRTPacket::SetByteOrder(
long long* pnData)
1785 return ((
unsigned long long)(ntohl((
long)*pnData)) << 32) + ntohl(*pnData >> 32);
1790 unsigned long long CRTPacket::SetByteOrder(
unsigned long long* pnData)
1794 return ((
unsigned long long)(ntohl((
long)*pnData)) << 32) + ntohl(*pnData >> 32);
unsigned int Get2DLinCameraCount()
unsigned int GetTimecodeCount()
bool Get3DNoLabelsResidualMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ, unsigned int &nId, float &fResidual)
unsigned int GetAnalogChannelCount(unsigned int nDeviceIndex)
unsigned char Get2DLinStatusFlags(unsigned int nCameraIndex)
unsigned int GetComponentSize(EComponentType eComponent)
bool GetSkeletonSegment(unsigned int nSkeletonIndex, unsigned segmentIndex, SSkeletonSegment &segment)
unsigned int Get3DNoLabelsMarkerCount()
bool Get3DMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ)
bool GetTimecodeIRIG(unsigned int nTimecodeIndex, int &year, int &day, int &hours, int &minutes, int &seconds, int &tenths)
unsigned int Get3DResidualMarkerCount()
unsigned int GetImage(unsigned int nCameraIndex, char *pDataBuf, unsigned int nBufSize)
unsigned int GetAnalogSingleDeviceCount()
#define MAX_SKELETON_COUNT
unsigned char Get2DStatusFlags(unsigned int nCameraIndex)
unsigned int Get2DCameraCount()
void GetVersion(unsigned int &nMajorVersion, unsigned int &nMinorVersion)
unsigned int GetFrameNumber()
void SetEndianness(bool bBigEndian)
#define MAX_ANALOG_DEVICE_COUNT
unsigned int GetAnalogData(unsigned int nDeviceIndex, float *pDataBuf, unsigned int nBufSize)
bool GetImageSize(unsigned int nCameraIndex, unsigned int &nWidth, unsigned int &nHeight)
unsigned int GetSkeletonCount()
unsigned short GetDropRate()
unsigned int GetAnalogSingleData(unsigned int nDeviceIndex, float *pDataBuf, unsigned int nBufSize)
char * GetCommandString()
CRTPacket(int nMajorVersion=MAJOR_VERSION, int nMinorVersion=MINOR_VERSION, bool bBigEndian=false)
#define MAX_FORCE_PLATE_COUNT
unsigned short GetOutOfSyncRate()
unsigned int Get6DOFEulerBodyCount()
unsigned int Get6DOFResidualBodyCount()
unsigned int GetAnalogSampleCount(unsigned int nDeviceIndex)
unsigned int Get3DNoLabelsResidualMarkerCount()
unsigned int GetForcePlateCount()
bool Get6DOFResidualBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ, float afRotMatrix[9], float &fResidual)
bool Get6DOFEulerBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ, float &fAng1, float &fAng2, float &fAng3)
unsigned int GetForceNumber(unsigned int nPlateIndex)
unsigned int GetForceSinglePlateId(unsigned int nPlateIndex)
unsigned int GetAnalogSampleNumber(unsigned int nDeviceIndex)
bool GetGazeVector(unsigned int nVectorIndex, unsigned int nSampleIndex, SGazeVector &nGazeVector)
bool GetTimecodeSMPTE(unsigned int nTimecodeIndex, int &hours, int &minutes, int &seconds, int &frame)
unsigned int GetAnalogDeviceId(unsigned int nDeviceIndex)
bool Get6DOFBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ, float afRotMatrix[9])
unsigned int GetImageCameraCount()
unsigned int GetAnalogSingleChannelCount(unsigned int nDeviceIndex)
bool GetImageCrop(unsigned int nCameraIndex, float &fCropLeft, float &fCropTop, float &fCropRight, float &fCropBottom)
unsigned int GetSkeletonSegmentCount(unsigned int nSkeletonIndex)
bool GetSkeletonSegments(unsigned int nSkeletonIndex, SSkeletonSegment *segmentBuf, unsigned int nBufSize)
unsigned int GetForceCount(unsigned int nPlateIndex)
unsigned int GetForceData(unsigned int nPlateIndex, SForce *pForceBuf, unsigned int nBufSize)
unsigned int Get2DMarkerCount(unsigned int nCameraIndex)
unsigned int GetAnalogSingleDeviceId(unsigned int nDeviceIndex)
bool GetForceSingleData(unsigned int nPlateIndex, SForce &pForce)
unsigned int Get6DOFBodyCount()
bool Get6DOFEulerResidualBody(unsigned int nBodyIndex, float &fX, float &fY, float &fZ, float &fAng1, float &fAng2, float &fAng3, float &fResidual)
unsigned int GetAnalogDeviceCount()
unsigned int GetForcePlateId(unsigned int nPlateIndex)
unsigned int GetGazeVectorSampleNumber(unsigned int nVectorIndex)
short GetDiscoverResponseBasePort()
bool Get3DNoLabelsMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ, unsigned int &nId)
unsigned int Get3DMarkerCount()
unsigned int GetImageCameraId(unsigned int nCameraIndex)
unsigned int GetGazeVectorSampleCount(unsigned int nVectorIndex)
bool Get2DLinMarker(unsigned int nCameraIndex, unsigned int nMarkerIndex, unsigned int &nX, unsigned int &nY, unsigned short &nXDiameter, unsigned short &nYDiameter)
unsigned int GetForceSinglePlateCount()
#define MAX_GAZE_VECTOR_COUNT
void SetVersion(unsigned int nMajorVersion, unsigned int nMinorVersion)
bool GetTimecodeType(unsigned int nTimecodeIndex, CRTPacket::ETimecodeType &timecodeType)
void GetData(char *&ptr, unsigned int &nSize)
bool Get3DResidualMarker(unsigned int nMarkerIndex, float &fX, float &fY, float &fZ, float &fResidual)
unsigned int Get6DOFEulerResidualBodyCount()
bool GetTimecodeCameraTime(unsigned int nTimecodeIndex, unsigned long long &cameraTime)
unsigned long long GetTimeStamp()
unsigned int GetGazeVectorCount()
bool GetImageFormat(unsigned int nCameraIndex, EImageFormat &eImageFormat)
bool Get2DMarker(unsigned int nCameraIndex, unsigned int nMarkerIndex, unsigned int &nX, unsigned int &nY, unsigned short &nXDiameter, unsigned short &nYDiameter)
unsigned int GetComponentCount()
bool GetEvent(EEvent &eEvent)
unsigned int Get2DLinMarkerCount(unsigned int nCameraIndex)