1 #define _CRT_SECURE_NO_WARNINGS
12 #include <arpa/inet.h>
18 mnMajorVersion = nMajorVersion;
19 mnMinorVersion = nMinorVersion;
20 mbBigEndian = bBigEndian;
26 unsigned int &nMinorVersion) {
27 nMajorVersion = mnMajorVersion;
28 nMinorVersion = mnMinorVersion;
32 unsigned int nMinorVersion) {
33 mnMajorVersion = nMajorVersion;
34 mnMinorVersion = nMinorVersion;
45 mn2DLinCameraCount = 0;
46 mnImageCameraCount = 0;
47 mnAnalogDeviceCount = 0;
48 mnAnalogSingleDeviceCount = 0;
49 mnForcePlateCount = 0;
50 mnForceSinglePlateCount = 0;
51 mnGazeVectorCount = 0;
67 unsigned int nComponent;
68 unsigned int nCamera, nDevice;
74 mn2DLinCameraCount = 0;
75 mnImageCameraCount = 0;
76 mnAnalogDeviceCount = 0;
77 mnAnalogSingleDeviceCount = 0;
78 mnForcePlateCount = 0;
79 mnForceSinglePlateCount = 0;
80 mnGazeVectorCount = 0;
87 for (nComponent = 1; nComponent <
ComponentNone; nComponent++) {
88 mpComponentData[nComponent - 1] =
nullptr;
91 char *pCurrentComponent = mpData + 24;
92 unsigned int nComponentType =
93 SetByteOrder((
unsigned int *)(pCurrentComponent + 4));
95 mnComponentCount = SetByteOrder((
unsigned int *)(mpData + 20));
97 for (nComponent = 1; nComponent <= mnComponentCount && nComponentType > 0 &&
100 mpComponentData[nComponentType - 1] = pCurrentComponent;
103 mn2DCameraCount = SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
105 mp2DData[0] = pCurrentComponent + 16;
106 for (nCamera = 1; nCamera < mn2DCameraCount; nCamera++) {
107 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
118 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
120 mp2DLinData[0] = pCurrentComponent + 16;
121 for (nCamera = 1; nCamera < mn2DLinCameraCount; nCamera++) {
122 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
123 mp2DLinData[nCamera] = mp2DLinData[nCamera - 1] + 5 +
126 mp2DLinData[nCamera] = mp2DLinData[nCamera - 1] + 4 +
133 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
135 mpImageData[0] = pCurrentComponent + 12;
136 for (nCamera = 1; nCamera < mnImageCameraCount; nCamera++) {
137 mpImageData[nCamera] =
138 mpImageData[nCamera - 1] + 36 +
139 SetByteOrder((
unsigned int *)(mpImageData[nCamera - 1] + 32));
143 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
144 mnAnalogDeviceCount = 1;
146 mnAnalogDeviceCount =
147 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
150 if ((mnMajorVersion > 1) || (mnMinorVersion > 7)) {
151 mpAnalogData[0] = pCurrentComponent + 12;
153 mpAnalogData[0] = pCurrentComponent + 16;
155 for (nDevice = 1; nDevice < mnAnalogDeviceCount; nDevice++) {
156 mpAnalogData[nDevice] =
157 mpAnalogData[nDevice - 1] + 16 +
158 (SetByteOrder((
unsigned int *)(mpAnalogData[nDevice - 1] + 4)) *
159 SetByteOrder((
unsigned int *)(mpAnalogData[nDevice - 1] + 8)) *
164 mnAnalogSingleDeviceCount =
165 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
167 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
168 mpAnalogSingleData[0] = pCurrentComponent + 12;
170 mpAnalogSingleData[0] = pCurrentComponent + 16;
173 for (nDevice = 1; nDevice < mnAnalogSingleDeviceCount; nDevice++) {
174 mpAnalogSingleData[nDevice] =
175 mpAnalogSingleData[nDevice - 1] + 8 +
177 (
unsigned int *)(mpAnalogSingleData[nDevice - 1] + 4)) *
183 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
185 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
186 mpForceData[0] = pCurrentComponent + 12;
188 mpForceData[0] = pCurrentComponent + 16;
190 for (nDevice = 1; nDevice < mnForcePlateCount; nDevice++) {
191 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
192 mpForceData[nDevice] = mpForceData[nDevice - 1] + 72;
194 mpForceData[nDevice] =
195 mpForceData[nDevice - 1] + 12 +
196 SetByteOrder((
unsigned int *)(mpForceData[nDevice - 1] + 4)) *
202 mnForceSinglePlateCount =
203 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
205 mpForceSingleData[0] = pCurrentComponent + 12;
207 for (nDevice = 1; nDevice < mnForceSinglePlateCount; nDevice++) {
208 mpForceSingleData[nDevice] = mpForceSingleData[nDevice - 1] + 4 + 36;
213 SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
215 mpGazeVectorData[0] = pCurrentComponent + 12;
217 for (nDevice = 1; nDevice < mnGazeVectorCount; nDevice++) {
218 unsigned int nPrevSampleCount =
219 SetByteOrder((
unsigned int *)(mpGazeVectorData[nDevice - 1]));
220 mpGazeVectorData[nDevice] = mpGazeVectorData[nDevice - 1] + 4 +
221 ((nPrevSampleCount == 0) ? 0 : 4) +
222 nPrevSampleCount * 24;
226 mnTimecodeCount = SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
228 mpTimecodeData[0] = pCurrentComponent + 12;
230 for (nDevice = 1; nDevice < mnTimecodeCount; nDevice++) {
231 mpTimecodeData[nDevice] = mpTimecodeData[nDevice - 1] + 12;
235 mSkeletonCount = SetByteOrder((
unsigned int *)(pCurrentComponent + 8));
237 mpSkeletonData[0] = pCurrentComponent + 12;
239 for (nDevice = 1; nDevice < mSkeletonCount; nDevice++) {
240 unsigned int prevSegmentCount =
241 SetByteOrder((
unsigned int *)(mpSkeletonData[nDevice - 1]));
242 mpSkeletonData[nDevice] =
243 mpSkeletonData[nDevice - 1] + 4 + prevSegmentCount * 32;
246 pCurrentComponent += SetByteOrder((
int *)pCurrentComponent);
247 nComponentType = SetByteOrder((
unsigned int *)(pCurrentComponent + 4));
253 if (mpData ==
nullptr) {
257 nSize = *((
int *)mpData);
262 if (mpData ==
nullptr) {
265 if (mbBigEndian || ((mnMajorVersion == 1) && (mnMinorVersion == 0))) {
266 return ntohl(*((
unsigned int *)mpData));
268 return *((
unsigned int *)mpData);
275 if (mbBigEndian || ((mnMajorVersion == 1) && (mnMinorVersion == 0))) {
276 return (
EPacketType)ntohl(*(
unsigned int *)(mpData + 4));
278 return (
EPacketType) * ((
unsigned int *)(mpData + 4));
283 return SetByteOrder((
long long *)(mpData + 8));
290 return SetByteOrder((
unsigned int *)(mpData + 16));
297 return ntohl(*((
unsigned int *)pData));
299 return *((
unsigned int *)pData);
303 if (
GetSize(pData, bBigEndian) < 8) {
307 return (
EPacketType)ntohl(*(
unsigned int *)(pData + 4));
309 return (
EPacketType) * ((
unsigned int *)(pData + 4));
315 return ((
unsigned long long)(ntohl((
long)*((
long long *)(pData + 8))))
317 ntohl(*((
long long *)(pData + 8)) >> 32);
319 return *((
long long *)(pData + 8));
327 return ntohl(*((
unsigned int *)(pData + 16)));
329 return *((
unsigned int *)(pData + 16));
337 if (eComponent < Component3d || eComponent >=
ComponentNone) {
340 if (mpComponentData[eComponent - 1] ==
nullptr) {
343 return SetByteOrder((
unsigned int *)(mpComponentData[eComponent - 1]));
376 if (
GetSize() == (8 + strlen(mpData + 8) + 1 + 2)) {
377 return ntohs(*((
short *)(mpData + 8 + strlen(mpData + 8) + 1)));
385 if (
GetSize(pData, bBigEndian) == (8 + strlen(pData + 8) + 1 + 2)) {
386 return ntohs(*((
short *)(pData + 8 + strlen(pData + 8) + 1)));
394 eEvent = (
EEvent) * (mpData + 8);
402 eEvent = (
EEvent) * (pData + 8);
409 for (
int i = 0; i <= 1; i++) {
410 if (mpComponentData[i] !=
nullptr) {
411 return SetByteOrder((
unsigned short *)(mpComponentData[i] + 12));
414 for (
int i = 4; i <= 11; i++) {
415 if (mpComponentData[i] !=
nullptr) {
416 return SetByteOrder((
unsigned short *)(mpComponentData[i] + 12));
423 for (
int i = 0; i <= 1; i++) {
424 if (mpComponentData[i] !=
nullptr) {
425 return SetByteOrder((
unsigned short *)(mpComponentData[i] + 14));
428 for (
int i = 4; i <= 11; i++) {
429 if (mpComponentData[i] !=
nullptr) {
430 return SetByteOrder((
unsigned short *)(mpComponentData[i] + 14));
442 if (mn2DCameraCount <= nCameraIndex) {
445 return SetByteOrder((
unsigned int *)(mp2DData[nCameraIndex]));
449 if (mn2DCameraCount > nCameraIndex &&
450 ((mnMajorVersion > 1) || (mnMinorVersion > 7))) {
451 return *((
unsigned char *)(mp2DData[nCameraIndex] + 4));
457 unsigned int nMarkerIndex,
unsigned int &nX,
458 unsigned int &nY,
unsigned short &nXDiameter,
459 unsigned short &nYDiameter) {
462 if (mn2DCameraCount <= nCameraIndex ||
467 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
473 (
unsigned int *)(mp2DData[nCameraIndex] + nOffset + nMarkerIndex * 12));
474 nY = SetByteOrder((
unsigned int *)(mp2DData[nCameraIndex] + nOffset + 4 +
477 SetByteOrder((
unsigned short *)(mp2DData[nCameraIndex] + nOffset + 8 +
480 SetByteOrder((
unsigned short *)(mp2DData[nCameraIndex] + nOffset + 10 +
492 if (mn2DLinCameraCount <= nCameraIndex) {
495 return SetByteOrder((
unsigned int *)(mp2DLinData[nCameraIndex]));
499 if (mn2DLinCameraCount > nCameraIndex &&
500 ((mnMajorVersion > 1) || (mnMinorVersion > 7))) {
501 return *((
unsigned char *)(mp2DLinData[nCameraIndex] + 4));
507 unsigned int nMarkerIndex,
unsigned int &nX,
508 unsigned int &nY,
unsigned short &nXDiameter,
509 unsigned short &nYDiameter) {
512 if (mn2DLinCameraCount <= nCameraIndex ||
517 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
522 nX = SetByteOrder((
unsigned int *)(mp2DLinData[nCameraIndex] + nOffset +
524 nY = SetByteOrder((
unsigned int *)(mp2DLinData[nCameraIndex] + nOffset + 4 +
527 SetByteOrder((
unsigned short *)(mp2DLinData[nCameraIndex] + nOffset + 8 +
530 SetByteOrder((
unsigned short *)(mp2DLinData[nCameraIndex] + nOffset + 10 +
546 if (pData ==
nullptr) {
549 return SetByteOrder((
unsigned int *)(pData + 8));
560 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
561 fX = SetByteOrder((
float *)(pData + 16 + nMarkerIndex * 12));
562 fY = SetByteOrder((
float *)(pData + 20 + nMarkerIndex * 12));
563 fZ = SetByteOrder((
float *)(pData + 24 + nMarkerIndex * 12));
565 fX = (float)SetByteOrder((
double *)(pData + 16 + nMarkerIndex * 24));
566 fY = (float)SetByteOrder((
double *)(pData + 24 + nMarkerIndex * 24));
567 fZ = (float)SetByteOrder((
double *)(pData + 32 + nMarkerIndex * 24));
569 return (isnan(fX) == 0);
578 if (pData ==
nullptr) {
581 return SetByteOrder((
unsigned int *)(pData + 8));
585 float &fY,
float &fZ,
float &fResidual) {
592 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
593 fX = SetByteOrder((
float *)(pData + 16 + nMarkerIndex * 16));
594 fY = SetByteOrder((
float *)(pData + 20 + nMarkerIndex * 16));
595 fZ = SetByteOrder((
float *)(pData + 24 + nMarkerIndex * 16));
596 fResidual = SetByteOrder((
float *)(pData + 28 + nMarkerIndex * 16));
598 fX = (float)SetByteOrder((
double *)(pData + 16 + nMarkerIndex * 32));
599 fY = (float)SetByteOrder((
double *)(pData + 24 + nMarkerIndex * 32));
600 fZ = (float)SetByteOrder((
double *)(pData + 32 + nMarkerIndex * 32));
601 fResidual = SetByteOrder((
float *)(pData + 40 + nMarkerIndex * 32));
603 return (isnan(fX) == 0);
612 if (pData ==
nullptr) {
615 return SetByteOrder((
unsigned int *)(pData + 8));
619 float &fY,
float &fZ,
unsigned int &nId) {
626 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
627 fX = SetByteOrder((
float *)(pData + 16 + nMarkerIndex * 16));
628 fY = SetByteOrder((
float *)(pData + 20 + nMarkerIndex * 16));
629 fZ = SetByteOrder((
float *)(pData + 24 + nMarkerIndex * 16));
630 nId = SetByteOrder((
unsigned int *)(pData + 28 + nMarkerIndex * 16));
632 fX = (float)SetByteOrder((
double *)(pData + 16 + nMarkerIndex * 32));
633 fY = (float)SetByteOrder((
double *)(pData + 24 + nMarkerIndex * 32));
634 fZ = (float)SetByteOrder((
double *)(pData + 32 + nMarkerIndex * 32));
635 nId = SetByteOrder((
unsigned int *)(pData + 40 + nMarkerIndex * 32));
646 if (pData ==
nullptr) {
649 return SetByteOrder((
unsigned int *)(pData + 8));
653 float &fX,
float &fY,
float &fZ,
662 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
663 fX = SetByteOrder((
float *)(pData + 16 + nMarkerIndex * 20));
664 fY = SetByteOrder((
float *)(pData + 20 + nMarkerIndex * 20));
665 fZ = SetByteOrder((
float *)(pData + 24 + nMarkerIndex * 20));
666 nId = SetByteOrder((
unsigned int *)(pData + 28 + nMarkerIndex * 20));
667 fResidual = SetByteOrder((
float *)(pData + 32 + nMarkerIndex * 20));
669 fX = (float)SetByteOrder((
double *)(pData + 16 + nMarkerIndex * 32));
670 fY = (float)SetByteOrder((
double *)(pData + 24 + nMarkerIndex * 32));
671 fZ = (float)SetByteOrder((
double *)(pData + 32 + nMarkerIndex * 32));
672 nId = SetByteOrder((
unsigned int *)(pData + 40 + nMarkerIndex * 32));
673 fResidual = SetByteOrder((
float *)(pData + 44 + nMarkerIndex * 32));
684 if (pData ==
nullptr) {
687 return SetByteOrder((
unsigned int *)(pData + 8));
691 float &fZ,
float afRotMatrix[9]) {
698 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
699 fX = SetByteOrder((
float *)(pData + 16 + nBodyIndex * 48));
700 fY = SetByteOrder((
float *)(pData + 20 + nBodyIndex * 48));
701 fZ = SetByteOrder((
float *)(pData + 24 + nBodyIndex * 48));
702 for (
int i = 0; i < 9; i++) {
704 SetByteOrder((
float *)(pData + 28 + (i * 4) + nBodyIndex * 48));
707 fX = (float)SetByteOrder((
double *)(pData + 16 + nBodyIndex * 96));
708 fY = (float)SetByteOrder((
double *)(pData + 24 + nBodyIndex * 96));
709 fZ = (float)SetByteOrder((
double *)(pData + 32 + nBodyIndex * 96));
710 for (
int i = 0; i < 9; i++) {
711 afRotMatrix[i] = (float)SetByteOrder(
712 (
double *)(pData + 40 + (i * 4) + nBodyIndex * 96));
724 if (pData ==
nullptr) {
727 return SetByteOrder((
unsigned int *)(pData + 8));
731 float &fY,
float &fZ,
float afRotMatrix[9],
739 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
740 fX = SetByteOrder((
float *)(pData + 16 + nBodyIndex * 52));
741 fY = SetByteOrder((
float *)(pData + 20 + nBodyIndex * 52));
742 fZ = SetByteOrder((
float *)(pData + 24 + nBodyIndex * 52));
743 for (
int i = 0; i < 9; i++) {
745 SetByteOrder((
float *)(pData + 28 + (i * 4) + nBodyIndex * 52));
747 fResidual = SetByteOrder((
float *)(pData + 64 + nBodyIndex * 52));
749 fX = (float)SetByteOrder((
double *)(pData + 16 + nBodyIndex * 104));
750 fY = (float)SetByteOrder((
double *)(pData + 24 + nBodyIndex * 104));
751 fZ = (float)SetByteOrder((
double *)(pData + 32 + nBodyIndex * 104));
752 for (
int i = 0; i < 9; i++) {
753 afRotMatrix[i] = (float)SetByteOrder(
754 (
double *)(pData + 40 + (i * 8) + nBodyIndex * 104));
756 fResidual = SetByteOrder((
float *)(pData + 112 + nBodyIndex * 104));
767 if (pData ==
nullptr) {
770 return SetByteOrder((
unsigned int *)(pData + 8));
774 float &fZ,
float &fAng1,
float &fAng2,
782 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
783 fX = SetByteOrder((
float *)(pData + 16 + nBodyIndex * 24));
784 fY = SetByteOrder((
float *)(pData + 20 + nBodyIndex * 24));
785 fZ = SetByteOrder((
float *)(pData + 24 + nBodyIndex * 24));
786 fAng1 = SetByteOrder((
float *)(pData + 28 + nBodyIndex * 24));
787 fAng2 = SetByteOrder((
float *)(pData + 32 + nBodyIndex * 24));
788 fAng3 = SetByteOrder((
float *)(pData + 36 + nBodyIndex * 24));
790 fX = (float)SetByteOrder((
double *)(pData + 16 + nBodyIndex * 48));
791 fY = (float)SetByteOrder((
double *)(pData + 24 + nBodyIndex * 48));
792 fZ = (float)SetByteOrder((
double *)(pData + 32 + nBodyIndex * 48));
793 fAng1 = (float)SetByteOrder((
double *)(pData + 40 + nBodyIndex * 48));
794 fAng2 = (float)SetByteOrder((
double *)(pData + 48 + nBodyIndex * 48));
795 fAng3 = (float)SetByteOrder((
double *)(pData + 56 + nBodyIndex * 48));
806 if (pData ==
nullptr) {
809 return SetByteOrder((
unsigned int *)(pData + 8));
813 float &fY,
float &fZ,
float &fAng1,
814 float &fAng2,
float &fAng3,
822 if (mnMajorVersion > 1 || mnMinorVersion > 7) {
823 fX = SetByteOrder((
float *)(pData + 16 + nBodyIndex * 28));
824 fY = SetByteOrder((
float *)(pData + 20 + nBodyIndex * 28));
825 fZ = SetByteOrder((
float *)(pData + 24 + nBodyIndex * 28));
826 fAng1 = SetByteOrder((
float *)(pData + 28 + nBodyIndex * 28));
827 fAng2 = SetByteOrder((
float *)(pData + 32 + nBodyIndex * 28));
828 fAng3 = SetByteOrder((
float *)(pData + 36 + nBodyIndex * 28));
829 fResidual = SetByteOrder((
float *)(pData + 40 + nBodyIndex * 28));
831 fX = (float)SetByteOrder((
double *)(pData + 16 + nBodyIndex * 56));
832 fY = (float)SetByteOrder((
double *)(pData + 24 + nBodyIndex * 56));
833 fZ = (float)SetByteOrder((
double *)(pData + 32 + nBodyIndex * 56));
834 fAng1 = (float)SetByteOrder((
double *)(pData + 40 + nBodyIndex * 56));
835 fAng2 = (float)SetByteOrder((
double *)(pData + 48 + nBodyIndex * 56));
836 fAng3 = (float)SetByteOrder((
double *)(pData + 56 + nBodyIndex * 56));
837 fResidual = SetByteOrder((
float *)(pData + 64 + nBodyIndex * 56));
848 if (mnGazeVectorCount <= nVectorIndex) {
851 return SetByteOrder((
unsigned int *)(mpGazeVectorData[nVectorIndex]));
857 if (nSampleCount == 0) {
860 return SetByteOrder((
unsigned int *)(mpGazeVectorData[nVectorIndex] + 4));
864 unsigned int nSampleIndex,
868 if (nSampleCount == 0 || nSampleIndex >= nSampleCount) {
872 for (
unsigned int k = 0; k < 6; k++) {
873 *(((
float *)&sGazeVector) + k) =
874 (
float)SetByteOrder((
float *)(mpGazeVectorData[nVectorIndex] + 8 +
875 k *
sizeof(
float) + nSampleIndex * 24));
878 return (isnan(sGazeVector.
fPosX) == 0);
883 unsigned int nBufSize) {
886 if (nSampleCount == 0 || (nBufSize < nSampleCount *
sizeof(
SGazeVector))) {
890 for (
unsigned int nSample = 0; nSample < nSampleCount; nSample++) {
891 for (
unsigned int k = 0; k < 6; k++) {
892 *(((
float *)pGazeVectorBuf) + k + (nSample *
sizeof(
SGazeVector))) =
893 (
float)SetByteOrder((
float *)(mpGazeVectorData[nVectorIndex] + 8 +
894 k *
sizeof(
float) + nSample * 24));
908 if (mnTimecodeCount <= nTimecodeIndex) {
912 (
unsigned int *)(mpTimecodeData[nTimecodeIndex]));
917 int &minutes,
int &seconds,
int &frame) {
918 if (mnTimecodeCount <= nTimecodeIndex) {
924 hours = 0x1f & SetByteOrder(
925 (
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8));
928 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
932 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
936 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
945 int &day,
int &hours,
int &minutes,
946 int &seconds,
int &tenths) {
947 if (mnTimecodeCount <= nTimecodeIndex) {
954 SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 4));
957 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 4)) >>
961 SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8));
964 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
968 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
972 (SetByteOrder((
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8)) >>
981 unsigned long long &cameraTime) {
982 if (mnTimecodeCount <= nTimecodeIndex) {
988 cameraTime = ((
long long)SetByteOrder(
989 (
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 4)))
991 (
long long)SetByteOrder(
992 (
unsigned int *)(mpTimecodeData[nTimecodeIndex] + 8));
1005 if (mnImageCameraCount <= nCameraIndex) {
1008 return SetByteOrder((
unsigned int *)(mpImageData[nCameraIndex]));
1013 if (mnImageCameraCount <= nCameraIndex) {
1017 (
unsigned int *)(mpImageData[nCameraIndex] + 4));
1023 unsigned int &nHeight) {
1024 if (mnImageCameraCount <= nCameraIndex) {
1027 nWidth = SetByteOrder((
unsigned int *)(mpImageData[nCameraIndex] + 8));
1028 nHeight = SetByteOrder((
unsigned int *)(mpImageData[nCameraIndex] + 12));
1034 float &fCropTop,
float &fCropRight,
1035 float &fCropBottom) {
1036 if (mnImageCameraCount <= nCameraIndex) {
1039 fCropLeft = SetByteOrder((
float *)(mpImageData[nCameraIndex] + 16));
1040 fCropTop = SetByteOrder((
float *)(mpImageData[nCameraIndex] + 20));
1041 fCropRight = SetByteOrder((
float *)(mpImageData[nCameraIndex] + 24));
1042 fCropBottom = SetByteOrder((
float *)(mpImageData[nCameraIndex] + 28));
1048 if (((mnMajorVersion == 1) && (mnMinorVersion < 8)) ||
1049 mnImageCameraCount <= nCameraIndex) {
1053 return SetByteOrder((
unsigned int *)(mpImageData[nCameraIndex] + 32));
1057 unsigned int nBufSize) {
1058 if (((mnMajorVersion == 1) && (mnMinorVersion < 8)) ||
1059 mnImageCameraCount <= nCameraIndex) {
1063 unsigned int nSize =
1064 SetByteOrder((
unsigned int *)(mpImageData[nCameraIndex] + 32));
1066 if (nBufSize < nSize) {
1069 memcpy(pDataBuf, mpImageData[nCameraIndex] + 36, nSize);
1080 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1083 if (mnAnalogDeviceCount <= nDeviceIndex) {
1086 return SetByteOrder((
unsigned int *)(mpAnalogData[nDeviceIndex]));
1092 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1093 return SetByteOrder((
unsigned int *)(pData + 8));
1095 if (mnAnalogDeviceCount <= nDeviceIndex) {
1098 return SetByteOrder((
unsigned int *)(mpAnalogData[nDeviceIndex] + 4));
1102 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1105 if (mnAnalogDeviceCount <= nDeviceIndex) {
1108 return SetByteOrder((
unsigned int *)(mpAnalogData[nDeviceIndex] + 8));
1112 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1116 if (mnAnalogDeviceCount <= nDeviceIndex) {
1119 return SetByteOrder((
unsigned int *)(mpAnalogData[nDeviceIndex] + 12));
1123 float *pDataBuf,
unsigned int nBufSize) {
1124 unsigned int nSize = 0;
1126 if (nDeviceIndex < mnAnalogDeviceCount) {
1129 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1130 nSize = nChannelCount;
1131 if (nBufSize < nSize || pDataBuf ==
nullptr) {
1134 for (
unsigned int i = 0; i < nSize; i++) {
1135 pDataBuf[i] = (float)SetByteOrder(
1136 (
double *)(mpAnalogData[nDeviceIndex] + i *
sizeof(double)));
1140 if (nBufSize < nSize || pDataBuf ==
nullptr) {
1143 for (
unsigned int i = 0; i < nSize; i++) {
1144 pDataBuf[i] = (float)SetByteOrder(
1145 (
float *)(mpAnalogData[nDeviceIndex] + 16 + i *
sizeof(float)));
1154 unsigned int nChannelIndex,
1155 float *pDataBuf,
unsigned int nBufSize) {
1156 unsigned int nSampleCount = 0;
1159 if (nDeviceIndex < mnAnalogDeviceCount && nChannelIndex < nChannelCount) {
1160 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1161 if (nBufSize == 0 || pDataBuf ==
nullptr) {
1166 (float)SetByteOrder((
double *)(mpAnalogData[nDeviceIndex] +
1167 nChannelIndex *
sizeof(double)));
1171 if (nBufSize < nSampleCount || pDataBuf ==
nullptr) {
1174 for (
unsigned int i = 0; i < nSampleCount; i++) {
1175 pDataBuf[i] = (float)SetByteOrder(
1176 (
float *)(mpAnalogData[nDeviceIndex] + 16 +
1177 nChannelIndex * nSampleCount *
sizeof(float) +
1178 i *
sizeof(
float)));
1183 return nSampleCount;
1187 unsigned int nChannelIndex,
1188 unsigned int nSampleIndex,
float &fAnalogValue) {
1189 if (nDeviceIndex < mnAnalogDeviceCount) {
1193 nSampleCount > nSampleIndex) {
1194 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1196 (float)SetByteOrder((
double *)(mpAnalogData[nDeviceIndex] +
1197 nChannelIndex *
sizeof(double)));
1199 fAnalogValue = SetByteOrder(
1200 (
float *)(mpAnalogData[nDeviceIndex] + 16 +
1201 (nChannelIndex * nSampleCount + nSampleIndex) *
1204 if (isnan(fAnalogValue) == 0) {
1216 return mnAnalogSingleDeviceCount;
1220 if (mnAnalogSingleDeviceCount <= nDeviceIndex) {
1223 return SetByteOrder((
unsigned int *)(mpAnalogSingleData[nDeviceIndex]));
1227 if (mnAnalogSingleDeviceCount <= nDeviceIndex) {
1230 return SetByteOrder((
unsigned int *)(mpAnalogSingleData[nDeviceIndex] + 4));
1235 unsigned int nBufSize) {
1236 unsigned int nSize = 0;
1238 if (nDeviceIndex < mnAnalogSingleDeviceCount) {
1240 if (nBufSize < nSize || pDataBuf ==
nullptr) {
1243 for (
unsigned int i = 0; i < nSize; i++) {
1244 pDataBuf[i] = SetByteOrder(
1245 (
float *)(mpAnalogSingleData[nDeviceIndex] + 8 + i *
sizeof(
float)));
1253 unsigned int nChannelIndex,
float &fValue) {
1254 if (nDeviceIndex < mnAnalogSingleDeviceCount) {
1256 fValue = SetByteOrder(((
float *)(mpAnalogSingleData[nDeviceIndex] + 8 +
1257 nChannelIndex *
sizeof(
float))));
1258 return (isnan(fValue) == 0);
1270 if ((mnMajorVersion == 1 && mnMinorVersion == 0) ||
1271 mnForcePlateCount <= nPlateIndex) {
1274 return SetByteOrder((
unsigned int *)(mpForceData[nPlateIndex]));
1278 if (mnForcePlateCount <= nPlateIndex) {
1281 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1284 return SetByteOrder((
unsigned int *)(mpForceData[nPlateIndex] + 4));
1288 if (mnForcePlateCount <= nPlateIndex) {
1291 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1294 return SetByteOrder((
unsigned int *)(mpForceData[nPlateIndex] + 8));
1298 SForce *pForceBuf,
unsigned int nBufSize) {
1299 unsigned int nSize = 0;
1301 if (nPlateIndex < mnForcePlateCount) {
1302 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1303 if (nPlateIndex == 0) {
1304 for (
unsigned int k = 0; k < 9; k++) {
1305 *(((
float *)pForceBuf) + k) = (
float)SetByteOrder(
1306 (
double *)(mpForceData[nPlateIndex] + k *
sizeof(
double)));
1312 if (nBufSize < nSize || pForceBuf ==
nullptr) {
1315 for (
unsigned int i = 0; i < nSize; i++) {
1316 for (
unsigned int k = 0; k < 9; k++) {
1317 *(((
float *)&pForceBuf[i]) + k) =
1318 SetByteOrder((
float *)(mpForceData[nPlateIndex] + 12 + (k * 4) +
1329 if (nPlateIndex < mnForcePlateCount) {
1330 if ((mnMajorVersion == 1) && (mnMinorVersion == 0)) {
1331 if (nPlateIndex == 0 && nForceIndex == 0) {
1332 for (
unsigned int k = 0; k < 9; k++) {
1333 *(((
float *)&sForce) + k) = (
float)SetByteOrder(
1334 (
double *)(mpForceData[nPlateIndex] + k *
sizeof(
double)));
1337 if (isnan(*(((
float *)&sForce) + k)) != 0) {
1345 for (
unsigned int k = 0; k < 9; k++) {
1346 *(((
float *)&sForce) + k) = SetByteOrder(
1347 (
float *)(mpForceData[nPlateIndex] + 12 + k *
sizeof(float) +
1348 nForceIndex *
sizeof(
SForce)));
1351 if (isnan(*(((
float *)&sForce) + k)) != 0) {
1368 if (mSkeletonCount <= nSkeletonIndex) {
1371 return SetByteOrder((
unsigned int *)(mpSkeletonData[nSkeletonIndex]));
1376 unsigned int nBufSize) {
1377 if (mSkeletonCount <= nSkeletonIndex) {
1382 if (segmentCount == 0) {
1386 if (nBufSize < segmentCount * 32 || segmentBuffer ==
nullptr) {
1392 for (
unsigned int i = 0; i < segmentCount; i++) {
1393 segmentBuffer[i].
id = SetByteOrder(
1394 (
unsigned int *)(mpSkeletonData[nSkeletonIndex] + 4 + i * 32));
1396 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 8 + i * 32));
1398 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 12 + i * 32));
1400 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 16 + i * 32));
1402 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 20 + i * 32));
1404 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 24 + i * 32));
1406 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 28 + i * 32));
1408 SetByteOrder((
float *)(mpSkeletonData[nSkeletonIndex] + 32 + i * 32));
1411 memcpy(segmentBuffer, mpSkeletonData[nSkeletonIndex] + 4,
1418 unsigned segmentIndex,
1420 if (mSkeletonCount <= nSkeletonIndex) {
1425 if (segmentCount == 0) {
1429 if (segmentIndex >= segmentCount) {
1434 segment.
id = SetByteOrder((
unsigned int *)(mpSkeletonData[nSkeletonIndex] +
1435 4 + 32 * segmentIndex));
1437 (
float *)(mpSkeletonData[nSkeletonIndex] + 8 + 32 * segmentIndex));
1439 (
float *)(mpSkeletonData[nSkeletonIndex] + 12 + 32 * segmentIndex));
1441 (
float *)(mpSkeletonData[nSkeletonIndex] + 16 + 32 * segmentIndex));
1443 (
float *)(mpSkeletonData[nSkeletonIndex] + 20 + 32 * segmentIndex));
1445 (
float *)(mpSkeletonData[nSkeletonIndex] + 24 + 32 * segmentIndex));
1447 (
float *)(mpSkeletonData[nSkeletonIndex] + 28 + 32 * segmentIndex));
1449 (
float *)(mpSkeletonData[nSkeletonIndex] + 32 + 32 * segmentIndex));
1451 memcpy(&segment, mpSkeletonData[nSkeletonIndex] + 4 + 32 * segmentIndex,
1462 return mnForceSinglePlateCount;
1466 if ((mnMajorVersion == 1 && mnMinorVersion == 0) ||
1467 mnForceSinglePlateCount <= nPlateIndex) {
1470 return SetByteOrder((
unsigned int *)(mpForceSingleData[nPlateIndex]));
1474 if (nPlateIndex < mnForceSinglePlateCount) {
1475 for (
unsigned int k = 0; k < 9; k++) {
1476 *(((
float *)&sForce) + k) = SetByteOrder(
1477 (
float *)(mpForceSingleData[nPlateIndex] + 4 + k *
sizeof(float)));
1480 if (isnan(*(((
float *)&sForce) + k)) != 0) {
1490 float CRTPacket::SetByteOrder(
float *pfData) {
1494 nTmp = ntohl(*((
unsigned int *)pfData));
1495 return *((
float *)&nTmp);
1500 double CRTPacket::SetByteOrder(
double *pfData) {
1501 unsigned long long nTmp;
1504 nTmp = (((
unsigned long long)(ntohl((
long)*((
unsigned long long *)pfData)))
1506 ntohl(*((
unsigned long long *)pfData) >> 32));
1507 return *((
double *)&nTmp);
1512 short CRTPacket::SetByteOrder(
short *pnData) {
1514 return ntohs(*pnData);
1519 unsigned short CRTPacket::SetByteOrder(
unsigned short *pnData) {
1521 return ntohs(*pnData);
1526 long CRTPacket::SetByteOrder(
long *pnData) {
1528 return ntohl(*pnData);
1533 int CRTPacket::SetByteOrder(
int *pnData) {
1535 return ntohl(*pnData);
1540 unsigned int CRTPacket::SetByteOrder(
unsigned int *pnData) {
1542 return ntohl(*pnData);
1547 long long CRTPacket::SetByteOrder(
long long *pnData) {
1549 return ((
unsigned long long)(ntohl((
long)*pnData)) << 32) +
1550 ntohl(*pnData >> 32);
1555 unsigned long long CRTPacket::SetByteOrder(
unsigned long long *pnData) {
1557 return ((
unsigned long long)(ntohl((
long)*pnData)) << 32) +
1558 ntohl(*pnData >> 32);