XnModuleInterface.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 *                                                                            *
00003 *  OpenNI 1.0 Alpha                                                          *
00004 *  Copyright (C) 2010 PrimeSense Ltd.                                        *
00005 *                                                                            *
00006 *  This file is part of OpenNI.                                              *
00007 *                                                                            *
00008 *  OpenNI is free software: you can redistribute it and/or modify            *
00009 *  it under the terms of the GNU Lesser General Public License as published  *
00010 *  by the Free Software Foundation, either version 3 of the License, or      *
00011 *  (at your option) any later version.                                       *
00012 *                                                                            *
00013 *  OpenNI is distributed in the hope that it will be useful,                 *
00014 *  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
00015 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the              *
00016 *  GNU Lesser General Public License for more details.                       *
00017 *                                                                            *
00018 *  You should have received a copy of the GNU Lesser General Public License  *
00019 *  along with OpenNI. If not, see <http://www.gnu.org/licenses/>.            *
00020 *                                                                            *
00021 *****************************************************************************/
00022 
00023 
00024 
00025 
00026 #ifndef __XN_MODULE_INTERFACE_H__
00027 #define __XN_MODULE_INTERFACE_H__
00028 
00029 //---------------------------------------------------------------------------
00030 // Includes
00031 //---------------------------------------------------------------------------
00032 #include <XnTypes.h>
00033 
00034 //---------------------------------------------------------------------------
00035 // Defines
00036 //---------------------------------------------------------------------------
00037 #define XN_MODULE_LOAD                                                          xnModuleLoad
00038 #define XN_MODULE_UNLOAD                                                        xnModuleUnload
00039 #define XN_MODULE_GET_EXPORTED_NODES_COUNT                      xnModuleGetExportedNodesCount
00040 #define XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS       xnModuleGetExportedNodesEntryPoints
00041 #define XN_MODULE_GET_OPEN_NI_VERSION                           xnModuleGetOpenNIVersion
00042 
00043 //---------------------------------------------------------------------------
00044 // Forward Declarations
00045 //---------------------------------------------------------------------------
00046 struct XnModuleExportedProductionNodeInterface;
00047 struct XnModuleProductionNodeInterface;
00048 struct XnModuleDeviceInterface;
00049 struct XnModuleDepthGeneratorInterface;
00050 struct XnModuleImageGeneratorInterface;
00051 struct XnModuleIRGeneratorInterface;
00052 struct XnModuleGestureGeneratorInterface;
00053 struct XnModuleUserGeneratorInterface;
00054 struct XnModuleHandsGeneratorInterface;
00055 struct XnModuleSceneAnalyzerInterface;
00056 struct XnModuleAudioGeneratorInterface;
00057 struct XnModuleRecorderInterface;
00058 struct XnModulePlayerInterface;
00059 struct XnModuleGeneratorInterface;
00060 struct XnModuleCodecInterface;
00061 
00062 //---------------------------------------------------------------------------
00063 // Types
00064 //---------------------------------------------------------------------------
00065 
00066 typedef void (XN_CALLBACK_TYPE* XnModuleGetExportedInterfacePtr)(XnModuleExportedProductionNodeInterface* pInterface);
00067 typedef XnStatus (XN_C_DECL* XnModuleLoadPtr)();
00068 typedef XnStatus (XN_C_DECL* XnModuleUnloadPtr)();
00069 typedef XnUInt32 (XN_C_DECL* XnModuleGetExportedNodesCountPtr)();
00070 typedef XnStatus (XN_C_DECL* XnModuleGetExportedNodesEntryPointsPtr)(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount);
00071 typedef void (XN_C_DECL* XnModuleGetOpenNIVersionPtr)(XnVersion* pVersion);
00072 
00074 typedef void (XN_CALLBACK_TYPE* XnModuleStateChangedHandler)(void* pCookie);
00075 
00076 // User
00077 typedef void (XN_CALLBACK_TYPE* XnModuleUserHandler)(XnUserID user, void* pCookie);
00078 
00079 // UI
00080 typedef void (XN_CALLBACK_TYPE* XnModuleHandCreate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00081 typedef void (XN_CALLBACK_TYPE* XnModuleHandUpdate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00082 typedef void (XN_CALLBACK_TYPE* XnModuleHandDestroy)(XnUserID user, XnFloat fTime, void* pCookie);
00083 
00084 // Gesture Module
00085 typedef void (XN_CALLBACK_TYPE* XnModuleGestureRecognized)(const XnChar* strGesture, const XnPoint3D* pIDPosition, const XnPoint3D* pEndPosition, void* pCookie);
00086 typedef void (XN_CALLBACK_TYPE* XnModuleGestureProgress)(const XnChar* strGesture, const XnPoint3D* pPosition, XnFloat fProgress, void* pCookie);
00087 
00088 // Skeleton
00089 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationStart)(XnUserID user, void* pCookie);
00090 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationEnd)(XnUserID user, XnBool bSuccess, void* pCookie);
00091 
00092 // Pose Detection
00093 typedef void (XN_CALLBACK_TYPE* XnModulePoseDetectionCallback)(const XnChar* strPose, XnUserID user, void* pCookie);
00094 
00095 typedef struct XnModuleExportedProductionNodeInterface
00096 {
00102         void (XN_CALLBACK_TYPE* GetDescription)
00103                 (XnProductionNodeDescription* pDescription);
00104 
00112         XnStatus (XN_CALLBACK_TYPE* EnumerateProductionTrees)
00113                 (XnContext* pContext,
00114                 XnNodeInfoList* pNodesList,
00115                 XnEnumerationErrors* pErrors);
00116 
00127         XnStatus (XN_CALLBACK_TYPE* Create)
00128                 (XnContext* pContext,
00129                 const XnChar* strInstanceName, 
00130                 const XnChar* strCreationInfo,
00131                 XnNodeInfoList* pNeededNodes, 
00132                 const XnChar* strConfigurationDir,
00133                 XnModuleNodeHandle* phInstance);
00134 
00140         void (XN_CALLBACK_TYPE* Destroy)
00141                 (XnModuleNodeHandle hInstance);
00142 
00150         union
00151         {
00152                 void (XN_CALLBACK_TYPE* Device)(XnModuleDeviceInterface* pInterface);
00153                 void (XN_CALLBACK_TYPE* Depth)(XnModuleDepthGeneratorInterface* pInterface);
00154                 void (XN_CALLBACK_TYPE* Image)(XnModuleImageGeneratorInterface* pInterface);
00155                 void (XN_CALLBACK_TYPE* IR)(XnModuleIRGeneratorInterface* pInterface);
00156                 void (XN_CALLBACK_TYPE* User)(XnModuleUserGeneratorInterface* pInterface);
00157                 void (XN_CALLBACK_TYPE* Hands)(XnModuleHandsGeneratorInterface* pInterace);
00158                 void (XN_CALLBACK_TYPE* Gesture)(XnModuleGestureGeneratorInterface* pInterface);
00159                 void (XN_CALLBACK_TYPE* Scene)(XnModuleSceneAnalyzerInterface* pInterface);
00160                 void (XN_CALLBACK_TYPE* Audio)(XnModuleAudioGeneratorInterface* pInterface);
00161                 void (XN_CALLBACK_TYPE* Recorder)(XnModuleRecorderInterface* pInterface);
00162                 void (XN_CALLBACK_TYPE* Player)(XnModulePlayerInterface* pInterface);
00163                 void (XN_CALLBACK_TYPE* Codec)(XnModuleCodecInterface* pInterface);
00164 
00165                 void (XN_CALLBACK_TYPE* General)(void*);
00166         } GetInterface;
00167 
00168 } XnModuleExportedProductionNodeInterface;
00169 
00170 typedef struct XnModuleExtendedSerializationInterface
00171 {
00172         XnStatus (XN_CALLBACK_TYPE* InitNotifications)(XnModuleNodeHandle hInstance, XnNodeNotifications* pNotifications, void* pCookie);
00173         void (XN_CALLBACK_TYPE* StopNotifications)(XnModuleNodeHandle hInstance);
00174 
00175 } XnModuleExtendedSerializationInterface;
00176 
00177 typedef struct XnModuleLockAwareInterface
00178 {
00185         XnStatus (XN_CALLBACK_TYPE* SetLockState)(XnModuleNodeHandle hInstance, XnBool bLocked);
00186 
00192         XnBool (XN_CALLBACK_TYPE* GetLockState)(XnModuleNodeHandle hInstance);
00193 
00202         XnStatus (XN_CALLBACK_TYPE* RegisterToLockChange)
00203                 (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00204                 void* pCookie, XnCallbackHandle* phCallback);
00205 
00212         void (XN_CALLBACK_TYPE* UnregisterFromLockChange)
00213                 (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00214 
00215 } XnModuleLockAwareInterface;
00216 
00217 typedef struct XnModuleErrorStateInterface
00218 {
00224         XnStatus (XN_CALLBACK_TYPE* GetErrorState)(XnModuleNodeHandle hInstance);
00225 
00234         XnStatus (XN_CALLBACK_TYPE* RegisterToErrorStateChange)
00235                 (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00236                 void* pCookie, XnCallbackHandle* phCallback);
00237 
00244         void (XN_CALLBACK_TYPE* UnregisterFromErrorStateChange)
00245                 (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00246 
00247 } XnModuleErrorStateInterface;
00248 
00249 typedef struct XnModuleProductionNodeInterface
00250 {
00257         XnBool (XN_CALLBACK_TYPE* IsCapabilitySupported)(
00258                 XnModuleNodeHandle hInstance, 
00259                 const XnChar* strCapabilityName
00260                 );
00261 
00269         XnStatus (XN_CALLBACK_TYPE* SetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64 nValue);
00270         XnStatus (XN_CALLBACK_TYPE* SetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble dValue);
00271         XnStatus (XN_CALLBACK_TYPE* SetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, const XnChar* strValue);
00272         XnStatus (XN_CALLBACK_TYPE* SetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer);
00273 
00281         XnStatus (XN_CALLBACK_TYPE* GetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64* pnValue);
00282         XnStatus (XN_CALLBACK_TYPE* GetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble* pdValue);
00283         XnStatus (XN_CALLBACK_TYPE* GetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize);
00284         XnStatus (XN_CALLBACK_TYPE* GetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer);
00285 
00286         XnModuleExtendedSerializationInterface* pExtendedSerializationInterface;
00287         XnModuleLockAwareInterface* pLockAwareInterface;
00288         XnModuleErrorStateInterface* pErrorStateInterface;
00289 
00290 } XnModuleProductionNodeInterface;
00291 
00292 typedef struct XnModuleDeviceInterface
00293 {
00294         XnModuleProductionNodeInterface* pProductionNode;
00295 } XnModuleDeviceInterface;
00296 
00297 typedef struct XnModuleMirrorInterface
00298 {
00305         XnStatus (XN_CALLBACK_TYPE* SetMirror)(XnModuleNodeHandle hInstance, XnBool bMirror);
00306 
00312         XnBool (XN_CALLBACK_TYPE* IsMirrored)(XnModuleNodeHandle hInstance);
00313 
00322         XnStatus (XN_CALLBACK_TYPE* RegisterToMirrorChange)
00323                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00324                 void* pCookie, XnCallbackHandle* phCallback);
00325 
00332         void (XN_CALLBACK_TYPE* UnregisterFromMirrorChange)
00333                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00334 
00335 } XnModuleMirrorInterface;
00336 
00337 typedef struct XnModuleAlternativeViewPointInterface
00338 {
00348         XnBool (XN_CALLBACK_TYPE* IsViewPointSupported)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00349 
00356         XnStatus (XN_CALLBACK_TYPE* SetViewPoint)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00357 
00364         XnBool (XN_CALLBACK_TYPE* IsViewPointAs)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00365 
00371         XnStatus (XN_CALLBACK_TYPE* ResetViewPoint)(XnModuleNodeHandle hGenerator);
00372 
00381         XnStatus (XN_CALLBACK_TYPE* RegisterToViewPointChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00382 
00389         void (XN_CALLBACK_TYPE* UnregisterFromViewPointChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00390 
00391 } XnModuleAlternativeViewPointInterface;
00392 
00393 typedef struct XnModuleFrameSyncInterface
00394 {
00403         XnBool (XN_CALLBACK_TYPE* CanFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00404 
00411         XnStatus (XN_CALLBACK_TYPE* FrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00412 
00419         XnStatus (XN_CALLBACK_TYPE* StopFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00420 
00427         XnBool (XN_CALLBACK_TYPE* IsFrameSyncedWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00428 
00437         XnStatus (XN_CALLBACK_TYPE* RegisterToFrameSyncChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00438 
00445         void (XN_CALLBACK_TYPE* UnregisterFromFrameSyncChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00446 
00447 } XnModuleFrameSyncInterface;
00448 
00449 typedef struct XnModuleSeekingInterface
00450 {
00451         XnUInt64 (XN_CALLBACK_TYPE* GetMinTimestamp)(XnModuleNodeHandle hGenerator);
00452         XnUInt64 (XN_CALLBACK_TYPE* GetMaxTimestamp)(XnModuleNodeHandle hGenerator);
00453         XnStatus (XN_CALLBACK_TYPE* SeekToTimestamp)(XnModuleNodeHandle hGenerator, XnUInt64 nTimestamp);
00454 
00455 } XnModuleSeekingInterface;
00456 
00458 typedef struct XnModuleGeneratorInterface
00459 {
00463         XnModuleProductionNodeInterface* pProductionNodeInterface;
00464 
00470         XnStatus (XN_CALLBACK_TYPE* StartGenerating)
00471                 (XnModuleNodeHandle hGenerator);
00472 
00478         XnBool (XN_CALLBACK_TYPE* IsGenerating)
00479                 (XnModuleNodeHandle hGenerator);
00480 
00486         void (XN_CALLBACK_TYPE* StopGenerating)
00487                 (XnModuleNodeHandle hGenerator);
00488 
00497         XnStatus (XN_CALLBACK_TYPE* RegisterToGenerationRunningChange)
00498                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00499                 void* pCookie, XnCallbackHandle* phCallback);
00500 
00507         void (XN_CALLBACK_TYPE* UnregisterFromGenerationRunningChange)
00508                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00509 
00517         XnStatus (XN_CALLBACK_TYPE* RegisterToNewDataAvailable)
00518                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00519                 void* pCookie, XnCallbackHandle* phCallback);
00520 
00527         void (XN_CALLBACK_TYPE* UnregisterFromNewDataAvailable)
00528                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00529 
00536         XnBool (XN_CALLBACK_TYPE* IsNewDataAvailable)
00537                 (XnModuleNodeHandle hGenerator, XnUInt64* pnTimestamp);
00538 
00545         XnStatus (XN_CALLBACK_TYPE* UpdateData)
00546                 (XnModuleNodeHandle hGenerator);
00547 
00553         XnUInt32 (XN_CALLBACK_TYPE* GetDataSize)(XnModuleNodeHandle hGenerator);
00554 
00560         XnUInt64 (XN_CALLBACK_TYPE* GetTimestamp)(XnModuleNodeHandle hGenerator);
00561 
00567         XnUInt32 (XN_CALLBACK_TYPE* GetFrameID)(XnModuleNodeHandle hGenerator);
00568 
00569         XnModuleMirrorInterface* pMirrorInterface;
00570         XnModuleAlternativeViewPointInterface* pAlternativeViewPointInterface;
00571         XnModuleSeekingInterface* pSeekingInterface;
00572         XnModuleFrameSyncInterface* pFrameSyncInterface;
00573 
00574 } XnModuleGeneratorInterface;
00575 
00576 typedef struct XnModuleRecorderInterface
00577 {
00578         /*
00579          * Sets the output stream for the recorder module.
00580          *
00581          * @param       hInstance               [in]    A handle to the instance.
00582          * @param       pStreamToken    [in]    A token that the recorder module must save for passing to later stream calls.
00583          * @param       pStream                 [in]    The stream interface the recorder module must save for later stream calls.
00584          */
00585         XnStatus (XN_CALLBACK_TYPE* SetOutputStream)
00586                 (XnModuleNodeHandle hInstance, void *pStreamToken, XnRecorderOutputStreamInterface *pStream);
00587 
00588         XnModuleProductionNodeInterface* pProductionNode;
00589         XnNodeNotifications* pNodeNotifications;
00590 } XnModuleRecorderInterface;
00591 
00592 typedef struct XnModulePlayerInterface
00593 {
00594         /*
00595          * Sets the input stream for the player module
00596          *
00597          * @param       hInstance               [in]    A handle to the instance.
00598          * @param       pStreamCookie   [in]    A cookie that the player module must save for passing to later stream calls.
00599          * @param       pStream                 [in]    The stream interface the player module must save for later stream calls.
00600          */
00601         XnStatus (XN_CALLBACK_TYPE* SetInputStream)
00602                 (XnModuleNodeHandle hInstance, void *pStreamCookie, XnPlayerInputStreamInterface *pStream);
00603 
00609         XnStatus (XN_CALLBACK_TYPE* ReadNext)(XnModuleNodeHandle hInstance);
00610 
00611         /*
00612          * Sets the node notifications object to be used by the player. The player will use this object to
00613          * notify about events it encounters in the stream that was set with @ref SetInputStream().
00614          *
00615          * @param       hInstance                                       [in]    A handle to the instance.
00616          * @param       pNodeNotificationsCookie        [in]    A cookie that the player module must save for passing to node notification calls.
00617          * @param       pNodeNotifications                      [in]    The node notifications interface that the player module will use to raise node notifications it finds in the stream.
00618          */
00619         XnStatus (XN_CALLBACK_TYPE* SetNodeNotifications)
00620                 (XnModuleNodeHandle hInstance, void *pNodeNotificationsCookie, XnNodeNotifications *pNodeNotifications);
00621 
00622         XnStatus (XN_CALLBACK_TYPE* SetRawNodeNotifications)
00623                 (XnModuleNodeHandle hInstance, void *pRawNodeNotificationsCookie, XnNodeNotifications *pRawNodeNotifications);
00624 
00625 
00626         /*
00627          * Determines whether the player repeats the played stream or not.
00628          *
00629          * @param       bRepeat         [in]    If TRUE, repeat is set to be ON. If FALSE, repeat is set to be OFF.
00630          */
00631         XnStatus (XN_CALLBACK_TYPE* SetRepeat)
00632                 (XnModuleNodeHandle hInstance, XnBool bRepeat);
00633 
00634         XnStatus (XN_CALLBACK_TYPE* SeekToTimeStamp)
00635                 (XnModuleNodeHandle hInstance, XnInt64 nTimeOffset, XnPlayerSeekOrigin origin);
00636 
00637         XnStatus (XN_CALLBACK_TYPE* SeekToFrame)
00638                 (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin);
00639 
00640         XnStatus (XN_CALLBACK_TYPE* TellTimestamp)
00641                 (XnModuleNodeHandle hInstance, XnUInt64* pnTimestamp);
00642 
00643         XnStatus (XN_CALLBACK_TYPE* TellFrame)
00644                 (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrame);
00645 
00646         XnStatus (XN_CALLBACK_TYPE* GetNumFrames)
00647                 (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrames);
00648 
00649         const XnChar* (XN_CALLBACK_TYPE* GetSupportedFormat)
00650                 (XnModuleNodeHandle hInstance);
00651 
00652         XnBool (XN_CALLBACK_TYPE* IsEOF)
00653                 (XnModuleNodeHandle hInstance);
00654 
00663         XnStatus (XN_CALLBACK_TYPE* RegisterToEndOfFileReached)
00664                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00665                 void* pCookie, XnCallbackHandle* phCallback);
00666 
00673         void (XN_CALLBACK_TYPE* UnregisterFromEndOfFileReached)
00674                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00675 
00676         XnModuleProductionNodeInterface* pProductionNode;
00677         XnModuleSeekingInterface* pSeekingInterface;
00678 } XnModulePlayerInterface;
00679 
00680 typedef struct XnModuleCroppingInterface
00681 {
00688         XnStatus (XN_CALLBACK_TYPE* SetCropping)(XnModuleNodeHandle hGenerator, const XnCropping* pCropping);
00689 
00696         XnStatus (XN_CALLBACK_TYPE* GetCropping)(XnModuleNodeHandle hGenerator, XnCropping* pCropping);
00697 
00706         XnStatus (XN_CALLBACK_TYPE* RegisterToCroppingChange)
00707                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00708                 void* pCookie, XnCallbackHandle* phCallback);
00709 
00716         void (XN_CALLBACK_TYPE* UnregisterFromCroppingChange)
00717                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00718 
00719 } XnModuleCroppingInterface;
00720 
00721 typedef struct XnModuleMapGeneratorInterface
00722 {
00726         XnModuleGeneratorInterface* pGeneratorInterface;
00727 
00734         XnUInt32 (XN_CALLBACK_TYPE* GetSupportedMapOutputModesCount)
00735                 (XnModuleNodeHandle hGenerator);
00736 
00746         XnStatus (XN_CALLBACK_TYPE* GetSupportedMapOutputModes)
00747                 (XnModuleNodeHandle hGenerator, 
00748                 XnMapOutputMode* aModes, XnUInt32* pnCount);
00749 
00756         XnStatus (XN_CALLBACK_TYPE* SetMapOutputMode)
00757                 (XnModuleNodeHandle hGenerator, const XnMapOutputMode* pOutputMode);
00758 
00765         XnStatus (XN_CALLBACK_TYPE* GetMapOutputMode)
00766                 (XnModuleNodeHandle hGenerator, XnMapOutputMode* pOutputMode);
00767 
00776         XnStatus (XN_CALLBACK_TYPE* RegisterToMapOutputModeChange)
00777                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00778                 void* pCookie, XnCallbackHandle* phCallback);
00779 
00786         void (XN_CALLBACK_TYPE* UnregisterFromMapOutputModeChange)
00787                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00788 
00789         XnModuleCroppingInterface* pCroppingInterface;
00790 
00791 } XnModuleMapGeneratorInterface;
00792 
00796 typedef struct XnModuleUserPositionCapabilityInterface
00797 {
00803         XnUInt32 (XN_CALLBACK_TYPE* GetSupportedUserPositionsCount)
00804                 (XnModuleNodeHandle hGenerator);
00805 
00813         XnStatus (XN_CALLBACK_TYPE* SetUserPosition)(
00814                 XnModuleNodeHandle hGenerator, 
00815                 XnUInt32 nIndex, 
00816                 const XnBoundingBox3D* pPosition);
00817 
00825         XnStatus (XN_CALLBACK_TYPE* GetUserPosition)
00826                 (XnModuleNodeHandle hGenerator, XnUInt32 nIndex, XnBoundingBox3D* pPosition);
00827 
00836         XnStatus (XN_CALLBACK_TYPE* RegisterToUserPositionChange)
00837                 (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00838                 void* pCookie, XnCallbackHandle* phCallback);
00839 
00846         void (XN_CALLBACK_TYPE* UnregisterFromUserPositionChange)
00847                 (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00848 
00849 } XnModuleUserPositionCapabilityInterface;
00850 
00852 typedef struct XnModuleDepthGeneratorInterface
00853 {
00857         XnModuleMapGeneratorInterface* pMapInterface;
00858 
00864         XnDepthPixel* (XN_CALLBACK_TYPE* GetDepthMap)
00865                 (XnModuleNodeHandle hGenerator);
00866 
00872         XnDepthPixel (XN_CALLBACK_TYPE* GetDeviceMaxDepth)
00873                 (XnModuleNodeHandle hGenerator);
00874 
00883         void (XN_CALLBACK_TYPE* GetFieldOfView)(XnModuleNodeHandle hGenerator, XnFieldOfView* pFOV);
00884 
00893         XnStatus (XN_CALLBACK_TYPE* RegisterToFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00894                 void* pCookie, XnCallbackHandle* phCallback);
00895 
00902         void (XN_CALLBACK_TYPE* UnregisterFromFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00903 
00907         XnModuleUserPositionCapabilityInterface* pUserPositionInterface;
00908 
00909 } XnModuleDepthGeneratorInterface;
00910 
00912 typedef struct XnModuleImageGeneratorInterface
00913 {
00917         XnModuleMapGeneratorInterface* pMapInterface;
00918 
00920         XnUInt8* (XN_CALLBACK_TYPE* GetImageMap)(
00921                 XnModuleNodeHandle hGenerator
00922         );
00923 
00930         XnBool (XN_CALLBACK_TYPE* IsPixelFormatSupported)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
00931 
00938         XnStatus (XN_CALLBACK_TYPE* SetPixelFormat)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
00939 
00945         XnPixelFormat (XN_CALLBACK_TYPE* GetPixelFormat)(XnModuleNodeHandle hGenerator);
00946 
00955         XnStatus (XN_CALLBACK_TYPE* RegisterToPixelFormatChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00956                 void* pCookie, XnCallbackHandle* phCallback);
00957 
00964         void (XN_CALLBACK_TYPE* UnregisterFromPixelFormatChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00965 
00966 } XnModuleImageGeneratorInterface;
00967 
00969 typedef struct XnModuleIRGeneratorInterface
00970 {
00974         XnModuleMapGeneratorInterface* pMapInterface;
00975 
00977         XnIRPixel* (XN_CALLBACK_TYPE* GetIRMap)(
00978                 XnModuleNodeHandle hGenerator
00979         );
00980 
00981 } XnModuleIRGeneratorInterface;
00982 
00984 typedef struct XnModuleGestureGeneratorInterface
00985 {
00986         XnModuleGeneratorInterface* pGeneratorInterface;
00987 
00988         XnStatus (XN_CALLBACK_TYPE* AddGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture, XnBoundingBox3D* pArea);
00989         XnStatus (XN_CALLBACK_TYPE* RemoveGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
00990         XnStatus (XN_CALLBACK_TYPE* GetActiveGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
00991         XnStatus (XN_CALLBACK_TYPE* EnumerateGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
00992         XnBool (XN_CALLBACK_TYPE* IsGestureAvailable)(XnModuleNodeHandle hInstance, const XnChar* strGesture);
00993         XnBool (XN_CALLBACK_TYPE* IsGestureProgressSupported)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
00994         XnStatus (XN_CALLBACK_TYPE* RegisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle* phCallback);
00995         void (XN_CALLBACK_TYPE* UnregisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00996         XnStatus (XN_CALLBACK_TYPE* RegisterToGestureChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00997         void (XN_CALLBACK_TYPE* UnregisterFromGestureChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00998 } XnModuleGestureGeneratorInterface;
00999 
01001 typedef struct XnModuleSceneAnalyzerInterface
01002 {
01003         XnModuleMapGeneratorInterface* pMapInterface;
01004 
01005         const XnLabel* (XN_CALLBACK_TYPE* GetLabelMap)(XnModuleNodeHandle hGenerator);
01006         XnStatus (XN_CALLBACK_TYPE* GetFloor)(XnModuleNodeHandle hGenerator, XnPlane3D* pPlane);
01007 } XnModuleSceneAnalyzerInterface;
01008 
01012 typedef struct XnModuleHandsGeneratorInterface
01013 {
01014         XnModuleGeneratorInterface* pGeneratorInterface;
01015 
01016         XnStatus (XN_CALLBACK_TYPE* RegisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle* phCallback);
01017         void (XN_CALLBACK_TYPE* UnregisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01018         XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01019         XnStatus (XN_CALLBACK_TYPE* StopTrackingAll)(XnModuleNodeHandle hGenerator);
01020         XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, const XnPoint3D* pPosition);
01021         XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01022 } XnModuleHandsGeneratorInterface;
01023 
01027 typedef struct XnModuleSkeletonCapabilityInterface
01028 {
01029         XnBool (XN_CALLBACK_TYPE* IsJointAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01030         XnBool (XN_CALLBACK_TYPE* IsProfileAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01031         XnStatus (XN_CALLBACK_TYPE* SetSkeletonProfile)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01032         XnStatus (XN_CALLBACK_TYPE* SetJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint, XnBool bState);
01033         XnBool (XN_CALLBACK_TYPE* IsJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01034         XnStatus (XN_CALLBACK_TYPE* RegisterToJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
01035         void (XN_CALLBACK_TYPE* UnregisterFromJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01036         XnStatus (XN_CALLBACK_TYPE* EnumerateActiveJoints)(XnModuleNodeHandle hGenerator, XnSkeletonJoint* pJoints, XnUInt16& nJoints);
01037         XnStatus (XN_CALLBACK_TYPE* GetSkeletonJoint)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation* pJoint);
01038         XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointPosition)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition* pJoint);
01039         XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointOrientation)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation* pJoint);
01040         XnBool (XN_CALLBACK_TYPE* IsTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01041         XnBool (XN_CALLBACK_TYPE* IsCalibrated)(XnModuleNodeHandle hGenerator, XnUserID user);
01042         XnBool (XN_CALLBACK_TYPE* IsCalibrating)(XnModuleNodeHandle hGenerator, XnUserID user);
01043         XnStatus (XN_CALLBACK_TYPE* RequestCalibration)(XnModuleNodeHandle hGenerator, XnUserID user, XnBool bForce);
01044         XnStatus (XN_CALLBACK_TYPE* AbortCalibration)(XnModuleNodeHandle hGenerator, XnUserID user);
01045         XnStatus (XN_CALLBACK_TYPE* SaveCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01046         XnStatus (XN_CALLBACK_TYPE* LoadCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01047         XnStatus (XN_CALLBACK_TYPE* ClearCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01048         XnBool (XN_CALLBACK_TYPE* IsCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01049         XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01050         XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01051         XnStatus (XN_CALLBACK_TYPE* Reset)(XnModuleNodeHandle hGenerator, XnUserID user);
01052         XnBool (XN_CALLBACK_TYPE* NeedPoseForCalibration)(XnModuleNodeHandle hGenerator);
01053         XnStatus (XN_CALLBACK_TYPE* GetCalibrationPose)(XnModuleNodeHandle hGenerator, XnChar* strPose);
01054         XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01055         XnStatus (XN_CALLBACK_TYPE* RegisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle* phCallback);
01056         void (XN_CALLBACK_TYPE* UnregisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01057 
01058 } XnModuleSkeletonCapabilityInterface;
01059 
01060 typedef struct XnModulePoseDetectionCapabilityInterface
01061 {
01062         XnUInt32 (XN_CALLBACK_TYPE* GetNumberOfPoses)(XnModuleNodeHandle hGenerator);
01063         XnStatus (XN_CALLBACK_TYPE* GetAvailablePoses)(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32* pnPoses);
01064         XnStatus (XN_CALLBACK_TYPE* StartPoseDetection)(XnModuleNodeHandle hGenerator, const XnChar* strPose, XnUserID user);
01065         XnStatus (XN_CALLBACK_TYPE* StopPoseDetection)(XnModuleNodeHandle hGenerator, XnUserID user);
01066         XnStatus (XN_CALLBACK_TYPE* RegisterToPoseCallbacks)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndCB, void* pCookie, XnCallbackHandle* phCallback);
01067         void (XN_CALLBACK_TYPE* UnregisterFromPoseCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01068 } XnModulePoseDetectionCapabilityInterface;
01069 
01071 typedef struct XnModuleUserGeneratorInterface
01072 {
01073         XnModuleGeneratorInterface* pGeneratorInterface;
01074 
01075         XnUInt16 (XN_CALLBACK_TYPE* GetNumberOfUsers)(XnModuleNodeHandle hGenerator);
01076         XnStatus (XN_CALLBACK_TYPE* GetUsers)(XnModuleNodeHandle hGenerator, XnUserID* pUsers, XnUInt16* pnUsers);
01077         XnStatus (XN_CALLBACK_TYPE* GetCoM)(XnModuleNodeHandle hGenerator, XnUserID user, XnPoint3D* pCoM);
01078         XnStatus (XN_CALLBACK_TYPE* GetUserPixels)(XnModuleNodeHandle hGenerator, XnUserID user, XnSceneMetaData* pScene);
01079         XnStatus (XN_CALLBACK_TYPE* RegisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle* phCallback);
01080         void (XN_CALLBACK_TYPE* UnregisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01081 
01085         XnModuleSkeletonCapabilityInterface* pSkeletonInterface;
01089         XnModulePoseDetectionCapabilityInterface* pPoseDetectionInteface;
01090 
01091 } XnModuleUserGeneratorInterface;
01092 
01094 typedef struct XnModuleAudioGeneratorInterface
01095 {
01096         XnModuleGeneratorInterface* pGeneratorInterface;
01097 
01098         XnUChar* (XN_CALLBACK_TYPE* GetAudioBuffer)(XnModuleNodeHandle hGenerator);
01099         XnUInt32 (XN_CALLBACK_TYPE* GetSupportedWaveOutputModesCount)(XnModuleNodeHandle hGenerator);
01100         XnStatus (XN_CALLBACK_TYPE* GetSupportedWaveOutputModes)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* aSupportedModes, XnUInt32* pnCount);
01101         XnStatus (XN_CALLBACK_TYPE* SetWaveOutputMode)(XnModuleNodeHandle hGenerator, const XnWaveOutputMode* OutputMode);
01102         XnStatus (XN_CALLBACK_TYPE* GetWaveOutputMode)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* OutputMode);
01103         XnStatus (XN_CALLBACK_TYPE* RegisterToWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01104                 void* pCookie, XnCallbackHandle* phCallback);
01105         void (XN_CALLBACK_TYPE* UnregisterFromWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01106 
01107 } XnModuleAudioGeneratorInterface;
01108 
01109 typedef struct XnModuleCodecInterface
01110 {
01111         XnModuleProductionNodeInterface* pProductionNode;
01112 
01113         XnCodecID (XN_CALLBACK_TYPE* GetCodecID)(XnModuleNodeHandle hCodec);
01114         XnStatus (XN_CALLBACK_TYPE* Init)(XnModuleNodeHandle hCodec, XnNodeHandle hNode);
01115         XnStatus (XN_CALLBACK_TYPE* CompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01116         XnStatus (XN_CALLBACK_TYPE* DecompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01117 } XnModuleCodecInterface;
01118 
01119 #endif // __XN_MODULE_INTERFACE_H__


nao_openni
Author(s): Bener SUAY
autogenerated on Mon Jan 6 2014 11:27:51