00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __XN_TYPES_H__
00026 #define __XN_TYPES_H__
00027
00028
00029
00030
00031 #include <XnStatus.h>
00032 #include <XnOS.h>
00033
00034
00035
00036
00038 #define XN_MAX_NAME_LENGTH 80
00039
00041 #define XN_MAX_CREATION_INFO_LENGTH 255
00042
00044 #define XN_MAX_LICENSE_LENGTH 255
00045
00047 #define XN_NODE_WAIT_FOR_DATA_TIMEOUT 2000
00048
00050 #define XN_VENDOR_OPEN_NI "OpenNI"
00051
00053 #define XN_FORMAT_NAME_ONI "oni"
00054
00056 #define XN_PLAYBACK_SPEED_FASTEST 0.0
00057
00058
00059
00060
00061 struct XnInternalNodeData;
00062
00063
00064
00065
00066
00067 #pragma pack (push, 1)
00068
00072 typedef struct XnContext XnContext;
00073
00077 typedef struct XnInternalNodeData* XnNodeHandle;
00078
00082 typedef XnUInt32 XnLockHandle;
00083
00087 typedef enum XnProductionNodeType
00088 {
00090 XN_NODE_TYPE_DEVICE = 1,
00091
00093 XN_NODE_TYPE_DEPTH = 2,
00094
00096 XN_NODE_TYPE_IMAGE = 3,
00097
00099 XN_NODE_TYPE_AUDIO = 4,
00100
00102 XN_NODE_TYPE_IR = 5,
00103
00105 XN_NODE_TYPE_USER = 6,
00106
00108 XN_NODE_TYPE_RECORDER = 7,
00109
00111 XN_NODE_TYPE_PLAYER = 8,
00112
00114 XN_NODE_TYPE_GESTURE = 9,
00115
00117 XN_NODE_TYPE_SCENE = 10,
00118
00120 XN_NODE_TYPE_HANDS = 11,
00121
00123 XN_NODE_TYPE_CODEC = 12,
00124 } XnProductionNodeType;
00125
00129 typedef struct XnVersion
00130 {
00131 XnUInt8 nMajor;
00132 XnUInt8 nMinor;
00133 XnUInt16 nMaintenance;
00134 XnUInt32 nBuild;
00135 } XnVersion;
00136
00140 typedef struct XnProductionNodeDescription
00141 {
00143 XnProductionNodeType Type;
00145 XnChar strVendor[XN_MAX_NAME_LENGTH];
00147 XnChar strName[XN_MAX_NAME_LENGTH];
00149 XnVersion Version;
00150 } XnProductionNodeDescription;
00151
00155 typedef struct XnNodeInfo XnNodeInfo;
00156
00160 typedef struct XnNodeInfoListNode XnNodeInfoListNode;
00161
00165 typedef struct XnNodeInfoList XnNodeInfoList;
00166
00170 typedef struct XnNodeInfoListIterator
00171 {
00172 XnNodeInfoListNode* pCurrent;
00173 } XnNodeInfoListIterator;
00174
00175 typedef struct XnNodeQuery XnNodeQuery;
00176
00180 typedef struct XnLicense
00181 {
00183 XnChar strVendor[XN_MAX_NAME_LENGTH];
00185 XnChar strKey[XN_MAX_LICENSE_LENGTH];
00186 } XnLicense;
00187
00192 typedef struct XnEnumerationErrors XnEnumerationErrors;
00193
00197 typedef void* XnModuleNodeHandle;
00198
00205 typedef void (XN_CALLBACK_TYPE* XnStateChangedHandler)(XnNodeHandle hNode, void* pCookie);
00206
00213 typedef void (XN_CALLBACK_TYPE* XnErrorStateChangedHandler)(XnStatus errorState, void* pCookie);
00214
00216 typedef void* XnCallbackHandle;
00217
00218 typedef struct XnModuleExportedProductionNodeInterface XnModuleExportedProductionNodeInterface;
00219
00220
00221
00222
00223
00225 typedef XnUInt16 XnDepthPixel;
00226
00228 #define XN_DEPTH_NO_SAMPLE_VALUE ((XnDepthPixel)0)
00229
00231 typedef struct XnRGB24Pixel
00232 {
00233 XnUInt8 nRed;
00234 XnUInt8 nGreen;
00235 XnUInt8 nBlue;
00236 } XnRGB24Pixel;
00237
00239 typedef struct XnYUV422DoublePixel
00240 {
00241 XnUInt8 nU;
00242 XnUInt8 nY1;
00243 XnUInt8 nV;
00244 XnUInt8 nY2;
00245 } XnYUV422DoublePixel;
00246
00248 typedef XnUInt8 XnGrayscale8Pixel;
00249
00251 typedef XnUInt16 XnGrayscale16Pixel;
00252
00254 typedef XnGrayscale16Pixel XnIRPixel;
00255
00257 typedef XnUInt16 XnLabel;
00258
00259
00260
00261
00262 #define XN_CAPABILITY_EXTENDED_SERIALIZATION "ExtendedSerialization"
00263 #define XN_CAPABILITY_MIRROR "Mirror"
00264 #define XN_CAPABILITY_ALTERNATIVE_VIEW_POINT "AlternativeViewPoint"
00265 #define XN_CAPABILITY_CROPPING "Cropping"
00266 #define XN_CAPABILITY_USER_POSITION "UserPosition"
00267 #define XN_CAPABILITY_SKELETON "User::Skeleton"
00268 #define XN_CAPABILITY_POSE_DETECTION "User::PoseDetection"
00269 #define XN_CAPABILITY_LOCK_AWARE "LockAware"
00270 #define XN_CAPABILITY_ERROR_STATE "ErrorState"
00271 #define XN_CAPABILITY_FRAME_SYNC "FrameSync"
00272
00273
00274
00275
00276
00277 #define XN_QQVGA_X_RES 160
00278 #define XN_QQVGA_Y_RES 120
00279
00280 #define XN_CGA_X_RES 320
00281 #define XN_CGA_Y_RES 200
00282
00283 #define XN_QVGA_X_RES 320
00284 #define XN_QVGA_Y_RES 240
00285
00286 #define XN_VGA_X_RES 640
00287 #define XN_VGA_Y_RES 480
00288
00289 #define XN_SVGA_X_RES 800
00290 #define XN_SVGA_Y_RES 600
00291
00292 #define XN_XGA_X_RES 1024
00293 #define XN_XGA_Y_RES 768
00294
00295 #define XN_720P_X_RES 1280
00296 #define XN_720P_Y_RES 720
00297
00298 #define XN_SXGA_X_RES 1280
00299 #define XN_SXGA_Y_RES 1024
00300
00301 #define XN_UXGA_X_RES 1600
00302 #define XN_UXGA_Y_RES 1200
00303
00304 #define XN_1080P_X_RES 1920
00305 #define XN_1080P_Y_RES 1080
00306
00307 typedef enum XnResolution
00308 {
00309 XN_RES_CUSTOM = 0,
00310 XN_RES_QQVGA = 1,
00311 XN_RES_CGA = 2,
00312 XN_RES_QVGA = 3,
00313 XN_RES_VGA = 4,
00314 XN_RES_SVGA = 5,
00315 XN_RES_XGA = 6,
00316 XN_RES_720P = 7,
00317 XN_RES_SXGA = 8,
00318 XN_RES_UXGA = 9,
00319 XN_RES_1080P = 10,
00320 } XnResolution;
00321
00325 typedef struct XnMapOutputMode
00326 {
00328 XnUInt32 nXRes;
00330 XnUInt32 nYRes;
00332 XnUInt32 nFPS;
00333 } XnMapOutputMode;
00334
00335 typedef enum XnSampleRate
00336 {
00337 XN_SAMPLE_RATE_8K = 8000,
00338 XN_SAMPLE_RATE_11K = 11025,
00339 XN_SAMPLE_RATE_12K = 12000,
00340 XN_SAMPLE_RATE_16K = 16000,
00341 XN_SAMPLE_RATE_22K = 22050,
00342 XN_SAMPLE_RATE_24K = 24000,
00343 XN_SAMPLE_RATE_32K = 32000,
00344 XN_SAMPLE_RATE_44K = 44100,
00345 XN_SAMPLE_RATE_48K = 48000,
00346 } XnSampleRate;
00347
00348 typedef struct XnWaveOutputMode
00349 {
00350 XnUInt32 nSampleRate;
00351 XnUInt16 nBitsPerSample;
00352 XnUInt8 nChannels;
00353 } XnWaveOutputMode;
00354
00358 typedef struct XnVector3D
00359 {
00360 XnFloat X;
00361 XnFloat Y;
00362 XnFloat Z;
00363 } XnVector3D;
00364
00365 typedef XnVector3D XnPoint3D;
00366
00370 typedef struct XnBoundingBox3D
00371 {
00372 XnPoint3D LeftBottomNear;
00373 XnPoint3D RightTopFar;
00374 } XnBoundingBox3D;
00375
00379 typedef struct XnCropping
00380 {
00382 XnBool bEnabled;
00384 XnUInt16 nXOffset;
00386 XnUInt16 nYOffset;
00388 XnUInt16 nXSize;
00390 XnUInt16 nYSize;
00391 } XnCropping;
00392
00396 typedef struct XnFieldOfView
00397 {
00399 XnDouble fHFOV;
00401 XnDouble fVFOV;
00402 } XnFieldOfView;
00403
00404 typedef enum XnPixelFormat
00405 {
00406 XN_PIXEL_FORMAT_RGB24 = 1,
00407 XN_PIXEL_FORMAT_YUV422 = 2,
00408 XN_PIXEL_FORMAT_GRAYSCALE_8_BIT = 3,
00409 XN_PIXEL_FORMAT_GRAYSCALE_16_BIT = 4,
00410 } XnPixelFormat;
00411
00412 typedef struct XnSupportedPixelFormats
00413 {
00414 XnBool m_bRGB24 : 1;
00415 XnBool m_bYUV422 : 1;
00416 XnBool m_bGrayscale8Bit : 1;
00417 XnBool m_bGrayscale16Bit : 1;
00418 XnUInt m_nPadding : 4;
00419 XnUInt m_nReserved : 24;
00420 } XnSupportedPixelFormats;
00421
00422 typedef enum XnPlayerSeekOrigin
00423 {
00424 XN_PLAYER_SEEK_SET = 0,
00425 XN_PLAYER_SEEK_CUR = 1,
00426 XN_PLAYER_SEEK_END = 2,
00427 } XnPlayerSeekOrigin;
00428
00429
00430 typedef XnUInt32 XnUserID;
00431 typedef XnFloat XnConfidence;
00432
00434 typedef struct XnMatrix3X3
00435 {
00437 XnFloat elements[9];
00438 } XnMatrix3X3;
00439
00444 typedef struct XnPlane3D
00445 {
00447 XnVector3D vNormal;
00448
00450 XnPoint3D ptPoint;
00451 } XnPlane3D;
00452
00457 typedef struct XnSkeletonJointPosition
00458 {
00460 XnVector3D position;
00461
00463 XnConfidence fConfidence;
00464 } XnSkeletonJointPosition;
00465
00473 typedef struct XnSkeletonJointOrientation
00474 {
00476 XnMatrix3X3 orientation;
00478 XnConfidence fConfidence;
00479 } XnSkeletonJointOrientation;
00480
00484 typedef struct XnSkeletonJointTransformation
00485 {
00487 XnSkeletonJointPosition position;
00489 XnSkeletonJointOrientation orientation;
00490 } XnSkeletonJointTransformation;
00491
00495 typedef enum XnSkeletonJoint
00496 {
00497 XN_SKEL_HEAD = 1,
00498 XN_SKEL_NECK = 2,
00499 XN_SKEL_TORSO = 3,
00500 XN_SKEL_WAIST = 4,
00501
00502 XN_SKEL_LEFT_COLLAR = 5,
00503 XN_SKEL_LEFT_SHOULDER = 6,
00504 XN_SKEL_LEFT_ELBOW = 7,
00505 XN_SKEL_LEFT_WRIST = 8,
00506 XN_SKEL_LEFT_HAND = 9,
00507 XN_SKEL_LEFT_FINGERTIP =10,
00508
00509 XN_SKEL_RIGHT_COLLAR =11,
00510 XN_SKEL_RIGHT_SHOULDER =12,
00511 XN_SKEL_RIGHT_ELBOW =13,
00512 XN_SKEL_RIGHT_WRIST =14,
00513 XN_SKEL_RIGHT_HAND =15,
00514 XN_SKEL_RIGHT_FINGERTIP =16,
00515
00516 XN_SKEL_LEFT_HIP =17,
00517 XN_SKEL_LEFT_KNEE =18,
00518 XN_SKEL_LEFT_ANKLE =19,
00519 XN_SKEL_LEFT_FOOT =20,
00520
00521 XN_SKEL_RIGHT_HIP =21,
00522 XN_SKEL_RIGHT_KNEE =22,
00523 XN_SKEL_RIGHT_ANKLE =23,
00524 XN_SKEL_RIGHT_FOOT =24
00525 } XnSkeletonJoint;
00526
00528 typedef enum XnSkeletonProfile
00529 {
00531 XN_SKEL_PROFILE_NONE = 1,
00532
00534 XN_SKEL_PROFILE_ALL = 2,
00535
00537 XN_SKEL_PROFILE_UPPER = 3,
00538
00540 XN_SKEL_PROFILE_LOWER = 4,
00541
00543 XN_SKEL_PROFILE_HEAD_HANDS = 5,
00544 } XnSkeletonProfile;
00545
00546
00554 typedef void (XN_CALLBACK_TYPE* XnUserHandler)(XnNodeHandle hNode, XnUserID user, void* pCookie);
00555
00556
00566 typedef void (XN_CALLBACK_TYPE* XnHandCreate)(XnNodeHandle hNode, XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00567
00577 typedef void (XN_CALLBACK_TYPE* XnHandUpdate)(XnNodeHandle hNode, XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00578
00587 typedef void (XN_CALLBACK_TYPE* XnHandDestroy)(XnNodeHandle hNode, XnUserID user, XnFloat fTime, void* pCookie);
00588
00589
00599 typedef void (XN_CALLBACK_TYPE* XnGestureRecognized)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pIDPosition, const XnPoint3D* pEndPosition, void* pCookie);
00609 typedef void (XN_CALLBACK_TYPE* XnGestureProgress)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pPosition, XnFloat fProgress, void* pCookie);
00610
00611
00619 typedef void (XN_CALLBACK_TYPE* XnCalibrationStart)(XnNodeHandle hNode, XnUserID user, void* pCookie);
00628 typedef void (XN_CALLBACK_TYPE* XnCalibrationEnd)(XnNodeHandle hNode, XnUserID user, XnBool bSuccess, void* pCookie);
00629
00630
00639 typedef void (XN_CALLBACK_TYPE* XnPoseDetectionCallback)(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, void* pCookie);
00640
00641
00642
00643
00644
00650 typedef enum XnRecordMedium
00651 {
00653 XN_RECORD_MEDIUM_FILE = 0,
00654 } XnRecordMedium;
00655
00657 typedef XnUInt32 XnCodecID;
00658
00660 #define XN_CODEC_ID(c1, c2, c3, c4) (XnCodecID)((c4 << 24) | (c3 << 16) | (c2 << 8) | c1)
00661
00667 typedef struct XnRecorderOutputStreamInterface
00668 {
00674 XnStatus (XN_CALLBACK_TYPE* Open)(void* pCookie);
00675
00684 XnStatus (XN_CALLBACK_TYPE* Write)(void* pCookie, const XnChar* strNodeName,
00685 const void* pData, XnUInt32 nSize);
00686
00694 XnStatus (XN_CALLBACK_TYPE* Seek)(void* pCookie, XnOSSeekType seekType, const XnUInt32 nOffset);
00695
00704 XnUInt32 (XN_CALLBACK_TYPE* Tell)(void* pCookie);
00705
00711 void (XN_CALLBACK_TYPE* Close)(void* pCookie);
00712 } XnRecorderOutputStreamInterface;
00713
00719 typedef struct XnPlayerInputStreamInterface
00720 {
00726 XnStatus (XN_CALLBACK_TYPE* Open)(void* pCookie);
00727
00737 XnStatus (XN_CALLBACK_TYPE* Read)(void* pCookie, void* pBuffer, XnUInt32 nSize, XnUInt32* pnBytesRead);
00738
00746 XnStatus (XN_CALLBACK_TYPE* Seek)(void* pCookie, XnOSSeekType seekType, const XnInt32 nOffset);
00747
00755 XnUInt32 (XN_CALLBACK_TYPE* Tell)(void* pCookie);
00756
00762 void (XN_CALLBACK_TYPE* Close)(void* pCookie);
00763 } XnPlayerInputStreamInterface;
00764
00768 typedef struct XnNodeNotifications
00769 {
00776 XnStatus (XN_CALLBACK_TYPE* OnNodeAdded)
00777 (void* pCookie, const XnChar* strNodeName, XnProductionNodeType type,
00778 XnCodecID compression);
00779
00786 XnStatus (XN_CALLBACK_TYPE* OnNodeRemoved)
00787 (void* pCookie, const XnChar* strNodeName);
00788
00797 XnStatus (XN_CALLBACK_TYPE* OnNodeIntPropChanged)
00798 (void* pCookie, const XnChar* strNodeName,
00799 const XnChar* strPropName, XnUInt64 nValue);
00800
00809 XnStatus (XN_CALLBACK_TYPE* OnNodeRealPropChanged)
00810 (void* pCookie, const XnChar* strNodeName,
00811 const XnChar* strPropName, XnDouble dValue);
00812
00821 XnStatus (XN_CALLBACK_TYPE* OnNodeStringPropChanged)
00822 (void* pCookie, const XnChar* strNodeName,
00823 const XnChar* strPropName, const XnChar* strValue);
00824
00834 XnStatus (XN_CALLBACK_TYPE* OnNodeGeneralPropChanged)
00835 (void* pCookie, const XnChar* strNodeName,
00836 const XnChar* strPropName, XnUInt32 nBufferSize, const void* pBuffer);
00837
00844 XnStatus (XN_CALLBACK_TYPE* OnNodeStateReady)
00845 (void* pCookie, const XnChar* strNodeName);
00846
00856 XnStatus (XN_CALLBACK_TYPE* OnNodeNewData)
00857 (void* pCookie, const XnChar* strNodeName,
00858 XnUInt64 nTimeStamp, XnUInt32 nFrame, const void* pData, XnUInt32 nSize);
00859
00860 } XnNodeNotifications;
00861
00863 typedef struct XnUInt32XYPair
00864 {
00865 XnUInt32 X;
00866 XnUInt32 Y;
00867 } XnUInt32XYPair;
00868
00870 typedef struct XnOutputMetaData
00871 {
00873 XnUInt64 nTimestamp;
00874
00876 XnUInt32 nFrameID;
00877
00879 XnUInt32 nDataSize;
00880
00882 XnBool bIsNew;
00883
00884 } XnOutputMetaData;
00885
00887 typedef struct XnMapMetaData
00888 {
00890 XnOutputMetaData* pOutput;
00891
00893 XnUInt32XYPair Res;
00894
00896 XnUInt32XYPair Offset;
00897
00899 XnUInt32XYPair FullRes;
00900
00902 XnPixelFormat PixelFormat;
00903
00905 XnUInt32 nFPS;
00906 } XnMapMetaData;
00907
00909 typedef struct XnDepthMetaData
00910 {
00912 XnMapMetaData* pMap;
00913
00915 const XnDepthPixel* pData;
00916
00918 XnDepthPixel nZRes;
00919 } XnDepthMetaData;
00920
00922 typedef struct XnImageMetaData
00923 {
00925 XnMapMetaData* pMap;
00926
00928 const XnUInt8* pData;
00929 } XnImageMetaData;
00930
00932 typedef struct XnIRMetaData
00933 {
00935 XnMapMetaData* pMap;
00936
00938 const XnIRPixel* pData;
00939 } XnIRMetaData;
00940
00941 typedef struct XnAudioMetaData
00942 {
00944 XnOutputMetaData* pOutput;
00945
00947 XnWaveOutputMode Wave;
00948
00950 const XnUInt8* pData;
00951 } XnAudioMetaData;
00952
00953 typedef struct XnSceneMetaData
00954 {
00956 XnMapMetaData* pMap;
00957
00959 const XnLabel* pData;
00960 } XnSceneMetaData;
00961
00962 #pragma pack (pop)
00963
00964 #endif //__XN_TYPES_H__