OpenNI 1.5.7
XnModuleInterface.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 *                                                                            *
00003 *  OpenNI 1.x Alpha                                                          *
00004 *  Copyright (C) 2012 PrimeSense Ltd.                                        *
00005 *                                                                            *
00006 *  This file is part of OpenNI.                                              *
00007 *                                                                            *
00008 *  Licensed under the Apache License, Version 2.0 (the "License");           *
00009 *  you may not use this file except in compliance with the License.          *
00010 *  You may obtain a copy of the License at                                   *
00011 *                                                                            *
00012 *      http://www.apache.org/licenses/LICENSE-2.0                            *
00013 *                                                                            *
00014 *  Unless required by applicable law or agreed to in writing, software       *
00015 *  distributed under the License is distributed on an "AS IS" BASIS,         *
00016 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *
00017 *  See the License for the specific language governing permissions and       *
00018 *  limitations under the License.                                            *
00019 *                                                                            *
00020 *****************************************************************************/
00021 #ifndef __XN_MODULE_INTERFACE_H__
00022 #define __XN_MODULE_INTERFACE_H__
00023 
00024 //---------------------------------------------------------------------------
00025 // Includes
00026 //---------------------------------------------------------------------------
00027 #include <XnTypes.h>
00028 
00029 //---------------------------------------------------------------------------
00030 // Defines
00031 //---------------------------------------------------------------------------
00032 #define XN_MODULE_LOAD                              xnModuleLoad
00033 #define XN_MODULE_UNLOAD                            xnModuleUnload
00034 #define XN_MODULE_GET_EXPORTED_NODES_COUNT          xnModuleGetExportedNodesCount
00035 #define XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS   xnModuleGetExportedNodesEntryPoints
00036 #define XN_MODULE_GET_OPEN_NI_VERSION               xnModuleGetOpenNIVersion
00037 
00038 //---------------------------------------------------------------------------
00039 // Forward Declarations
00040 //---------------------------------------------------------------------------
00041 struct XnModuleProductionNodeInterface;
00042 struct XnModuleDeviceInterface;
00043 struct XnModuleDepthGeneratorInterface;
00044 struct XnModuleImageGeneratorInterface;
00045 struct XnModuleIRGeneratorInterface;
00046 struct XnModuleGestureGeneratorInterface;
00047 struct XnModuleUserGeneratorInterface;
00048 struct XnModuleHandsGeneratorInterface;
00049 struct XnModuleSceneAnalyzerInterface;
00050 struct XnModuleAudioGeneratorInterface;
00051 struct XnModuleRecorderInterface;
00052 struct XnModulePlayerInterface;
00053 struct XnModuleGeneratorInterface;
00054 struct XnModuleCodecInterface;
00055 struct XnModuleScriptNodeInterface;
00056 struct XnModuleMapGeneratorInterface;
00057 
00058 //---------------------------------------------------------------------------
00059 // Types
00060 //---------------------------------------------------------------------------
00061 
00062 typedef void (XN_CALLBACK_TYPE* XnModuleGetExportedInterfacePtr)(XnModuleExportedProductionNodeInterface* pInterface);
00063 typedef XnStatus (XN_C_DECL* XnModuleLoadPtr)();
00064 typedef void (XN_C_DECL* XnModuleUnloadPtr)();
00065 typedef XnUInt32 (XN_C_DECL* XnModuleGetExportedNodesCountPtr)();
00066 typedef XnStatus (XN_C_DECL* XnModuleGetExportedNodesEntryPointsPtr)(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount);
00067 typedef void (XN_C_DECL* XnModuleGetOpenNIVersionPtr)(XnVersion* pVersion);
00068 
00069 typedef struct XnOpenNIModuleInterface
00070 {
00071     XnModuleLoadPtr pLoadFunc;
00072     XnModuleUnloadPtr pUnloadFunc;
00073     XnModuleGetExportedNodesCountPtr pGetCountFunc;
00074     XnModuleGetExportedNodesEntryPointsPtr pGetEntryPointsFunc;
00075     XnModuleGetOpenNIVersionPtr pGetVersionFunc;
00076 } XnOpenNIModuleInterface;
00077 
00079 typedef void (XN_CALLBACK_TYPE* XnModuleStateChangedHandler)(void* pCookie);
00080 
00081 // User
00082 typedef void (XN_CALLBACK_TYPE* XnModuleUserHandler)(XnUserID user, void* pCookie);
00083 
00084 // Hand touching FOV edge
00085 typedef void (XN_CALLBACK_TYPE* XnModuleHandTouchingFOVEdge)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, XnDirection eDir, void* pCookie);
00086 
00087 // UI
00088 typedef void (XN_CALLBACK_TYPE* XnModuleHandCreate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00089 typedef void (XN_CALLBACK_TYPE* XnModuleHandUpdate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00090 typedef void (XN_CALLBACK_TYPE* XnModuleHandDestroy)(XnUserID user, XnFloat fTime, void* pCookie);
00091 
00092 // Gesture Module
00093 typedef void (XN_CALLBACK_TYPE* XnModuleGestureRecognized)(const XnChar* strGesture, const XnPoint3D* pIDPosition, const XnPoint3D* pEndPosition, void* pCookie);
00094 typedef void (XN_CALLBACK_TYPE* XnModuleGestureProgress)(const XnChar* strGesture, const XnPoint3D* pPosition, XnFloat fProgress, void* pCookie);
00095 typedef void (XN_CALLBACK_TYPE* XnModuleGestureIntermediateStageCompleted)(const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
00096 typedef void (XN_CALLBACK_TYPE* XnModuleGestureReadyForNextIntermediateStage)(const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
00097 
00098 // Skeleton
00099 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationStart)(XnUserID user, void* pCookie);
00100 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationEnd)(XnUserID user, XnBool bSuccess, void* pCookie);
00101 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationInProgress)(XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
00102 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationComplete)(XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
00103 
00104 // Pose Detection
00105 typedef void (XN_CALLBACK_TYPE* XnModulePoseDetectionCallback)(const XnChar* strPose, XnUserID user, void* pCookie);
00106 typedef void (XN_CALLBACK_TYPE* XnModulePoseDetectionInProgressCallback)(const XnChar* strPose, XnUserID user, XnPoseDetectionStatus poseError, void* pCookie);
00107 
00108 typedef struct XnModuleExportedProductionNodeInterface
00109 {
00115     void (XN_CALLBACK_TYPE* GetDescription)
00116         (XnProductionNodeDescription* pDescription);
00117 
00125     XnStatus (XN_CALLBACK_TYPE* EnumerateProductionTrees)
00126         (XnContext* pContext,
00127         XnNodeInfoList* pNodesList,
00128         XnEnumerationErrors* pErrors);
00129 
00140     XnStatus (XN_CALLBACK_TYPE* Create)
00141         (XnContext* pContext,
00142         const XnChar* strInstanceName, 
00143         const XnChar* strCreationInfo,
00144         XnNodeInfoList* pNeededNodes, 
00145         const XnChar* strConfigurationDir,
00146         XnModuleNodeHandle* phInstance);
00147 
00153     void (XN_CALLBACK_TYPE* Destroy)
00154         (XnModuleNodeHandle hInstance);
00155 
00163     union
00164     {
00165         void (XN_CALLBACK_TYPE* ProductionNode)(struct XnModuleProductionNodeInterface* pInterface);
00166         void (XN_CALLBACK_TYPE* Device)(struct XnModuleDeviceInterface* pInterface);
00167         void (XN_CALLBACK_TYPE* Generator)(struct XnModuleGeneratorInterface* pInterface);
00168         void (XN_CALLBACK_TYPE* MapGenerator)(struct XnModuleMapGeneratorInterface* pInterface);
00169         void (XN_CALLBACK_TYPE* Depth)(struct XnModuleDepthGeneratorInterface* pInterface);
00170         void (XN_CALLBACK_TYPE* Image)(struct XnModuleImageGeneratorInterface* pInterface);
00171         void (XN_CALLBACK_TYPE* IR)(struct XnModuleIRGeneratorInterface* pInterface);
00172         void (XN_CALLBACK_TYPE* User)(struct XnModuleUserGeneratorInterface* pInterface);
00173         void (XN_CALLBACK_TYPE* Hands)(struct XnModuleHandsGeneratorInterface* pInterace);
00174         void (XN_CALLBACK_TYPE* Gesture)(struct XnModuleGestureGeneratorInterface* pInterface);
00175         void (XN_CALLBACK_TYPE* Scene)(struct XnModuleSceneAnalyzerInterface* pInterface);
00176         void (XN_CALLBACK_TYPE* Audio)(struct XnModuleAudioGeneratorInterface* pInterface);
00177         void (XN_CALLBACK_TYPE* Recorder)(struct XnModuleRecorderInterface* pInterface);
00178         void (XN_CALLBACK_TYPE* Player)(struct XnModulePlayerInterface* pInterface);
00179         void (XN_CALLBACK_TYPE* Codec)(struct XnModuleCodecInterface* pInterface);
00180         void (XN_CALLBACK_TYPE* Script)(struct XnModuleScriptNodeInterface* pInterface);
00181 
00182         void (XN_CALLBACK_TYPE* General)(void* pInterface);
00183     } GetInterface;
00184 
00185 } XnModuleExportedProductionNodeInterface;
00186 
00187 typedef struct XnModuleExtendedSerializationInterface
00188 {
00189     XnStatus (XN_CALLBACK_TYPE* InitNotifications)(XnModuleNodeHandle hInstance, XnNodeNotifications* pNotifications, void* pCookie);
00190     void (XN_CALLBACK_TYPE* StopNotifications)(XnModuleNodeHandle hInstance);
00191 
00192 } XnModuleExtendedSerializationInterface;
00193 
00194 typedef struct XnModuleLockAwareInterface
00195 {
00202     XnStatus (XN_CALLBACK_TYPE* SetLockState)(XnModuleNodeHandle hInstance, XnBool bLocked);
00203 
00209     XnBool (XN_CALLBACK_TYPE* GetLockState)(XnModuleNodeHandle hInstance);
00210 
00219     XnStatus (XN_CALLBACK_TYPE* RegisterToLockChange)
00220         (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00221         void* pCookie, XnCallbackHandle* phCallback);
00222 
00229     void (XN_CALLBACK_TYPE* UnregisterFromLockChange)
00230         (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00231 
00232 } XnModuleLockAwareInterface;
00233 
00234 typedef struct XnModuleErrorStateInterface
00235 {
00241     XnStatus (XN_CALLBACK_TYPE* GetErrorState)(XnModuleNodeHandle hInstance);
00242 
00251     XnStatus (XN_CALLBACK_TYPE* RegisterToErrorStateChange)
00252         (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00253         void* pCookie, XnCallbackHandle* phCallback);
00254 
00261     void (XN_CALLBACK_TYPE* UnregisterFromErrorStateChange)
00262         (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00263 
00264 } XnModuleErrorStateInterface;
00265 
00266 typedef struct XnModuleGeneralIntInterface
00267 {
00279     XnStatus (XN_CALLBACK_TYPE* GetRange)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32* pnMin, XnInt32* pnMax, XnInt32* pnStep, XnInt32* pnDefault, XnBool* pbIsAutoSupported);
00280 
00288     XnStatus (XN_CALLBACK_TYPE* Get)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32* pnValue);
00289 
00297     XnStatus (XN_CALLBACK_TYPE* Set)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32 nValue);
00298 
00308     XnStatus (XN_CALLBACK_TYPE* RegisterToValueChange)
00309         (XnModuleNodeHandle hGenerator, const XnChar* strCap, XnModuleStateChangedHandler handler,
00310         void* pCookie, XnCallbackHandle* phCallback);
00311 
00319     void (XN_CALLBACK_TYPE* UnregisterFromValueChange)
00320         (XnModuleNodeHandle hGenerator, const XnChar* strCap, XnCallbackHandle hCallback);
00321 
00322 } XnModuleGeneralIntInterface;
00323 
00324 typedef struct XnModuleProductionNodeInterface
00325 {
00332     XnBool (XN_CALLBACK_TYPE* IsCapabilitySupported)(
00333         XnModuleNodeHandle hInstance, 
00334         const XnChar* strCapabilityName
00335         );
00336 
00344     XnStatus (XN_CALLBACK_TYPE* SetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64 nValue);
00345     XnStatus (XN_CALLBACK_TYPE* SetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble dValue);
00346     XnStatus (XN_CALLBACK_TYPE* SetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, const XnChar* strValue);
00347     XnStatus (XN_CALLBACK_TYPE* SetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer);
00348 
00356     XnStatus (XN_CALLBACK_TYPE* GetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64* pnValue);
00357     XnStatus (XN_CALLBACK_TYPE* GetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble* pdValue);
00358     XnStatus (XN_CALLBACK_TYPE* GetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize);
00359     XnStatus (XN_CALLBACK_TYPE* GetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer);
00360 
00361     XnModuleExtendedSerializationInterface* pExtendedSerializationInterface;
00362     XnModuleLockAwareInterface* pLockAwareInterface;
00363     XnModuleErrorStateInterface* pErrorStateInterface;
00364     XnModuleGeneralIntInterface* pGeneralIntInterface;
00365 
00366 } XnModuleProductionNodeInterface;
00367 
00368 typedef struct XnModuleDeviceIdentificationInterface
00369 {
00381     XnStatus (XN_CALLBACK_TYPE* GetDeviceName)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00382 
00394     XnStatus (XN_CALLBACK_TYPE* GetVendorSpecificData)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00395 
00407     XnStatus (XN_CALLBACK_TYPE* GetSerialNumber)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00408     
00409 } XnModuleDeviceIdentificationInterface;
00410 
00411 typedef struct XnModuleDeviceInterface
00412 {
00413     XnModuleProductionNodeInterface* pProductionNode;
00414 
00415     XnModuleDeviceIdentificationInterface* pDeviceIdentificationInterface;
00416 
00417 } XnModuleDeviceInterface;
00418 
00419 typedef struct XnModuleMirrorInterface
00420 {
00427     XnStatus (XN_CALLBACK_TYPE* SetMirror)(XnModuleNodeHandle hInstance, XnBool bMirror);
00428 
00434     XnBool (XN_CALLBACK_TYPE* IsMirrored)(XnModuleNodeHandle hInstance);
00435 
00444     XnStatus (XN_CALLBACK_TYPE* RegisterToMirrorChange)
00445         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00446         void* pCookie, XnCallbackHandle* phCallback);
00447 
00454     void (XN_CALLBACK_TYPE* UnregisterFromMirrorChange)
00455         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00456 
00457 } XnModuleMirrorInterface;
00458 
00459 typedef struct XnModuleAlternativeViewPointInterface
00460 {
00470     XnBool (XN_CALLBACK_TYPE* IsViewPointSupported)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00471 
00478     XnStatus (XN_CALLBACK_TYPE* SetViewPoint)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00479 
00486     XnBool (XN_CALLBACK_TYPE* IsViewPointAs)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00487 
00493     XnStatus (XN_CALLBACK_TYPE* ResetViewPoint)(XnModuleNodeHandle hGenerator);
00494 
00503     XnStatus (XN_CALLBACK_TYPE* RegisterToViewPointChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00504 
00511     void (XN_CALLBACK_TYPE* UnregisterFromViewPointChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00512 
00523     XnStatus (XN_CALLBACK_TYPE* GetPixelCoordinatesInViewPoint)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther, XnUInt32 x, XnUInt32 y, XnUInt32* pAltX, XnUInt32* pAltY);
00524 
00525 } XnModuleAlternativeViewPointInterface;
00526 
00527 typedef struct XnModuleFrameSyncInterface
00528 {
00537     XnBool (XN_CALLBACK_TYPE* CanFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00538 
00545     XnStatus (XN_CALLBACK_TYPE* FrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00546 
00553     XnStatus (XN_CALLBACK_TYPE* StopFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00554 
00561     XnBool (XN_CALLBACK_TYPE* IsFrameSyncedWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00562 
00571     XnStatus (XN_CALLBACK_TYPE* RegisterToFrameSyncChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00572 
00579     void (XN_CALLBACK_TYPE* UnregisterFromFrameSyncChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00580 
00581 } XnModuleFrameSyncInterface;
00582 
00584 typedef struct XnModuleGeneratorInterface
00585 {
00589     XnModuleProductionNodeInterface* pProductionNodeInterface;
00590 
00596     XnStatus (XN_CALLBACK_TYPE* StartGenerating)
00597         (XnModuleNodeHandle hGenerator);
00598 
00604     XnBool (XN_CALLBACK_TYPE* IsGenerating)
00605         (XnModuleNodeHandle hGenerator);
00606 
00612     void (XN_CALLBACK_TYPE* StopGenerating)
00613         (XnModuleNodeHandle hGenerator);
00614 
00623     XnStatus (XN_CALLBACK_TYPE* RegisterToGenerationRunningChange)
00624         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00625         void* pCookie, XnCallbackHandle* phCallback);
00626 
00633     void (XN_CALLBACK_TYPE* UnregisterFromGenerationRunningChange)
00634         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00635 
00643     XnStatus (XN_CALLBACK_TYPE* RegisterToNewDataAvailable)
00644         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00645         void* pCookie, XnCallbackHandle* phCallback);
00646 
00653     void (XN_CALLBACK_TYPE* UnregisterFromNewDataAvailable)
00654         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00655 
00662     XnBool (XN_CALLBACK_TYPE* IsNewDataAvailable)
00663         (XnModuleNodeHandle hGenerator, XnUInt64* pnTimestamp);
00664 
00671     XnStatus (XN_CALLBACK_TYPE* UpdateData)
00672         (XnModuleNodeHandle hGenerator);
00673 
00679     XnUInt32 (XN_CALLBACK_TYPE* GetDataSize)(XnModuleNodeHandle hGenerator);
00680 
00686     XnUInt64 (XN_CALLBACK_TYPE* GetTimestamp)(XnModuleNodeHandle hGenerator);
00687 
00693     XnUInt32 (XN_CALLBACK_TYPE* GetFrameID)(XnModuleNodeHandle hGenerator);
00694 
00695     XnModuleMirrorInterface* pMirrorInterface;
00696     XnModuleAlternativeViewPointInterface* pAlternativeViewPointInterface;
00697     void* pObsolete1; // used to be pSeekingInterface (removed in 1.0.0.28)
00698     XnModuleFrameSyncInterface* pFrameSyncInterface;
00699 
00700     //Note: The GetData() function was added in version 1.0.0.28
00706     const void* (XN_CALLBACK_TYPE* GetData)(XnModuleNodeHandle hGenerator);
00707 
00708 } XnModuleGeneratorInterface;
00709 
00710 typedef struct XnModuleRecorderInterface
00711 {
00712     /*
00713      * Sets the output stream for the recorder module.
00714      *
00715      * @param   hInstance       [in]    A handle to the instance.
00716      * @param   pStreamToken    [in]    A token that the recorder module must save for passing to later stream calls.
00717      * @param   pStream         [in]    The stream interface the recorder module must save for later stream calls.
00718      */
00719     XnStatus (XN_CALLBACK_TYPE* SetOutputStream)
00720         (XnModuleNodeHandle hInstance, void *pStreamToken, XnRecorderOutputStreamInterface *pStream);
00721 
00722     XnModuleProductionNodeInterface* pProductionNode;
00723     XnNodeNotifications* pNodeNotifications;
00724 } XnModuleRecorderInterface;
00725 
00726 typedef struct XnModulePlayerInterface
00727 {
00728     /*
00729      * Sets the input stream for the player module
00730      *
00731      * @param   hInstance       [in]    A handle to the instance.
00732      * @param   pStreamCookie   [in]    A cookie that the player module must save for passing to later stream calls.
00733      * @param   pStream         [in]    The stream interface the player module must save for later stream calls.
00734      */
00735     XnStatus (XN_CALLBACK_TYPE* SetInputStream)
00736         (XnModuleNodeHandle hInstance, void *pStreamCookie, XnPlayerInputStreamInterface *pStream);
00737 
00743     XnStatus (XN_CALLBACK_TYPE* ReadNext)(XnModuleNodeHandle hInstance);
00744 
00745     /*
00746      * Sets the node notifications object to be used by the player. The player will use this object to
00747      * notify about events it encounters in the stream that was set with @ref SetInputStream().
00748      *
00749      * @param   hInstance                   [in]    A handle to the instance.
00750      * @param   pNodeNotificationsCookie    [in]    A cookie that the player module must save for passing to node notification calls.
00751      * @param   pNodeNotifications          [in]    The node notifications interface that the player module will use to raise node notifications it finds in the stream.
00752      */
00753     XnStatus (XN_CALLBACK_TYPE* SetNodeNotifications)
00754         (XnModuleNodeHandle hInstance, void *pNodeNotificationsCookie, XnNodeNotifications *pNodeNotifications);
00755 
00756     XnStatus (XN_CALLBACK_TYPE* SetRawNodeNotifications)
00757         (XnModuleNodeHandle hInstance, void *pRawNodeNotificationsCookie, XnNodeNotifications *pRawNodeNotifications);
00758 
00759 
00760     /*
00761      * Determines whether the player repeats the played stream or not.
00762      *
00763      * @param   bRepeat     [in]    If TRUE, repeat is set to be ON. If FALSE, repeat is set to be OFF.
00764      */
00765     XnStatus (XN_CALLBACK_TYPE* SetRepeat)
00766         (XnModuleNodeHandle hInstance, XnBool bRepeat);
00767 
00768     XnStatus (XN_CALLBACK_TYPE* SeekToTimeStamp)
00769         (XnModuleNodeHandle hInstance, XnInt64 nTimeOffset, XnPlayerSeekOrigin origin);
00770 
00771     XnStatus (XN_CALLBACK_TYPE* SeekToFrame)
00772         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin);
00773 
00774     XnStatus (XN_CALLBACK_TYPE* TellTimestamp)
00775         (XnModuleNodeHandle hInstance, XnUInt64* pnTimestamp);
00776 
00777     XnStatus (XN_CALLBACK_TYPE* TellFrame)
00778         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrame);
00779 
00780     XnStatus (XN_CALLBACK_TYPE* GetNumFrames)
00781         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrames);
00782 
00783     const XnChar* (XN_CALLBACK_TYPE* GetSupportedFormat)
00784         (XnModuleNodeHandle hInstance);
00785 
00786     XnBool (XN_CALLBACK_TYPE* IsEOF)
00787         (XnModuleNodeHandle hInstance);
00788 
00797     XnStatus (XN_CALLBACK_TYPE* RegisterToEndOfFileReached)
00798         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00799         void* pCookie, XnCallbackHandle* phCallback);
00800 
00807     void (XN_CALLBACK_TYPE* UnregisterFromEndOfFileReached)
00808         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00809 
00810     XnModuleProductionNodeInterface* pProductionNode;
00811     void* pObsolete1; // used to be pSeekingInterface (removed in 1.0.0.28)
00812 
00813 } XnModulePlayerInterface;
00814 
00815 typedef struct XnModuleCroppingInterface
00816 {
00823     XnStatus (XN_CALLBACK_TYPE* SetCropping)(XnModuleNodeHandle hGenerator, const XnCropping* pCropping);
00824 
00831     XnStatus (XN_CALLBACK_TYPE* GetCropping)(XnModuleNodeHandle hGenerator, XnCropping* pCropping);
00832 
00841     XnStatus (XN_CALLBACK_TYPE* RegisterToCroppingChange)
00842         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00843         void* pCookie, XnCallbackHandle* phCallback);
00844 
00851     void (XN_CALLBACK_TYPE* UnregisterFromCroppingChange)
00852         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00853 
00854 } XnModuleCroppingInterface;
00855 
00856 typedef struct XnModuleAntiFlickerInterface
00857 {
00864     XnStatus (XN_CALLBACK_TYPE* SetPowerLineFrequency)(XnModuleNodeHandle hGenerator, XnPowerLineFrequency nFrequency);
00865 
00871     XnPowerLineFrequency (XN_CALLBACK_TYPE* GetPowerLineFrequency)(XnModuleNodeHandle hGenerator);
00872 
00881     XnStatus (XN_CALLBACK_TYPE* RegisterToPowerLineFrequencyChange)
00882         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00883         void* pCookie, XnCallbackHandle* phCallback);
00884 
00891     void (XN_CALLBACK_TYPE* UnregisterFromPowerLineFrequencyChange)
00892         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00893 
00894 } XnModuleAntiFlickerInterface;
00895 
00896 typedef struct XnModuleMapGeneratorInterface
00897 {
00901     XnModuleGeneratorInterface* pGeneratorInterface;
00902 
00909     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedMapOutputModesCount)
00910         (XnModuleNodeHandle hGenerator);
00911 
00921     XnStatus (XN_CALLBACK_TYPE* GetSupportedMapOutputModes)
00922         (XnModuleNodeHandle hGenerator, 
00923         XnMapOutputMode* aModes, XnUInt32* pnCount);
00924 
00931     XnStatus (XN_CALLBACK_TYPE* SetMapOutputMode)
00932         (XnModuleNodeHandle hGenerator, const XnMapOutputMode* pOutputMode);
00933 
00940     XnStatus (XN_CALLBACK_TYPE* GetMapOutputMode)
00941         (XnModuleNodeHandle hGenerator, XnMapOutputMode* pOutputMode);
00942 
00951     XnStatus (XN_CALLBACK_TYPE* RegisterToMapOutputModeChange)
00952         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00953         void* pCookie, XnCallbackHandle* phCallback);
00954 
00961     void (XN_CALLBACK_TYPE* UnregisterFromMapOutputModeChange)
00962         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00963 
00964     XnModuleCroppingInterface* pCroppingInterface;
00965 
00966     // NOTE: GetBytesPerPixel() was added in OpenNI 1.0.0.30
00972     XnUInt32 (XN_CALLBACK_TYPE* GetBytesPerPixel)
00973         (XnModuleNodeHandle hGenerator);
00974 
00975     XnModuleAntiFlickerInterface* pAntiFlickerInterface;
00976 
00977 } XnModuleMapGeneratorInterface;
00978 
00982 typedef struct XnModuleUserPositionCapabilityInterface
00983 {
00989     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedUserPositionsCount)
00990         (XnModuleNodeHandle hGenerator);
00991 
00999     XnStatus (XN_CALLBACK_TYPE* SetUserPosition)(
01000         XnModuleNodeHandle hGenerator, 
01001         XnUInt32 nIndex, 
01002         const XnBoundingBox3D* pPosition);
01003 
01011     XnStatus (XN_CALLBACK_TYPE* GetUserPosition)
01012         (XnModuleNodeHandle hGenerator, XnUInt32 nIndex, XnBoundingBox3D* pPosition);
01013 
01022     XnStatus (XN_CALLBACK_TYPE* RegisterToUserPositionChange)
01023         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01024         void* pCookie, XnCallbackHandle* phCallback);
01025 
01032     void (XN_CALLBACK_TYPE* UnregisterFromUserPositionChange)
01033         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01034 
01035 } XnModuleUserPositionCapabilityInterface;
01036 
01038 typedef struct XnModuleDepthGeneratorInterface
01039 {
01043     XnModuleMapGeneratorInterface* pMapInterface;
01044 
01050     XnDepthPixel* (XN_CALLBACK_TYPE* GetDepthMap)
01051         (XnModuleNodeHandle hGenerator);
01052 
01058     XnDepthPixel (XN_CALLBACK_TYPE* GetDeviceMaxDepth)
01059         (XnModuleNodeHandle hGenerator);
01060 
01069     void (XN_CALLBACK_TYPE* GetFieldOfView)(XnModuleNodeHandle hGenerator, XnFieldOfView* pFOV);
01070 
01079     XnStatus (XN_CALLBACK_TYPE* RegisterToFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01080         void* pCookie, XnCallbackHandle* phCallback);
01081 
01088     void (XN_CALLBACK_TYPE* UnregisterFromFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01089 
01093     XnModuleUserPositionCapabilityInterface* pUserPositionInterface;
01094 
01095 } XnModuleDepthGeneratorInterface;
01096 
01098 typedef struct XnModuleImageGeneratorInterface
01099 {
01103     XnModuleMapGeneratorInterface* pMapInterface;
01104 
01106     XnUInt8* (XN_CALLBACK_TYPE* GetImageMap)(
01107         XnModuleNodeHandle hGenerator
01108     );
01109 
01116     XnBool (XN_CALLBACK_TYPE* IsPixelFormatSupported)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
01117 
01124     XnStatus (XN_CALLBACK_TYPE* SetPixelFormat)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
01125 
01131     XnPixelFormat (XN_CALLBACK_TYPE* GetPixelFormat)(XnModuleNodeHandle hGenerator);
01132 
01141     XnStatus (XN_CALLBACK_TYPE* RegisterToPixelFormatChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01142         void* pCookie, XnCallbackHandle* phCallback);
01143 
01150     void (XN_CALLBACK_TYPE* UnregisterFromPixelFormatChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01151 
01152 } XnModuleImageGeneratorInterface;
01153 
01155 typedef struct XnModuleIRGeneratorInterface
01156 {
01160     XnModuleMapGeneratorInterface* pMapInterface;
01161 
01163     XnIRPixel* (XN_CALLBACK_TYPE* GetIRMap)(
01164         XnModuleNodeHandle hGenerator
01165     );
01166 
01167 } XnModuleIRGeneratorInterface;
01168 
01170 typedef struct XnModuleGestureGeneratorInterface
01171 {
01172     XnModuleGeneratorInterface* pGeneratorInterface;
01173 
01174     XnStatus (XN_CALLBACK_TYPE* AddGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture, XnBoundingBox3D* pArea);
01175     XnStatus (XN_CALLBACK_TYPE* RemoveGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
01176     XnStatus (XN_CALLBACK_TYPE* GetActiveGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
01177     XnStatus (XN_CALLBACK_TYPE* EnumerateGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
01178     XnBool (XN_CALLBACK_TYPE* IsGestureAvailable)(XnModuleNodeHandle hInstance, const XnChar* strGesture);
01179     XnBool (XN_CALLBACK_TYPE* IsGestureProgressSupported)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
01180     XnStatus (XN_CALLBACK_TYPE* RegisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01181     void (XN_CALLBACK_TYPE* UnregisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01182     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
01183     void (XN_CALLBACK_TYPE* UnregisterFromGestureChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01184 
01185     XnStatus (XN_CALLBACK_TYPE* GetAllActiveGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* nGestures);
01186     XnStatus (XN_CALLBACK_TYPE* EnumerateAllGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* nGestures);
01187 
01188     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureIntermediateStageCompleted)(XnModuleNodeHandle hGenerator, XnModuleGestureIntermediateStageCompleted GestureIntermediateStageCompletedCB, void* pCookie, XnCallbackHandle* phCallback);
01189     void (XN_CALLBACK_TYPE* UnregisterFromGestureIntermediateStageCompleted)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01190     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureReadyForNextIntermediateStage)(XnModuleNodeHandle hGenerator, XnModuleGestureReadyForNextIntermediateStage ReadyForNextIntermediateStageCB, void* pCookie, XnCallbackHandle* phCallback);
01191     void (XN_CALLBACK_TYPE* UnregisterFromGestureReadyForNextIntermediateStage)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01192 
01193 } XnModuleGestureGeneratorInterface;
01194 
01196 typedef struct XnModuleSceneAnalyzerInterface
01197 {
01198     XnModuleMapGeneratorInterface* pMapInterface;
01199 
01200     const XnLabel* (XN_CALLBACK_TYPE* GetLabelMap)(XnModuleNodeHandle hGenerator);
01201     XnStatus (XN_CALLBACK_TYPE* GetFloor)(XnModuleNodeHandle hGenerator, XnPlane3D* pPlane);
01202 } XnModuleSceneAnalyzerInterface;
01203 
01207 typedef struct XnModuleHandTouchingFOVEdgeCapabilityInterface
01208 {
01209     XnStatus (XN_CALLBACK_TYPE* RegisterToHandTouchingFOVEdge)(XnModuleNodeHandle hGenerator, XnModuleHandTouchingFOVEdge, void* pCookie, XnCallbackHandle* phCallback);
01210     void (XN_CALLBACK_TYPE* UnregisterFromHandTouchingFOVEdge)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01211 } XnModuleHandTouchingFOVEdgeCapabilityInterface;
01212 
01213 typedef struct XnModuleHandsGeneratorInterface
01214 {
01215     XnModuleGeneratorInterface* pGeneratorInterface;
01216 
01217     XnStatus (XN_CALLBACK_TYPE* RegisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle* phCallback);
01218     void (XN_CALLBACK_TYPE* UnregisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01219     XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01220     XnStatus (XN_CALLBACK_TYPE* StopTrackingAll)(XnModuleNodeHandle hGenerator);
01221     XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, const XnPoint3D* pPosition);
01222     XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01223 
01224     XnModuleHandTouchingFOVEdgeCapabilityInterface* pHandTouchingFOVEdgeInterface;
01225 
01226 } XnModuleHandsGeneratorInterface;
01227 
01231 typedef struct XnModuleSkeletonCapabilityInterface
01232 {
01233     XnBool (XN_CALLBACK_TYPE* IsJointAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01234     XnBool (XN_CALLBACK_TYPE* IsProfileAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01235     XnStatus (XN_CALLBACK_TYPE* SetSkeletonProfile)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01236     XnStatus (XN_CALLBACK_TYPE* SetJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint, XnBool bState);
01237     XnBool (XN_CALLBACK_TYPE* IsJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01238     XnStatus (XN_CALLBACK_TYPE* RegisterToJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
01239     void (XN_CALLBACK_TYPE* UnregisterFromJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01240     XnStatus (XN_CALLBACK_TYPE* EnumerateActiveJoints)(XnModuleNodeHandle hGenerator, XnSkeletonJoint* pJoints, XnUInt16* pnJoints);
01241     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJoint)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation* pJoint);
01242     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointPosition)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition* pJoint);
01243     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointOrientation)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation* pJoint);
01244     XnBool (XN_CALLBACK_TYPE* IsTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01245     XnBool (XN_CALLBACK_TYPE* IsCalibrated)(XnModuleNodeHandle hGenerator, XnUserID user);
01246     XnBool (XN_CALLBACK_TYPE* IsCalibrating)(XnModuleNodeHandle hGenerator, XnUserID user);
01247     XnStatus (XN_CALLBACK_TYPE* RequestCalibration)(XnModuleNodeHandle hGenerator, XnUserID user, XnBool bForce);
01248     XnStatus (XN_CALLBACK_TYPE* AbortCalibration)(XnModuleNodeHandle hGenerator, XnUserID user);
01249     XnStatus (XN_CALLBACK_TYPE* SaveCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01250     XnStatus (XN_CALLBACK_TYPE* LoadCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01251     XnStatus (XN_CALLBACK_TYPE* ClearCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01252     XnBool (XN_CALLBACK_TYPE* IsCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01253     XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01254     XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01255     XnStatus (XN_CALLBACK_TYPE* Reset)(XnModuleNodeHandle hGenerator, XnUserID user);
01256     XnBool (XN_CALLBACK_TYPE* NeedPoseForCalibration)(XnModuleNodeHandle hGenerator);
01257     XnStatus (XN_CALLBACK_TYPE* GetCalibrationPose)(XnModuleNodeHandle hGenerator, XnChar* strPose);
01258     XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01259     XnStatus (XN_CALLBACK_TYPE* RegisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle* phCallback);
01260     void (XN_CALLBACK_TYPE* UnregisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01261 
01262     XnStatus (XN_CALLBACK_TYPE* SaveCalibrationDataToFile)(XnModuleNodeHandle hGenerator, XnUserID user, const XnChar* strFileName);
01263     XnStatus (XN_CALLBACK_TYPE* LoadCalibrationDataFromFile)(XnModuleNodeHandle hGenerator, XnUserID user, const XnChar* strFileName);
01264 
01265     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationInProgress)(XnModuleNodeHandle hGenerator, XnModuleCalibrationInProgress CalibrationInProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01266     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationInProgress)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01267     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationComplete)(XnModuleNodeHandle hGenerator, XnModuleCalibrationComplete CalibrationCompleteCB, void* pCookie, XnCallbackHandle* phCallback);
01268     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationComplete)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01269 
01270     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationStart)(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart handler, void* pCookie, XnCallbackHandle* phCallback);
01271     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationStart)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01272 } XnModuleSkeletonCapabilityInterface;
01273 
01274 typedef struct XnModulePoseDetectionCapabilityInterface
01275 {
01276     XnUInt32 (XN_CALLBACK_TYPE* GetNumberOfPoses)(XnModuleNodeHandle hGenerator);
01277     XnStatus (XN_CALLBACK_TYPE* GetAvailablePoses)(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32* pnPoses);
01278     XnStatus (XN_CALLBACK_TYPE* StartPoseDetection)(XnModuleNodeHandle hGenerator, const XnChar* strPose, XnUserID user);
01279     XnStatus (XN_CALLBACK_TYPE* StopPoseDetection)(XnModuleNodeHandle hGenerator, XnUserID user);
01280     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseCallbacks)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndCB, void* pCookie, XnCallbackHandle* phCallback);
01281     void (XN_CALLBACK_TYPE* UnregisterFromPoseCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01282 
01283     XnStatus (XN_CALLBACK_TYPE* GetAllAvailablePoses)(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32 nNameLength, XnUInt32* pnPoses);
01284 
01285     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseDetectionInProgress)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionInProgressCallback PoseProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01286     void (XN_CALLBACK_TYPE* UnregisterFromPoseDetectionInProgress)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01287 
01288     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseDetected)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback handler, void* pCookie, XnCallbackHandle* phCallback);
01289     void (XN_CALLBACK_TYPE* UnregisterFromPoseDetected)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01290     XnStatus (XN_CALLBACK_TYPE* RegisterToOutOfPose)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback handler, void* pCookie, XnCallbackHandle* phCallback);
01291     void (XN_CALLBACK_TYPE* UnregisterFromOutOfPose)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01292 
01293     XnStatus (XN_CALLBACK_TYPE* StopSinglePoseDetection)(XnModuleNodeHandle hGenerator, XnUserID user, const XnChar* strPose);
01294 } XnModulePoseDetectionCapabilityInterface;
01295 
01297 typedef struct XnModuleUserGeneratorInterface
01298 {
01299     XnModuleGeneratorInterface* pGeneratorInterface;
01300 
01301     XnUInt16 (XN_CALLBACK_TYPE* GetNumberOfUsers)(XnModuleNodeHandle hGenerator);
01302     XnStatus (XN_CALLBACK_TYPE* GetUsers)(XnModuleNodeHandle hGenerator, XnUserID* pUsers, XnUInt16* pnUsers);
01303     XnStatus (XN_CALLBACK_TYPE* GetCoM)(XnModuleNodeHandle hGenerator, XnUserID user, XnPoint3D* pCoM);
01304     XnStatus (XN_CALLBACK_TYPE* GetUserPixels)(XnModuleNodeHandle hGenerator, XnUserID user, XnSceneMetaData* pScene);
01305     XnStatus (XN_CALLBACK_TYPE* RegisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle* phCallback);
01306     void (XN_CALLBACK_TYPE* UnregisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01307 
01311     XnModuleSkeletonCapabilityInterface* pSkeletonInterface;
01315     XnModulePoseDetectionCapabilityInterface* pPoseDetectionInterface;
01316 
01317     XnStatus (XN_CALLBACK_TYPE* RegisterToUserExit)(XnModuleNodeHandle hGenerator, XnModuleUserHandler UserExitCB, void* pCookie, XnCallbackHandle* phCallback);
01318     void (XN_CALLBACK_TYPE* UnregisterFromUserExit)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01319     XnStatus (XN_CALLBACK_TYPE* RegisterToUserReEnter)(XnModuleNodeHandle hGenerator, XnModuleUserHandler UserReEnterCB, void* pCookie, XnCallbackHandle* phCallback);
01320     void (XN_CALLBACK_TYPE* UnregisterFromUserReEnter)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01321 
01322 } XnModuleUserGeneratorInterface;
01323 
01325 typedef struct XnModuleAudioGeneratorInterface
01326 {
01327     XnModuleGeneratorInterface* pGeneratorInterface;
01328 
01329     XnUChar* (XN_CALLBACK_TYPE* GetAudioBuffer)(XnModuleNodeHandle hGenerator);
01330     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedWaveOutputModesCount)(XnModuleNodeHandle hGenerator);
01331     XnStatus (XN_CALLBACK_TYPE* GetSupportedWaveOutputModes)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* aSupportedModes, XnUInt32* pnCount);
01332     XnStatus (XN_CALLBACK_TYPE* SetWaveOutputMode)(XnModuleNodeHandle hGenerator, const XnWaveOutputMode* OutputMode);
01333     XnStatus (XN_CALLBACK_TYPE* GetWaveOutputMode)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* OutputMode);
01334     XnStatus (XN_CALLBACK_TYPE* RegisterToWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01335         void* pCookie, XnCallbackHandle* phCallback);
01336     void (XN_CALLBACK_TYPE* UnregisterFromWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01337 
01338 } XnModuleAudioGeneratorInterface;
01339 
01340 typedef struct XnModuleCodecInterface
01341 {
01342     XnModuleProductionNodeInterface* pProductionNode;
01343 
01344     XnCodecID (XN_CALLBACK_TYPE* GetCodecID)(XnModuleNodeHandle hCodec);
01345     XnStatus (XN_CALLBACK_TYPE* Init)(XnModuleNodeHandle hCodec, XnNodeHandle hNode);
01346     XnStatus (XN_CALLBACK_TYPE* CompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01347     XnStatus (XN_CALLBACK_TYPE* DecompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01348 
01349 } XnModuleCodecInterface;
01350 
01351 typedef struct XnModuleScriptNodeInterface
01352 {
01353     XnModuleProductionNodeInterface* pProductionNode;
01354 
01355     const XnChar* (XN_CALLBACK_TYPE* GetSupportedFormat)(XnModuleNodeHandle hScript);
01356     XnStatus (XN_CALLBACK_TYPE* LoadScriptFromFile)(XnModuleNodeHandle hScript, const XnChar* strFileName);
01357     XnStatus (XN_CALLBACK_TYPE* LoadScriptFromString)(XnModuleNodeHandle hScript, const XnChar* strScript);
01358     XnStatus (XN_CALLBACK_TYPE* Run)(XnModuleNodeHandle hScript, XnNodeInfoList* pCreatedNodes, XnEnumerationErrors* pErrors);
01359 
01360 } XnModuleScriptNodeInterface;
01361 
01362 #endif // __XN_MODULE_INTERFACE_H__