summaryrefslogtreecommitdiffstats
path: root/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h')
-rw-r--r--tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h1188
1 files changed, 1188 insertions, 0 deletions
diff --git a/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h
new file mode 100644
index 00000000..40eb04e6
--- /dev/null
+++ b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnTypes.h
@@ -0,0 +1,1188 @@
+/****************************************************************************
+* *
+* OpenNI 1.x Alpha *
+* Copyright (C) 2011 PrimeSense Ltd. *
+* *
+* This file is part of OpenNI. *
+* *
+* OpenNI is free software: you can redistribute it and/or modify *
+* it under the terms of the GNU Lesser General Public License as published *
+* by the Free Software Foundation, either version 3 of the License, or *
+* (at your option) any later version. *
+* *
+* OpenNI is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU Lesser General Public License for more details. *
+* *
+* You should have received a copy of the GNU Lesser General Public License *
+* along with OpenNI. If not, see <http://www.gnu.org/licenses/>. *
+* *
+****************************************************************************/
+#ifndef __XN_TYPES_H__
+#define __XN_TYPES_H__
+
+//---------------------------------------------------------------------------
+// Includes
+//---------------------------------------------------------------------------
+#include <XnStatus.h>
+#include <XnOS.h>
+
+//---------------------------------------------------------------------------
+// Defines
+//---------------------------------------------------------------------------
+/** The maximum length of names of objects in OpenNI **/
+#define XN_MAX_NAME_LENGTH 80
+
+/** The maximum length of a creation info string **/
+#define XN_MAX_CREATION_INFO_LENGTH 255
+
+/** The maxumim length of a license key **/
+#define XN_MAX_LICENSE_LENGTH 255
+
+/** The maximum time to wait for node new data with the xnWaitXXXUpdateXXX functions **/
+#define XN_NODE_WAIT_FOR_DATA_TIMEOUT 2000
+
+/** OpenNI vendor ID, used by nodes supplied by OpenNI itself. **/
+#define XN_VENDOR_OPEN_NI "OpenNI"
+
+/** The name of the OpenNI recording format. **/
+#define XN_FORMAT_NAME_ONI "oni"
+
+/** The name of the OpenNI XML script format. **/
+#define XN_SCRIPT_FORMAT_XML "xml"
+
+/** represents playback speed which does not consider file timestamps. **/
+#define XN_PLAYBACK_SPEED_FASTEST 0.0
+
+/** represents a value for automatic control for nodes supporting it, as part of the @ref general_int. **/
+#define XN_AUTO_CONTROL XN_MIN_INT32
+
+//---------------------------------------------------------------------------
+// Forward Declarations
+//---------------------------------------------------------------------------
+struct XnInternalNodeData;
+
+//---------------------------------------------------------------------------
+// Types
+//---------------------------------------------------------------------------
+
+#if XN_PLATFORM != XN_PLATFORM_ARC
+#pragma pack (push, 1)
+#endif
+
+/**
+ * The context of an OpenNI library.
+ */
+typedef struct XnContext XnContext;
+
+/**
+ * A handle to a production node in the OpenNI context. A value of NULL represents an invalid handle.
+ */
+typedef struct XnInternalNodeData* XnNodeHandle;
+
+/**
+ * A handle to a lock. A value of NULL represents an invalid handle.
+ */
+typedef XnUInt32 XnLockHandle;
+
+/**
+ * Type of the production node.
+ */
+typedef XnInt32 XnProductionNodeType;
+
+/**
+ * Predefined types of production nodes.
+ */
+typedef enum XnPredefinedProductionNodeType
+{
+ /** An invalid node type **/
+ XN_NODE_TYPE_INVALID = -1,
+
+ /** A device node **/
+ XN_NODE_TYPE_DEVICE = 1,
+
+ /** A depth generator **/
+ XN_NODE_TYPE_DEPTH = 2,
+
+ /** An image generator **/
+ XN_NODE_TYPE_IMAGE = 3,
+
+ /** An audio generator **/
+ XN_NODE_TYPE_AUDIO = 4,
+
+ /** An IR generator **/
+ XN_NODE_TYPE_IR = 5,
+
+ /** A user generator **/
+ XN_NODE_TYPE_USER = 6,
+
+ /** A recorder **/
+ XN_NODE_TYPE_RECORDER = 7,
+
+ /** A player **/
+ XN_NODE_TYPE_PLAYER = 8,
+
+ /** A gesture generator **/
+ XN_NODE_TYPE_GESTURE = 9,
+
+ /** A scene analyzer **/
+ XN_NODE_TYPE_SCENE = 10,
+
+ /** A hands generator **/
+ XN_NODE_TYPE_HANDS = 11,
+
+ /** A Codec **/
+ XN_NODE_TYPE_CODEC = 12,
+
+ /** Abstract types **/
+ XN_NODE_TYPE_PRODUCTION_NODE = 13,
+ XN_NODE_TYPE_GENERATOR = 14,
+ XN_NODE_TYPE_MAP_GENERATOR = 15,
+ XN_NODE_TYPE_SCRIPT = 16,
+
+ XN_NODE_TYPE_FIRST_EXTENSION,
+
+} XnPredefinedProductionNodeType;
+
+/**
+ * A Version.
+ */
+typedef struct XnVersion
+{
+ XnUInt8 nMajor;
+ XnUInt8 nMinor;
+ XnUInt16 nMaintenance;
+ XnUInt32 nBuild;
+} XnVersion;
+
+/**
+ * An exported generator description.
+ */
+typedef struct XnProductionNodeDescription
+{
+ /** Type of the production node. */
+ XnProductionNodeType Type;
+ /** Vendor name */
+ XnChar strVendor[XN_MAX_NAME_LENGTH];
+ /** Generator name. Should be unique under Type and Vendor. */
+ XnChar strName[XN_MAX_NAME_LENGTH];
+ /** Current version */
+ XnVersion Version;
+} XnProductionNodeDescription;
+
+/**
+ * Information about a single production node.
+ */
+typedef struct XnNodeInfo XnNodeInfo;
+
+/**
+ * A single node in a node info list.
+ */
+typedef struct XnNodeInfoListNode XnNodeInfoListNode;
+
+/**
+ * A (linked) list of production node info objects.
+ */
+typedef struct XnNodeInfoList XnNodeInfoList;
+
+/**
+ * An iterator in a linked list of production node info objects.
+ */
+typedef struct XnNodeInfoListIterator
+{
+ XnNodeInfoListNode* pCurrent;
+} XnNodeInfoListIterator;
+
+typedef struct XnNodeQuery XnNodeQuery;
+
+/**
+ * A license key.
+ */
+typedef struct XnLicense
+{
+ /** Vendor name **/
+ XnChar strVendor[XN_MAX_NAME_LENGTH];
+ /** License key **/
+ XnChar strKey[XN_MAX_LICENSE_LENGTH];
+} XnLicense;
+
+/**
+ * @ingroup enum_errors
+ * An object that holds errors during an enumeration process.
+ */
+typedef struct XnEnumerationErrors XnEnumerationErrors;
+
+/**
+ * A handle to an instance of a generator.
+ **/
+typedef void* XnModuleNodeHandle;
+
+/**
+ * Prototype for state change callback function.
+ *
+ * @param hNode [in] A handle to the node that raised the event.
+ * @param pCookie [in] A user-provided cookie that was given when registering to the event.
+ **/
+typedef void (XN_CALLBACK_TYPE* XnStateChangedHandler)(XnNodeHandle hNode, void* pCookie);
+
+/**
+ * Prototype for error state change callback function.
+ *
+ * @param errorState [in] The new error state. A value of XN_STATUS_OK means there is no longer an error.
+ * @param pCookie [in] A user-provided cookie that was given when registering to the event.
+ **/
+typedef void (XN_CALLBACK_TYPE* XnErrorStateChangedHandler)(XnStatus errorState, void* pCookie);
+
+/**
+ * Prototype for freeing data callbacks.
+ *
+ * @param pData [in] The data to be freed.
+ **/
+typedef void (XN_CALLBACK_TYPE* XnFreeHandler)(const void* pData);
+
+typedef void (XN_CALLBACK_TYPE* XnContextShuttingDownHandler)(XnContext* pContext, void* pCookie);
+
+/**
+* Prototype for the 'Node Creation' event handler.
+*
+* @param [in] pContext The context raising the event.
+* @param [in] hCreatedNode A handle to the newly created node.
+* @param [in] pCookie A user-provided cookie that was given when registering to the event.
+*
+* @remark The passed handle (@c hCreatedNode) is not referenced. If your handler keeps this handle for later use,
+* it must call @ref xnProductionNodeAddRef().
+*/
+typedef void (XN_CALLBACK_TYPE* XnNodeCreationHandler)(XnContext* pContext, XnNodeHandle hCreatedNode, void* pCookie);
+
+/**
+* Prototype for the 'Node Destruction' event handler.
+*
+* @param [in] pContext The context raising the event.
+* @param [in] strDestroyedNodeName The name of the destroyed node.
+* @param [in] pCookie A user-provided cookie that was given when registering to the event.
+*/
+typedef void (XN_CALLBACK_TYPE* XnNodeDestructionHandler)(XnContext* pContext, const XnChar* strDestroyedNodeName, void* pCookie);
+
+/** Handle to a registered callback function. **/
+typedef void* XnCallbackHandle;
+
+typedef struct XnModuleExportedProductionNodeInterface XnModuleExportedProductionNodeInterface; // Forward Declaration
+
+//---------------------------------------------------------------------------
+// 3D Vision Types
+//---------------------------------------------------------------------------
+/** Defines the depth values type (16-bit values). **/
+typedef XnUInt16 XnDepthPixel;
+
+/** Defines the value of a no-sample depth pixel. */
+#define XN_DEPTH_NO_SAMPLE_VALUE ((XnDepthPixel)0)
+
+/** Defines the image RGB24 pixel type. **/
+typedef struct XnRGB24Pixel
+{
+ XnUInt8 nRed;
+ XnUInt8 nGreen;
+ XnUInt8 nBlue;
+} XnRGB24Pixel;
+
+/** Defines the image YUV422 double-pixel type. **/
+typedef struct XnYUV422DoublePixel
+{
+ XnUInt8 nU;
+ XnUInt8 nY1;
+ XnUInt8 nV;
+ XnUInt8 nY2;
+} XnYUV422DoublePixel;
+
+/** Defines the image Grayscale8 pixel type. **/
+typedef XnUInt8 XnGrayscale8Pixel;
+
+/** Defines the image Grayscale16 pixel type. **/
+typedef XnUInt16 XnGrayscale16Pixel;
+
+/** Defines the IR values type (16-bit grayscale). **/
+typedef XnGrayscale16Pixel XnIRPixel;
+
+/** Defines the label type */
+typedef XnUInt16 XnLabel;
+
+//---------------------------------------------------------------------------
+// Generators Capabilities
+//---------------------------------------------------------------------------
+#define XN_CAPABILITY_EXTENDED_SERIALIZATION "ExtendedSerialization"
+#define XN_CAPABILITY_MIRROR "Mirror"
+#define XN_CAPABILITY_ALTERNATIVE_VIEW_POINT "AlternativeViewPoint"
+#define XN_CAPABILITY_CROPPING "Cropping"
+#define XN_CAPABILITY_USER_POSITION "UserPosition"
+#define XN_CAPABILITY_SKELETON "User::Skeleton"
+#define XN_CAPABILITY_POSE_DETECTION "User::PoseDetection"
+#define XN_CAPABILITY_LOCK_AWARE "LockAware"
+#define XN_CAPABILITY_ERROR_STATE "ErrorState"
+#define XN_CAPABILITY_FRAME_SYNC "FrameSync"
+#define XN_CAPABILITY_DEVICE_IDENTIFICATION "DeviceIdentification"
+#define XN_CAPABILITY_BRIGHTNESS "Brightness"
+#define XN_CAPABILITY_CONTRAST "Contrast"
+#define XN_CAPABILITY_HUE "Hue"
+#define XN_CAPABILITY_SATURATION "Saturation"
+#define XN_CAPABILITY_SHARPNESS "Sharpness"
+#define XN_CAPABILITY_GAMMA "Gamma"
+#define XN_CAPABILITY_COLOR_TEMPERATURE "ColorTemperature"
+#define XN_CAPABILITY_BACKLIGHT_COMPENSATION "BacklightCompensation"
+#define XN_CAPABILITY_GAIN "Gain"
+#define XN_CAPABILITY_PAN "Pan"
+#define XN_CAPABILITY_TILT "Tilt"
+#define XN_CAPABILITY_ROLL "Roll"
+#define XN_CAPABILITY_ZOOM "Zoom"
+#define XN_CAPABILITY_EXPOSURE "Exposure"
+#define XN_CAPABILITY_IRIS "Iris"
+#define XN_CAPABILITY_FOCUS "Focus"
+#define XN_CAPABILITY_LOW_LIGHT_COMPENSATION "LowLightCompensation"
+#define XN_CAPABILITY_ANTI_FLICKER "AntiFlicker"
+#define XN_CAPABILITY_HAND_TOUCHING_FOV_EDGE "Hands::HandTouchingFOVEdge"
+
+// Backwards compatibility - typo was fixed
+#define XN_CAPABILITY_ANTI_FILCKER XN_CAPABILITY_ANTI_FLICKER
+
+// deprecated pragma is only supported in Visual Studio
+#if (XN_PLATFORM == XN_PLATFORM_WIN32)
+#pragma deprecated("XN_CAPABILITY_ANTI_FILCKER")
+#endif
+
+//---------------------------------------------------------------------------
+// Generators API Structs
+//---------------------------------------------------------------------------
+
+#define XN_QQVGA_X_RES 160
+#define XN_QQVGA_Y_RES 120
+
+#define XN_CGA_X_RES 320
+#define XN_CGA_Y_RES 200
+
+#define XN_QVGA_X_RES 320
+#define XN_QVGA_Y_RES 240
+
+#define XN_VGA_X_RES 640
+#define XN_VGA_Y_RES 480
+
+#define XN_SVGA_X_RES 800
+#define XN_SVGA_Y_RES 600
+
+#define XN_XGA_X_RES 1024
+#define XN_XGA_Y_RES 768
+
+#define XN_720P_X_RES 1280
+#define XN_720P_Y_RES 720
+
+#define XN_SXGA_X_RES 1280
+#define XN_SXGA_Y_RES 1024
+
+#define XN_UXGA_X_RES 1600
+#define XN_UXGA_Y_RES 1200
+
+#define XN_1080P_X_RES 1920
+#define XN_1080P_Y_RES 1080
+
+#define XN_QCIF_X_RES 176
+#define XN_QCIF_Y_RES 144
+
+#define XN_240P_X_RES 423
+#define XN_240P_Y_RES 240
+
+#define XN_CIF_X_RES 352
+#define XN_CIF_Y_RES 288
+
+#define XN_WVGA_X_RES 640
+#define XN_WVGA_Y_RES 360
+
+#define XN_480P_X_RES 864
+#define XN_480P_Y_RES 480
+
+#define XN_576P_X_RES 1024
+#define XN_576P_Y_RES 576
+
+#define XN_DV_X_RES 960
+#define XN_DV_Y_RES 720
+
+typedef enum XnResolution
+{
+ XN_RES_CUSTOM = 0,
+ XN_RES_QQVGA = 1,
+ XN_RES_CGA = 2,
+ XN_RES_QVGA = 3,
+ XN_RES_VGA = 4,
+ XN_RES_SVGA = 5,
+ XN_RES_XGA = 6,
+ XN_RES_720P = 7,
+ XN_RES_SXGA = 8,
+ XN_RES_UXGA = 9,
+ XN_RES_1080P = 10,
+ XN_RES_QCIF = 11,
+ XN_RES_240P = 12,
+ XN_RES_CIF = 13,
+ XN_RES_WVGA = 14,
+ XN_RES_480P = 15,
+ XN_RES_576P = 16,
+ XN_RES_DV = 17,
+} XnResolution;
+
+/**
+ * The output mode of a map generator.
+ */
+typedef struct XnMapOutputMode
+{
+ /** Number of elements in the X-axis. */
+ XnUInt32 nXRes;
+ /** Number of elements in the Y-axis. */
+ XnUInt32 nYRes;
+ /** Number of frames per second. */
+ XnUInt32 nFPS;
+} XnMapOutputMode;
+
+typedef enum XnSampleRate
+{
+ XN_SAMPLE_RATE_8K = 8000,
+ XN_SAMPLE_RATE_11K = 11025,
+ XN_SAMPLE_RATE_12K = 12000,
+ XN_SAMPLE_RATE_16K = 16000,
+ XN_SAMPLE_RATE_22K = 22050,
+ XN_SAMPLE_RATE_24K = 24000,
+ XN_SAMPLE_RATE_32K = 32000,
+ XN_SAMPLE_RATE_44K = 44100,
+ XN_SAMPLE_RATE_48K = 48000,
+} XnSampleRate;
+
+typedef struct XnWaveOutputMode
+{
+ XnUInt32 nSampleRate;
+ XnUInt16 nBitsPerSample;
+ XnUInt8 nChannels;
+} XnWaveOutputMode;
+
+/**
+ * Representation of a vector in 3D space
+ */
+typedef struct XnVector3D
+{
+ XnFloat X;
+ XnFloat Y;
+ XnFloat Z;
+} XnVector3D;
+
+typedef XnVector3D XnPoint3D;
+
+/**
+ * Representation of an axis-aligned box in 3D space
+ */
+typedef struct XnBoundingBox3D
+{
+ XnPoint3D LeftBottomNear;
+ XnPoint3D RightTopFar;
+} XnBoundingBox3D;
+
+/**
+ * Cropping configuration
+ */
+typedef struct XnCropping
+{
+ /** TRUE if cropping is turned on, FALSE otherwise. */
+ XnBool bEnabled;
+ /** Offset in the X-axis, in pixels. */
+ XnUInt16 nXOffset;
+ /** Offset in the Y-axis, in pixels. */
+ XnUInt16 nYOffset;
+ /** Number of pixels in the X-axis. */
+ XnUInt16 nXSize;
+ /** Number of pixels in the Y-axis. */
+ XnUInt16 nYSize;
+} XnCropping;
+
+/**
+ * Field-Of-View
+ */
+typedef struct XnFieldOfView
+{
+ /** Horizontal Field Of View, in radians. */
+ XnDouble fHFOV;
+ /** Vertical Field Of View, in radians. */
+ XnDouble fVFOV;
+} XnFieldOfView;
+
+typedef enum XnPixelFormat
+{
+ XN_PIXEL_FORMAT_RGB24 = 1,
+ XN_PIXEL_FORMAT_YUV422 = 2,
+ XN_PIXEL_FORMAT_GRAYSCALE_8_BIT = 3,
+ XN_PIXEL_FORMAT_GRAYSCALE_16_BIT = 4,
+ XN_PIXEL_FORMAT_MJPEG = 5,
+} XnPixelFormat;
+
+typedef struct XnSupportedPixelFormats
+{
+ XnBool m_bRGB24 : 1;
+ XnBool m_bYUV422 : 1;
+ XnBool m_bGrayscale8Bit : 1;
+ XnBool m_bGrayscale16Bit : 1;
+ XnBool m_bMJPEG : 1;
+ XnUInt m_nPadding : 3;
+ XnUInt m_nReserved : 24;
+} XnSupportedPixelFormats;
+
+typedef enum XnPlayerSeekOrigin
+{
+ XN_PLAYER_SEEK_SET = 0,
+ XN_PLAYER_SEEK_CUR = 1,
+ XN_PLAYER_SEEK_END = 2,
+} XnPlayerSeekOrigin;
+
+typedef enum XnPowerLineFrequency
+{
+ XN_POWER_LINE_FREQUENCY_OFF = 0,
+ XN_POWER_LINE_FREQUENCY_50_HZ = 50,
+ XN_POWER_LINE_FREQUENCY_60_HZ = 60,
+} XnPowerLineFrequency;
+
+// User
+typedef XnUInt32 XnUserID;
+typedef XnFloat XnConfidence;
+
+/** A 3x3 matrix of floating point values **/
+typedef struct XnMatrix3X3
+{
+ /** The elements of the matrix. **/
+ XnFloat elements[9];
+} XnMatrix3X3;
+
+/**
+* A representation of a 3D plane.
+* A plane is described by a point on it and a normal
+*/
+typedef struct XnPlane3D
+{
+ /** The normal of the plane. **/
+ XnVector3D vNormal;
+
+ /** A point on the plane. **/
+ XnPoint3D ptPoint;
+} XnPlane3D;
+
+/**
+* Position of a specific joint. A joint position is described by its actual position
+* and the confidence we have in that position.
+*/
+typedef struct XnSkeletonJointPosition
+{
+ /** The actual position in real world coordinations */
+ XnVector3D position;
+
+ /** The confidence in the position */
+ XnConfidence fConfidence;
+} XnSkeletonJointPosition;
+
+/**
+ * Orientation of a specific joint. A joint orientation is described by its actual rotation
+ * and the confidence we have in that rotation
+ * The first column is the X orientation, where the value increases from left to right.
+ * The second column is the Y orientation, where the value increases from bottom to top.
+ * The third column is the Z orientation, where the value increases from near to far.
+ */
+typedef struct XnSkeletonJointOrientation
+{
+ /** The actual orientation */
+ XnMatrix3X3 orientation;
+ /** The confidence in the orientation */
+ XnConfidence fConfidence;
+} XnSkeletonJointOrientation;
+
+/**
+* Transformation of a specific joint is its full description: both its position and orientation.
+*/
+typedef struct XnSkeletonJointTransformation
+{
+ /** The position of the joint */
+ XnSkeletonJointPosition position;
+ /** The orientation of the joint */
+ XnSkeletonJointOrientation orientation;
+} XnSkeletonJointTransformation;
+
+/**
+* A full list of available joints.
+*/
+typedef enum XnSkeletonJoint
+{
+ XN_SKEL_HEAD = 1,
+ XN_SKEL_NECK = 2,
+ XN_SKEL_TORSO = 3,
+ XN_SKEL_WAIST = 4,
+
+ XN_SKEL_LEFT_COLLAR = 5,
+ XN_SKEL_LEFT_SHOULDER = 6,
+ XN_SKEL_LEFT_ELBOW = 7,
+ XN_SKEL_LEFT_WRIST = 8,
+ XN_SKEL_LEFT_HAND = 9,
+ XN_SKEL_LEFT_FINGERTIP =10,
+
+ XN_SKEL_RIGHT_COLLAR =11,
+ XN_SKEL_RIGHT_SHOULDER =12,
+ XN_SKEL_RIGHT_ELBOW =13,
+ XN_SKEL_RIGHT_WRIST =14,
+ XN_SKEL_RIGHT_HAND =15,
+ XN_SKEL_RIGHT_FINGERTIP =16,
+
+ XN_SKEL_LEFT_HIP =17,
+ XN_SKEL_LEFT_KNEE =18,
+ XN_SKEL_LEFT_ANKLE =19,
+ XN_SKEL_LEFT_FOOT =20,
+
+ XN_SKEL_RIGHT_HIP =21,
+ XN_SKEL_RIGHT_KNEE =22,
+ XN_SKEL_RIGHT_ANKLE =23,
+ XN_SKEL_RIGHT_FOOT =24
+} XnSkeletonJoint;
+
+/** A configuration of joints to be used by skeleton (see @ref xnSetSkeletonProfile) **/
+typedef enum XnSkeletonProfile
+{
+ /** No joints at all **/
+ XN_SKEL_PROFILE_NONE = 1,
+
+ /** All joints **/
+ XN_SKEL_PROFILE_ALL = 2,
+
+ /** All the joints in the upper body (torso and upwards) **/
+ XN_SKEL_PROFILE_UPPER = 3,
+
+ /** All the joints in the lower body (torso and downwards) **/
+ XN_SKEL_PROFILE_LOWER = 4,
+
+ /** The head and the hands **/
+ XN_SKEL_PROFILE_HEAD_HANDS = 5,
+} XnSkeletonProfile;
+
+/** Possible statuses for pose detection */
+typedef enum XnPoseDetectionStatus
+{
+ XN_POSE_DETECTION_STATUS_OK = 0,
+ XN_POSE_DETECTION_STATUS_NO_USER = 1,
+ XN_POSE_DETECTION_STATUS_TOP_FOV = 2,
+ XN_POSE_DETECTION_STATUS_SIDE_FOV = 3,
+ XN_POSE_DETECTION_STATUS_ERROR = 4,
+ XN_POSE_DETECTION_STATUS_NO_TRACKING = 5
+} XnPoseDetectionStatus;
+
+
+/** Possible pose detection states */
+typedef enum XnPoseDetectionState
+{
+ XN_POSE_DETECTION_STATE_IN_POSE =0,
+ XN_POSE_DETECTION_STATE_OUT_OF_POSE =1,
+ XN_POSE_DETECTION_STATE_UNDEFINED =2
+} XnPoseDetectionState;
+/** Possible statuses for calibration */
+typedef enum XnCalibrationStatus
+{
+ XN_CALIBRATION_STATUS_OK = 0,
+ XN_CALIBRATION_STATUS_NO_USER = 1,
+ XN_CALIBRATION_STATUS_ARM = 2,
+ XN_CALIBRATION_STATUS_LEG = 3,
+ XN_CALIBRATION_STATUS_HEAD = 4,
+ XN_CALIBRATION_STATUS_TORSO = 5,
+ XN_CALIBRATION_STATUS_TOP_FOV = 6,
+ XN_CALIBRATION_STATUS_SIDE_FOV = 7,
+ XN_CALIBRATION_STATUS_POSE = 8,
+ XN_CALIBRATION_STATUS_MANUAL_ABORT = 9,
+ XN_CALIBRATION_STATUS_MANUAL_RESET = 10,
+ XN_CALIBRATION_STATUS_TIMEOUT_FAIL = 11
+} XnCalibrationStatus;
+
+typedef enum XnDirection
+{
+ XN_DIRECTION_ILLEGAL = 0,
+ XN_DIRECTION_LEFT = 1,
+ XN_DIRECTION_RIGHT = 2,
+ XN_DIRECTION_UP = 3,
+ XN_DIRECTION_DOWN = 4,
+ XN_DIRECTION_FORWARD = 5,
+ XN_DIRECTION_BACKWARD = 6,
+} XnDirection;
+
+// User
+/**
+ * Callback for a general user-related event. It is used for either creation or destruction of users.
+ *
+ * @param hNode [in] A handle to the user generator that raised this event.
+ * @param user [in] The id of the user that is relevant to this event.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnUserHandler)(XnNodeHandle hNode, XnUserID user, void* pCookie);
+
+// Hands
+/**
+ * Callback for the creation of a new hand.
+ *
+ * @param hNode [in] A handle to the hands generator that raised this event.
+ * @param user [in] The id of the new hand.
+ * @param pPosition [in] The position in which the hand was created.
+ * @param fTime [in] Timestamp, in seconds.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnHandCreate)(XnNodeHandle hNode, XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
+
+/**
+ * Callback for a new position of an already-existing hand.
+ *
+ * @param hNode [in] A handle to the hands generator that raised this event.
+ * @param user [in] The id of the hand that moved.
+ * @param pPosition [in] The new position of the relevant hand.
+ * @param fTime [in] Timestamp, in seconds.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnHandUpdate)(XnNodeHandle hNode, XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
+
+/**
+ * Callback for the disappearance of a hand.
+ *
+ * @param hNode [in] A handle to the hands generator that raised this event.
+ * @param user [in] The id of the hand that disappeared.
+ * @param fTime [in] Timestamp, in seconds.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnHandDestroy)(XnNodeHandle hNode, XnUserID user, XnFloat fTime, void* pCookie);
+
+/**
+ * Callback for when a hand reaches the edge of the FOV
+ *
+ * @param hNode [in] A handle to the hand generator that raised this event.
+ * @param user [in] The id of the hand that reached FOV
+ * @param pPosition [in] The current position of the hand
+ * @param fTime [in] Timestamp, in seconds
+ * @param eDir [in] The direction of the edge that is being reached
+ * @param pCookie [in] A user-provided cookie that was given when reigstering to this event
+ */
+typedef void (XN_CALLBACK_TYPE* XnHandTouchingFOVEdge)(XnNodeHandle hNode, XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, XnDirection eDir, void* pCookie);
+// Gesture Module
+/**
+ * Callback for the recognition of a gesture
+ *
+ * @param hNode [in] A handle to the gesture generator that raised this event.
+ * @param strGesture [in] The gesture that was recognized.
+ * @param pIDPosition [in] The position in which the gesture was identified.
+ * @param pEndPosition [in] The position of the hand that performed the gesture at the end of the gesture.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnGestureRecognized)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pIDPosition, const XnPoint3D* pEndPosition, void* pCookie);
+/**
+ * Callback for indication that a certain gesture is in progress
+ *
+ * @param hNode [in] A handle to the gesture generator that raised this event.
+ * @param strGesture [in] The gesture that is on its way to being recognized.
+ * @param pPosition [in] The current position of the hand that is performing the gesture.
+ * @param fProgress [in] The percentage of the gesture that was already performed.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnGestureProgress)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pPosition, XnFloat fProgress, void* pCookie);
+
+typedef void (XN_CALLBACK_TYPE* XnGestureIntermediateStageCompleted)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
+typedef void (XN_CALLBACK_TYPE* XnGestureReadyForNextIntermediateStage)(XnNodeHandle hNode, const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
+
+// Skeleton
+/**
+ * Callback for indication that a specific user's skeleton is now starting the calibration process
+ *
+ * @param hNode [in] A handle to the skeleton capability that raised this event.
+ * @param user [in] The id of the user that's being calibrated.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnCalibrationStart)(XnNodeHandle hNode, XnUserID user, void* pCookie);
+/**
+ * Callback for indication that a specific user's skeleton has now completed the calibration process
+ *
+ * @param hNode [in] A handle to the skeleton capability that raised this event.
+ * @param user [in] The id of the user for which calibration was attempted.
+ * @param bSuccess [in] An indication of whether or not the calibration attempt succeeded.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnCalibrationEnd)(XnNodeHandle hNode, XnUserID user, XnBool bSuccess, void* pCookie);
+
+typedef void (XN_CALLBACK_TYPE* XnCalibrationInProgress)(XnNodeHandle hNode, XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
+typedef void (XN_CALLBACK_TYPE* XnCalibrationComplete)(XnNodeHandle hNode, XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
+
+// Pose Detection
+/**
+ * Callback for indication that a specific user has entered a pose, or left it.
+ *
+ * @param hNode [in] A handle to the pose capability that raised this event.
+ * @param strPose [in] The pose that is relevant to the callback.
+ * @param user [in] The id of the user that entered the pose or left it.
+ * @param pCookie [in] A user-provided cookie that was given when registering to this event.
+ */
+typedef void (XN_CALLBACK_TYPE* XnPoseDetectionCallback)(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, void* pCookie);
+
+typedef void (XN_CALLBACK_TYPE* XnPoseDetectionInProgress)(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, XnPoseDetectionStatus poseDetectionError, void* pCookie);
+
+//---------------------------------------------------------------------------
+// Recorder Types
+//---------------------------------------------------------------------------
+
+/**
+ * @ingroup recorder
+ */
+
+/** Defines the type of medium used for recording. See @ref xnAddNodeToRecording. */
+typedef enum XnRecordMedium
+{
+ /** Recording medium is a file **/
+ XN_RECORD_MEDIUM_FILE = 0,
+} XnRecordMedium;
+
+/** An ID of a codec. See @ref xnCreateCodec. **/
+typedef XnUInt32 XnCodecID;
+
+/** Define a Codec ID by 4 characters, e.g. XN_CODEC_ID('J','P','E','G') **/
+#define XN_CODEC_ID(c1, c2, c3, c4) (XnCodecID)((c4 << 24) | (c3 << 16) | (c2 << 8) | c1)
+
+/**
+ * An interface used for communication between OpenNI and a recorder module. This interface is used by a recorder
+ * module to send recorded data to OpenNI, which then knows how to store them according to one of the values of
+ * @ref XnRecordMedium.
+ **/
+typedef struct XnRecorderOutputStreamInterface
+{
+ /**
+ * Opens the stream for writing.
+ *
+ * @param pCookie [in] A token that was received with this interface.
+ */
+ XnStatus (XN_CALLBACK_TYPE* Open)(void* pCookie);
+
+ /**
+ * Writes data to the stream
+ *
+ * @param pCookie [in] A token that was received with this interface.
+ * @param strNodeName [in] Optional. Specifies the node that initiated the write action.
+ * @param pData [in] A pointer to the data to write.
+ * @param nSize [in] Number of bytes to be written.
+ */
+ XnStatus (XN_CALLBACK_TYPE* Write)(void* pCookie, const XnChar* strNodeName,
+ const void* pData, XnUInt32 nSize);
+
+ /**
+ * Sets the stream's pointer to the specified position.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param seekType [in] Specifies how to seek - according to current position, end or beginning.
+ * @param nOffset [in] Specifies how many bytes to move
+ */
+ XnStatus (XN_CALLBACK_TYPE* Seek)(void* pCookie, XnOSSeekType seekType, const XnInt32 nOffset);
+
+ /**
+ * Tells the current position in the stream.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param pPos [out] The position of the stream.
+ *
+ * @returns (XnUInt32)-1 on error.
+ */
+ XnUInt32 (XN_CALLBACK_TYPE* Tell)(void* pCookie);
+
+ /**
+ * Closes the stream.
+ *
+ * @param pCookie [in] A token that was received with this interface.
+ */
+ void (XN_CALLBACK_TYPE* Close)(void* pCookie);
+
+ /**
+ * Sets the stream's pointer to the specified position. (64bit version, for large files)
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param seekType [in] Specifies how to seek - according to current position, end or beginning.
+ * @param nOffset [in] Specifies how many bytes to move
+ */
+ XnStatus (XN_CALLBACK_TYPE* Seek64)(void* pCookie, XnOSSeekType seekType, const XnInt64 nOffset);
+
+ /**
+ * Tells the current position in the stream. (64bit version, for large files)
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param pPos [out] The position of the stream.
+ *
+ * @returns (XnUInt64)-1 on error.
+ */
+ XnUInt64 (XN_CALLBACK_TYPE* Tell64)(void* pCookie);
+
+} XnRecorderOutputStreamInterface;
+
+/**
+ * An interface used for communication between OpenNI and a player module. This interface is used by a player
+ * module to receive recorded data from OpenNI, which knows where to get them according to one of the values of
+ * @ref XnRecordMedium.
+ **/
+typedef struct XnPlayerInputStreamInterface
+{
+ /**
+ * Opens the stream for reading.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ */
+ XnStatus (XN_CALLBACK_TYPE* Open)(void* pCookie);
+
+ /**
+ * Reads data from the stream. May read less data than asked, if the stream is near its end. This is not
+ * considered an error.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param pBuffer [out] A pointer to the buffer to read into.
+ * @param nSize [in] Number of bytes to read.
+ * @param pnBytesRead [out] Optional. Number of bytes actually read.
+ */
+ XnStatus (XN_CALLBACK_TYPE* Read)(void* pCookie, void* pBuffer, XnUInt32 nSize, XnUInt32* pnBytesRead);
+
+ /**
+ * Sets the stream's pointer to the specified position.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param seekType [in] Specifies how to seek - according to current position, end or beginning.
+ * @param nOffset [in] Specifies how many bytes to move
+ */
+ XnStatus (XN_CALLBACK_TYPE* Seek)(void* pCookie, XnOSSeekType seekType, const XnInt32 nOffset);
+
+ /**
+ * Tells the current stream position
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ *
+ * @returns (XnUInt32)-1 if there was an error in the stream.
+ */
+ XnUInt32 (XN_CALLBACK_TYPE* Tell)(void* pCookie);
+
+ /**
+ * Closes the stream.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ */
+ void (XN_CALLBACK_TYPE* Close)(void* pCookie);
+
+ /**
+ * Sets the stream's pointer to the specified position. (64bit version, for large files)
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param seekType [in] Specifies how to seek - according to current position, end or beginning.
+ * @param nOffset [in] Specifies how many bytes to move
+ */
+ XnStatus (XN_CALLBACK_TYPE* Seek64)(void* pCookie, XnOSSeekType seekType, const XnInt64 nOffset);
+
+ /**
+ * Tells the current position in the stream. (64bit version, for large files)
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param pPos [out] The position of the stream.
+ *
+ * @returns (XnUInt64)-1 on error.
+ */
+ XnUInt64 (XN_CALLBACK_TYPE* Tell64)(void* pCookie);
+
+} XnPlayerInputStreamInterface;
+
+/**
+ * An interface that is used for notifications about node events.
+ **/
+typedef struct XnNodeNotifications
+{
+ /**
+ * Notifies the object that a production node was added
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The instance name of the added node.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeAdded)
+ (void* pCookie, const XnChar* strNodeName, XnProductionNodeType type,
+ XnCodecID compression);
+
+ /**
+ * Notifies the object that a production node has been removed
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The instance name of the removed node.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeRemoved)
+ (void* pCookie, const XnChar* strNodeName);
+
+ /**
+ * Notifies the object that an integer type property has changed.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose property changed.
+ * @param strPropName [in] The name of the property that changed.
+ * @param nValue [in] The new value of the property.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeIntPropChanged)
+ (void* pCookie, const XnChar* strNodeName,
+ const XnChar* strPropName, XnUInt64 nValue);
+
+ /**
+ * Notifies the object that a real type property has changed.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose property changed.
+ * @param strPropName [in] The name of the property that changed.
+ * @param dValue [in] The new value of the property.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeRealPropChanged)
+ (void* pCookie, const XnChar* strNodeName,
+ const XnChar* strPropName, XnDouble dValue);
+
+ /**
+ * Notifies the object that a string type property has changed.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose property changed.
+ * @param strPropName [in] The name of the property that changed.
+ * @param strValue [in] The new value of the property.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeStringPropChanged)
+ (void* pCookie, const XnChar* strNodeName,
+ const XnChar* strPropName, const XnChar* strValue);
+
+ /**
+ * Notifies the object that a general type property has changed.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose property changed.
+ * @param strPropName [in] The name of the property that changed.
+ * @param nBufferSize [in] The size of the buffer that holds the new value.
+ * @param pBuffer [in] The buffer that holds the new value of the property.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeGeneralPropChanged)
+ (void* pCookie, const XnChar* strNodeName,
+ const XnChar* strPropName, XnUInt32 nBufferSize, const void* pBuffer);
+
+ /**
+ * Notifies the object that a node has finished sending all the initial 'property changed' notifications.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose state is ready.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeStateReady)
+ (void* pCookie, const XnChar* strNodeName);
+
+ /**
+ * Notifies the object that it has received new data.
+ *
+ * @param pCookie [in] A cookie that was received with this interface.
+ * @param strNodeName [in] The name of the node whose property changed.
+ * @param strName [in] The name of the property that changed.
+ * @param nBufferSize [in] The size of the buffer that holds the new value.
+ * @param pBuffer [in] The buffer that holds the new value of the property.
+ */
+ XnStatus (XN_CALLBACK_TYPE* OnNodeNewData)
+ (void* pCookie, const XnChar* strNodeName,
+ XnUInt64 nTimeStamp, XnUInt32 nFrame, const void* pData, XnUInt32 nSize);
+
+} XnNodeNotifications;
+
+/** A pair of 32-bit unsigned values. **/
+typedef struct XnUInt32XYPair
+{
+ XnUInt32 X;
+ XnUInt32 Y;
+} XnUInt32XYPair;
+
+/** Holds information about a general frame of data. **/
+typedef struct XnOutputMetaData
+{
+ /** Represents the time in which the data was received. **/
+ XnUInt64 nTimestamp;
+
+ /** The frame ID, or frame number, of this frame. **/
+ XnUInt32 nFrameID;
+
+ /** The size of the data. **/
+ XnUInt32 nDataSize;
+
+ /** Specifies whether the generator updated this data on the last call to one of the XnWaitXXXUpdateXXX() functions. **/
+ XnBool bIsNew;
+
+} XnOutputMetaData;
+
+/** Holds information about a frame of data that has a map format. **/
+typedef struct XnMapMetaData
+{
+ /** A pointer to general information about this frame. **/
+ XnOutputMetaData* pOutput;
+
+ /** The resolution of this frame, including any cropping that was set. **/
+ XnUInt32XYPair Res;
+
+ /** The offset of the cropped region within this frame. Set to (0,0) if no cropping was done. **/
+ XnUInt32XYPair Offset;
+
+ /** The full resolution of this frame, disregarding cropping. **/
+ XnUInt32XYPair FullRes;
+
+ /** The pixel format of this frame. **/
+ XnPixelFormat PixelFormat;
+
+ /** The number of frames per second that was set when this frame was received. **/
+ XnUInt32 nFPS;
+} XnMapMetaData;
+
+/** Holds information about a frame of depth. **/
+typedef struct XnDepthMetaData
+{
+ /** A pointer to the map meta data of this frame. **/
+ XnMapMetaData* pMap;
+
+ /** A pointer to the depth data of this frame. **/
+ const XnDepthPixel* pData;
+
+ /** The value of the Z resolution of this frame - the maximum depth a pixel can have. **/
+ XnDepthPixel nZRes;
+} XnDepthMetaData;
+
+/** Holds information about an image frame. **/
+typedef struct XnImageMetaData
+{
+ /** A pointer to the map meta data of this frame **/
+ XnMapMetaData* pMap;
+
+ /** A pointer to the image data of this frame **/
+ const XnUInt8* pData;
+} XnImageMetaData;
+
+/** Holds information about an IR frame. **/
+typedef struct XnIRMetaData
+{
+ /** A pointer to the map meta data of this frame **/
+ XnMapMetaData* pMap;
+
+ /** A pointer to the IR data of this frame **/
+ const XnIRPixel* pData;
+} XnIRMetaData;
+
+typedef struct XnAudioMetaData
+{
+ /** A pointer to general information about this chunk of audio. **/
+ XnOutputMetaData* pOutput;
+
+ /** The wave output mode of this cunk of audio. **/
+ XnWaveOutputMode Wave;
+
+ /** A pointer to audio data of this cunk. **/
+ const XnUInt8* pData;
+} XnAudioMetaData;
+
+typedef struct XnSceneMetaData
+{
+ /** A pointer to the map meta data of this frame. **/
+ XnMapMetaData* pMap;
+
+ /** A pointer to the scene data of this frame. **/
+ const XnLabel* pData;
+} XnSceneMetaData;
+
+#if XN_PLATFORM != XN_PLATFORM_ARC
+#pragma pack (pop)
+#endif
+
+#endif //__XN_TYPES_H__