OpenNI 1.3.2
XnModuleInterface.h
Go to the documentation of this file.
00001 /****************************************************************************
00002 *                                                                           *
00003 *  OpenNI 1.1 Alpha                                                         *
00004 *  Copyright (C) 2011 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 #ifndef __XN_MODULE_INTERFACE_H__
00023 #define __XN_MODULE_INTERFACE_H__
00024 
00025 //---------------------------------------------------------------------------
00026 // Includes
00027 //---------------------------------------------------------------------------
00028 #include <XnTypes.h>
00029 
00030 //---------------------------------------------------------------------------
00031 // Defines
00032 //---------------------------------------------------------------------------
00033 #define XN_MODULE_LOAD                              xnModuleLoad
00034 #define XN_MODULE_UNLOAD                            xnModuleUnload
00035 #define XN_MODULE_GET_EXPORTED_NODES_COUNT          xnModuleGetExportedNodesCount
00036 #define XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS   xnModuleGetExportedNodesEntryPoints
00037 #define XN_MODULE_GET_OPEN_NI_VERSION               xnModuleGetOpenNIVersion
00038 
00039 //---------------------------------------------------------------------------
00040 // Forward Declarations
00041 //---------------------------------------------------------------------------
00042 struct XnModuleExportedProductionNodeInterface;
00043 struct XnModuleProductionNodeInterface;
00044 struct XnModuleDeviceInterface;
00045 struct XnModuleDepthGeneratorInterface;
00046 struct XnModuleImageGeneratorInterface;
00047 struct XnModuleIRGeneratorInterface;
00048 struct XnModuleGestureGeneratorInterface;
00049 struct XnModuleUserGeneratorInterface;
00050 struct XnModuleHandsGeneratorInterface;
00051 struct XnModuleSceneAnalyzerInterface;
00052 struct XnModuleAudioGeneratorInterface;
00053 struct XnModuleRecorderInterface;
00054 struct XnModulePlayerInterface;
00055 struct XnModuleGeneratorInterface;
00056 struct XnModuleCodecInterface;
00057 struct XnModuleScriptNodeInterface;
00058 struct XnModuleMapGeneratorInterface;
00059 
00060 //---------------------------------------------------------------------------
00061 // Types
00062 //---------------------------------------------------------------------------
00063 
00064 typedef void (XN_CALLBACK_TYPE* XnModuleGetExportedInterfacePtr)(XnModuleExportedProductionNodeInterface* pInterface);
00065 typedef XnStatus (XN_C_DECL* XnModuleLoadPtr)();
00066 typedef void (XN_C_DECL* XnModuleUnloadPtr)();
00067 typedef XnUInt32 (XN_C_DECL* XnModuleGetExportedNodesCountPtr)();
00068 typedef XnStatus (XN_C_DECL* XnModuleGetExportedNodesEntryPointsPtr)(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount);
00069 typedef void (XN_C_DECL* XnModuleGetOpenNIVersionPtr)(XnVersion* pVersion);
00070 
00071 typedef struct XnOpenNIModuleInterface
00072 {
00073     XnModuleLoadPtr pLoadFunc;
00074     XnModuleUnloadPtr pUnloadFunc;
00075     XnModuleGetExportedNodesCountPtr pGetCountFunc;
00076     XnModuleGetExportedNodesEntryPointsPtr pGetEntryPointsFunc;
00077     XnModuleGetOpenNIVersionPtr pGetVersionFunc;
00078 } XnOpenNIModuleInterface;
00079 
00081 typedef void (XN_CALLBACK_TYPE* XnModuleStateChangedHandler)(void* pCookie);
00082 
00083 // User
00084 typedef void (XN_CALLBACK_TYPE* XnModuleUserHandler)(XnUserID user, void* pCookie);
00085 
00086 // Hand touching FOV edge
00087 typedef void (XN_CALLBACK_TYPE* XnModuleHandTouchingFOVEdge)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, XnDirection eDir, void* pCookie);
00088 
00089 // UI
00090 typedef void (XN_CALLBACK_TYPE* XnModuleHandCreate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00091 typedef void (XN_CALLBACK_TYPE* XnModuleHandUpdate)(XnUserID user, const XnPoint3D* pPosition, XnFloat fTime, void* pCookie);
00092 typedef void (XN_CALLBACK_TYPE* XnModuleHandDestroy)(XnUserID user, XnFloat fTime, void* pCookie);
00093 
00094 // Gesture Module
00095 typedef void (XN_CALLBACK_TYPE* XnModuleGestureRecognized)(const XnChar* strGesture, const XnPoint3D* pIDPosition, const XnPoint3D* pEndPosition, void* pCookie);
00096 typedef void (XN_CALLBACK_TYPE* XnModuleGestureProgress)(const XnChar* strGesture, const XnPoint3D* pPosition, XnFloat fProgress, void* pCookie);
00097 typedef void (XN_CALLBACK_TYPE* XnModuleGestureIntermediateStageCompleted)(const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
00098 typedef void (XN_CALLBACK_TYPE* XnModuleGestureReadyForNextIntermediateStage)(const XnChar* strGesture, const XnPoint3D* pPosition, void* pCookie);
00099 
00100 // Skeleton
00101 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationStart)(XnUserID user, void* pCookie);
00102 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationEnd)(XnUserID user, XnBool bSuccess, void* pCookie);
00103 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationInProgress)(XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
00104 typedef void (XN_CALLBACK_TYPE* XnModuleCalibrationComplete)(XnUserID user, XnCalibrationStatus calibrationError, void* pCookie);
00105 
00106 // Pose Detection
00107 typedef void (XN_CALLBACK_TYPE* XnModulePoseDetectionCallback)(const XnChar* strPose, XnUserID user, void* pCookie);
00108 typedef void (XN_CALLBACK_TYPE* XnModulePoseDetectionInProgressCallback)(const XnChar* strPose, XnUserID user, XnPoseDetectionStatus poseError, void* pCookie);
00109 
00110 typedef struct XnModuleExportedProductionNodeInterface
00111 {
00117     void (XN_CALLBACK_TYPE* GetDescription)
00118         (XnProductionNodeDescription* pDescription);
00119 
00127     XnStatus (XN_CALLBACK_TYPE* EnumerateProductionTrees)
00128         (XnContext* pContext,
00129         XnNodeInfoList* pNodesList,
00130         XnEnumerationErrors* pErrors);
00131 
00142     XnStatus (XN_CALLBACK_TYPE* Create)
00143         (XnContext* pContext,
00144         const XnChar* strInstanceName, 
00145         const XnChar* strCreationInfo,
00146         XnNodeInfoList* pNeededNodes, 
00147         const XnChar* strConfigurationDir,
00148         XnModuleNodeHandle* phInstance);
00149 
00155     void (XN_CALLBACK_TYPE* Destroy)
00156         (XnModuleNodeHandle hInstance);
00157 
00165     union
00166     {
00167         void (XN_CALLBACK_TYPE* ProductionNode)(struct XnModuleProductionNodeInterface* pInterface);
00168         void (XN_CALLBACK_TYPE* Device)(struct XnModuleDeviceInterface* pInterface);
00169         void (XN_CALLBACK_TYPE* Generator)(struct XnModuleGeneratorInterface* pInterface);
00170         void (XN_CALLBACK_TYPE* MapGenerator)(struct XnModuleMapGeneratorInterface* pInterface);
00171         void (XN_CALLBACK_TYPE* Depth)(struct XnModuleDepthGeneratorInterface* pInterface);
00172         void (XN_CALLBACK_TYPE* Image)(struct XnModuleImageGeneratorInterface* pInterface);
00173         void (XN_CALLBACK_TYPE* IR)(struct XnModuleIRGeneratorInterface* pInterface);
00174         void (XN_CALLBACK_TYPE* User)(struct XnModuleUserGeneratorInterface* pInterface);
00175         void (XN_CALLBACK_TYPE* Hands)(struct XnModuleHandsGeneratorInterface* pInterace);
00176         void (XN_CALLBACK_TYPE* Gesture)(struct XnModuleGestureGeneratorInterface* pInterface);
00177         void (XN_CALLBACK_TYPE* Scene)(struct XnModuleSceneAnalyzerInterface* pInterface);
00178         void (XN_CALLBACK_TYPE* Audio)(struct XnModuleAudioGeneratorInterface* pInterface);
00179         void (XN_CALLBACK_TYPE* Recorder)(struct XnModuleRecorderInterface* pInterface);
00180         void (XN_CALLBACK_TYPE* Player)(struct XnModulePlayerInterface* pInterface);
00181         void (XN_CALLBACK_TYPE* Codec)(struct XnModuleCodecInterface* pInterface);
00182         void (XN_CALLBACK_TYPE* Script)(struct XnModuleScriptNodeInterface* pInterface);
00183 
00184         void (XN_CALLBACK_TYPE* General)(void* pInterface);
00185     } GetInterface;
00186 
00187 } XnModuleExportedProductionNodeInterface;
00188 
00189 typedef struct XnModuleExtendedSerializationInterface
00190 {
00191     XnStatus (XN_CALLBACK_TYPE* InitNotifications)(XnModuleNodeHandle hInstance, XnNodeNotifications* pNotifications, void* pCookie);
00192     void (XN_CALLBACK_TYPE* StopNotifications)(XnModuleNodeHandle hInstance);
00193 
00194 } XnModuleExtendedSerializationInterface;
00195 
00196 typedef struct XnModuleLockAwareInterface
00197 {
00204     XnStatus (XN_CALLBACK_TYPE* SetLockState)(XnModuleNodeHandle hInstance, XnBool bLocked);
00205 
00211     XnBool (XN_CALLBACK_TYPE* GetLockState)(XnModuleNodeHandle hInstance);
00212 
00221     XnStatus (XN_CALLBACK_TYPE* RegisterToLockChange)
00222         (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00223         void* pCookie, XnCallbackHandle* phCallback);
00224 
00231     void (XN_CALLBACK_TYPE* UnregisterFromLockChange)
00232         (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00233 
00234 } XnModuleLockAwareInterface;
00235 
00236 typedef struct XnModuleErrorStateInterface
00237 {
00243     XnStatus (XN_CALLBACK_TYPE* GetErrorState)(XnModuleNodeHandle hInstance);
00244 
00253     XnStatus (XN_CALLBACK_TYPE* RegisterToErrorStateChange)
00254         (XnModuleNodeHandle hInstance, XnModuleStateChangedHandler handler,
00255         void* pCookie, XnCallbackHandle* phCallback);
00256 
00263     void (XN_CALLBACK_TYPE* UnregisterFromErrorStateChange)
00264         (XnModuleNodeHandle hInstance, XnCallbackHandle hCallback);
00265 
00266 } XnModuleErrorStateInterface;
00267 
00268 typedef struct XnModuleGeneralIntInterface
00269 {
00281     XnStatus (XN_CALLBACK_TYPE* GetRange)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32* pnMin, XnInt32* pnMax, XnInt32* pnStep, XnInt32* pnDefault, XnBool* pbIsAutoSupported);
00282 
00290     XnStatus (XN_CALLBACK_TYPE* Get)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32* pnValue);
00291 
00299     XnStatus (XN_CALLBACK_TYPE* Set)(XnModuleNodeHandle hGenerator, const XnChar* strCap, XnInt32 nValue);
00300 
00310     XnStatus (XN_CALLBACK_TYPE* RegisterToValueChange)
00311         (XnModuleNodeHandle hGenerator, const XnChar* strCap, XnModuleStateChangedHandler handler,
00312         void* pCookie, XnCallbackHandle* phCallback);
00313 
00321     void (XN_CALLBACK_TYPE* UnregisterFromValueChange)
00322         (XnModuleNodeHandle hGenerator, const XnChar* strCap, XnCallbackHandle hCallback);
00323 
00324 } XnModuleGeneralIntInterface;
00325 
00326 typedef struct XnModuleProductionNodeInterface
00327 {
00334     XnBool (XN_CALLBACK_TYPE* IsCapabilitySupported)(
00335         XnModuleNodeHandle hInstance, 
00336         const XnChar* strCapabilityName
00337         );
00338 
00346     XnStatus (XN_CALLBACK_TYPE* SetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64 nValue);
00347     XnStatus (XN_CALLBACK_TYPE* SetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble dValue);
00348     XnStatus (XN_CALLBACK_TYPE* SetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, const XnChar* strValue);
00349     XnStatus (XN_CALLBACK_TYPE* SetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer);
00350 
00358     XnStatus (XN_CALLBACK_TYPE* GetIntProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt64* pnValue);
00359     XnStatus (XN_CALLBACK_TYPE* GetRealProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnDouble* pdValue);
00360     XnStatus (XN_CALLBACK_TYPE* GetStringProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize);
00361     XnStatus (XN_CALLBACK_TYPE* GetGeneralProperty)(XnModuleNodeHandle hInstance, const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer);
00362 
00363     XnModuleExtendedSerializationInterface* pExtendedSerializationInterface;
00364     XnModuleLockAwareInterface* pLockAwareInterface;
00365     XnModuleErrorStateInterface* pErrorStateInterface;
00366     XnModuleGeneralIntInterface* pGeneralIntInterface;
00367 
00368 } XnModuleProductionNodeInterface;
00369 
00370 typedef struct XnModuleDeviceIdentificationInterface
00371 {
00383     XnStatus (XN_CALLBACK_TYPE* GetDeviceName)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00384 
00396     XnStatus (XN_CALLBACK_TYPE* GetVendorSpecificData)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00397 
00409     XnStatus (XN_CALLBACK_TYPE* GetSerialNumber)(XnModuleNodeHandle hInstance, XnChar* strBuffer, XnUInt32* pnBufferSize);
00410     
00411 } XnModuleDeviceIdentificationInterface;
00412 
00413 typedef struct XnModuleDeviceInterface
00414 {
00415     XnModuleProductionNodeInterface* pProductionNode;
00416 
00417     XnModuleDeviceIdentificationInterface* pDeviceIdentificationInterface;
00418 
00419 } XnModuleDeviceInterface;
00420 
00421 typedef struct XnModuleMirrorInterface
00422 {
00429     XnStatus (XN_CALLBACK_TYPE* SetMirror)(XnModuleNodeHandle hInstance, XnBool bMirror);
00430 
00436     XnBool (XN_CALLBACK_TYPE* IsMirrored)(XnModuleNodeHandle hInstance);
00437 
00446     XnStatus (XN_CALLBACK_TYPE* RegisterToMirrorChange)
00447         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00448         void* pCookie, XnCallbackHandle* phCallback);
00449 
00456     void (XN_CALLBACK_TYPE* UnregisterFromMirrorChange)
00457         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00458 
00459 } XnModuleMirrorInterface;
00460 
00461 typedef struct XnModuleAlternativeViewPointInterface
00462 {
00472     XnBool (XN_CALLBACK_TYPE* IsViewPointSupported)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00473 
00480     XnStatus (XN_CALLBACK_TYPE* SetViewPoint)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00481 
00488     XnBool (XN_CALLBACK_TYPE* IsViewPointAs)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00489 
00495     XnStatus (XN_CALLBACK_TYPE* ResetViewPoint)(XnModuleNodeHandle hGenerator);
00496 
00505     XnStatus (XN_CALLBACK_TYPE* RegisterToViewPointChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00506 
00513     void (XN_CALLBACK_TYPE* UnregisterFromViewPointChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00514 
00515 } XnModuleAlternativeViewPointInterface;
00516 
00517 typedef struct XnModuleFrameSyncInterface
00518 {
00527     XnBool (XN_CALLBACK_TYPE* CanFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00528 
00535     XnStatus (XN_CALLBACK_TYPE* FrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00536 
00543     XnStatus (XN_CALLBACK_TYPE* StopFrameSyncWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00544 
00551     XnBool (XN_CALLBACK_TYPE* IsFrameSyncedWith)(XnModuleNodeHandle hGenerator, XnNodeHandle hOther);
00552 
00561     XnStatus (XN_CALLBACK_TYPE* RegisterToFrameSyncChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
00562 
00569     void (XN_CALLBACK_TYPE* UnregisterFromFrameSyncChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00570 
00571 } XnModuleFrameSyncInterface;
00572 
00574 typedef struct XnModuleGeneratorInterface
00575 {
00579     XnModuleProductionNodeInterface* pProductionNodeInterface;
00580 
00586     XnStatus (XN_CALLBACK_TYPE* StartGenerating)
00587         (XnModuleNodeHandle hGenerator);
00588 
00594     XnBool (XN_CALLBACK_TYPE* IsGenerating)
00595         (XnModuleNodeHandle hGenerator);
00596 
00602     void (XN_CALLBACK_TYPE* StopGenerating)
00603         (XnModuleNodeHandle hGenerator);
00604 
00613     XnStatus (XN_CALLBACK_TYPE* RegisterToGenerationRunningChange)
00614         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00615         void* pCookie, XnCallbackHandle* phCallback);
00616 
00623     void (XN_CALLBACK_TYPE* UnregisterFromGenerationRunningChange)
00624         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00625 
00633     XnStatus (XN_CALLBACK_TYPE* RegisterToNewDataAvailable)
00634         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00635         void* pCookie, XnCallbackHandle* phCallback);
00636 
00643     void (XN_CALLBACK_TYPE* UnregisterFromNewDataAvailable)
00644         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00645 
00652     XnBool (XN_CALLBACK_TYPE* IsNewDataAvailable)
00653         (XnModuleNodeHandle hGenerator, XnUInt64* pnTimestamp);
00654 
00661     XnStatus (XN_CALLBACK_TYPE* UpdateData)
00662         (XnModuleNodeHandle hGenerator);
00663 
00669     XnUInt32 (XN_CALLBACK_TYPE* GetDataSize)(XnModuleNodeHandle hGenerator);
00670 
00676     XnUInt64 (XN_CALLBACK_TYPE* GetTimestamp)(XnModuleNodeHandle hGenerator);
00677 
00683     XnUInt32 (XN_CALLBACK_TYPE* GetFrameID)(XnModuleNodeHandle hGenerator);
00684 
00685     XnModuleMirrorInterface* pMirrorInterface;
00686     XnModuleAlternativeViewPointInterface* pAlternativeViewPointInterface;
00687     void* pObsolete1; // used to be pSeekingInterface (removed in 1.0.0.28)
00688     XnModuleFrameSyncInterface* pFrameSyncInterface;
00689 
00690     //Note: The GetData() function was added in version 1.0.0.28
00696     const void* (XN_CALLBACK_TYPE* GetData)(XnModuleNodeHandle hGenerator);
00697 
00698 } XnModuleGeneratorInterface;
00699 
00700 typedef struct XnModuleRecorderInterface
00701 {
00702     /*
00703      * Sets the output stream for the recorder module.
00704      *
00705      * @param   hInstance       [in]    A handle to the instance.
00706      * @param   pStreamToken    [in]    A token that the recorder module must save for passing to later stream calls.
00707      * @param   pStream         [in]    The stream interface the recorder module must save for later stream calls.
00708      */
00709     XnStatus (XN_CALLBACK_TYPE* SetOutputStream)
00710         (XnModuleNodeHandle hInstance, void *pStreamToken, XnRecorderOutputStreamInterface *pStream);
00711 
00712     XnModuleProductionNodeInterface* pProductionNode;
00713     XnNodeNotifications* pNodeNotifications;
00714 } XnModuleRecorderInterface;
00715 
00716 typedef struct XnModulePlayerInterface
00717 {
00718     /*
00719      * Sets the input stream for the player module
00720      *
00721      * @param   hInstance       [in]    A handle to the instance.
00722      * @param   pStreamCookie   [in]    A cookie that the player module must save for passing to later stream calls.
00723      * @param   pStream         [in]    The stream interface the player module must save for later stream calls.
00724      */
00725     XnStatus (XN_CALLBACK_TYPE* SetInputStream)
00726         (XnModuleNodeHandle hInstance, void *pStreamCookie, XnPlayerInputStreamInterface *pStream);
00727 
00733     XnStatus (XN_CALLBACK_TYPE* ReadNext)(XnModuleNodeHandle hInstance);
00734 
00735     /*
00736      * Sets the node notifications object to be used by the player. The player will use this object to
00737      * notify about events it encounters in the stream that was set with @ref SetInputStream().
00738      *
00739      * @param   hInstance                   [in]    A handle to the instance.
00740      * @param   pNodeNotificationsCookie    [in]    A cookie that the player module must save for passing to node notification calls.
00741      * @param   pNodeNotifications          [in]    The node notifications interface that the player module will use to raise node notifications it finds in the stream.
00742      */
00743     XnStatus (XN_CALLBACK_TYPE* SetNodeNotifications)
00744         (XnModuleNodeHandle hInstance, void *pNodeNotificationsCookie, XnNodeNotifications *pNodeNotifications);
00745 
00746     XnStatus (XN_CALLBACK_TYPE* SetRawNodeNotifications)
00747         (XnModuleNodeHandle hInstance, void *pRawNodeNotificationsCookie, XnNodeNotifications *pRawNodeNotifications);
00748 
00749 
00750     /*
00751      * Determines whether the player repeats the played stream or not.
00752      *
00753      * @param   bRepeat     [in]    If TRUE, repeat is set to be ON. If FALSE, repeat is set to be OFF.
00754      */
00755     XnStatus (XN_CALLBACK_TYPE* SetRepeat)
00756         (XnModuleNodeHandle hInstance, XnBool bRepeat);
00757 
00758     XnStatus (XN_CALLBACK_TYPE* SeekToTimeStamp)
00759         (XnModuleNodeHandle hInstance, XnInt64 nTimeOffset, XnPlayerSeekOrigin origin);
00760 
00761     XnStatus (XN_CALLBACK_TYPE* SeekToFrame)
00762         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin);
00763 
00764     XnStatus (XN_CALLBACK_TYPE* TellTimestamp)
00765         (XnModuleNodeHandle hInstance, XnUInt64* pnTimestamp);
00766 
00767     XnStatus (XN_CALLBACK_TYPE* TellFrame)
00768         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrame);
00769 
00770     XnStatus (XN_CALLBACK_TYPE* GetNumFrames)
00771         (XnModuleNodeHandle hInstance, const XnChar* strNodeName, XnUInt32* pnFrames);
00772 
00773     const XnChar* (XN_CALLBACK_TYPE* GetSupportedFormat)
00774         (XnModuleNodeHandle hInstance);
00775 
00776     XnBool (XN_CALLBACK_TYPE* IsEOF)
00777         (XnModuleNodeHandle hInstance);
00778 
00787     XnStatus (XN_CALLBACK_TYPE* RegisterToEndOfFileReached)
00788         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00789         void* pCookie, XnCallbackHandle* phCallback);
00790 
00797     void (XN_CALLBACK_TYPE* UnregisterFromEndOfFileReached)
00798         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00799 
00800     XnModuleProductionNodeInterface* pProductionNode;
00801     void* pObsolete1; // used to be pSeekingInterface (removed in 1.0.0.28)
00802 
00803 } XnModulePlayerInterface;
00804 
00805 typedef struct XnModuleCroppingInterface
00806 {
00813     XnStatus (XN_CALLBACK_TYPE* SetCropping)(XnModuleNodeHandle hGenerator, const XnCropping* pCropping);
00814 
00821     XnStatus (XN_CALLBACK_TYPE* GetCropping)(XnModuleNodeHandle hGenerator, XnCropping* pCropping);
00822 
00831     XnStatus (XN_CALLBACK_TYPE* RegisterToCroppingChange)
00832         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00833         void* pCookie, XnCallbackHandle* phCallback);
00834 
00841     void (XN_CALLBACK_TYPE* UnregisterFromCroppingChange)
00842         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00843 
00844 } XnModuleCroppingInterface;
00845 
00846 typedef struct XnModuleAntiFlickerInterface
00847 {
00854     XnStatus (XN_CALLBACK_TYPE* SetPowerLineFrequency)(XnModuleNodeHandle hGenerator, XnPowerLineFrequency nFrequency);
00855 
00861     XnPowerLineFrequency (XN_CALLBACK_TYPE* GetPowerLineFrequency)(XnModuleNodeHandle hGenerator);
00862 
00871     XnStatus (XN_CALLBACK_TYPE* RegisterToPowerLineFrequencyChange)
00872         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00873         void* pCookie, XnCallbackHandle* phCallback);
00874 
00881     void (XN_CALLBACK_TYPE* UnregisterFromPowerLineFrequencyChange)
00882         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00883 
00884 } XnModuleAntiFlickerInterface;
00885 
00886 typedef struct XnModuleMapGeneratorInterface
00887 {
00891     XnModuleGeneratorInterface* pGeneratorInterface;
00892 
00899     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedMapOutputModesCount)
00900         (XnModuleNodeHandle hGenerator);
00901 
00911     XnStatus (XN_CALLBACK_TYPE* GetSupportedMapOutputModes)
00912         (XnModuleNodeHandle hGenerator, 
00913         XnMapOutputMode* aModes, XnUInt32* pnCount);
00914 
00921     XnStatus (XN_CALLBACK_TYPE* SetMapOutputMode)
00922         (XnModuleNodeHandle hGenerator, const XnMapOutputMode* pOutputMode);
00923 
00930     XnStatus (XN_CALLBACK_TYPE* GetMapOutputMode)
00931         (XnModuleNodeHandle hGenerator, XnMapOutputMode* pOutputMode);
00932 
00941     XnStatus (XN_CALLBACK_TYPE* RegisterToMapOutputModeChange)
00942         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
00943         void* pCookie, XnCallbackHandle* phCallback);
00944 
00951     void (XN_CALLBACK_TYPE* UnregisterFromMapOutputModeChange)
00952         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
00953 
00954     XnModuleCroppingInterface* pCroppingInterface;
00955 
00956     // NOTE: GetBytesPerPixel() was added in OpenNI 1.0.0.30
00962     XnUInt32 (XN_CALLBACK_TYPE* GetBytesPerPixel)
00963         (XnModuleNodeHandle hGenerator);
00964 
00965     XnModuleAntiFlickerInterface* pAntiFlickerInterface;
00966 
00967 } XnModuleMapGeneratorInterface;
00968 
00972 typedef struct XnModuleUserPositionCapabilityInterface
00973 {
00979     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedUserPositionsCount)
00980         (XnModuleNodeHandle hGenerator);
00981 
00989     XnStatus (XN_CALLBACK_TYPE* SetUserPosition)(
00990         XnModuleNodeHandle hGenerator, 
00991         XnUInt32 nIndex, 
00992         const XnBoundingBox3D* pPosition);
00993 
01001     XnStatus (XN_CALLBACK_TYPE* GetUserPosition)
01002         (XnModuleNodeHandle hGenerator, XnUInt32 nIndex, XnBoundingBox3D* pPosition);
01003 
01012     XnStatus (XN_CALLBACK_TYPE* RegisterToUserPositionChange)
01013         (XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01014         void* pCookie, XnCallbackHandle* phCallback);
01015 
01022     void (XN_CALLBACK_TYPE* UnregisterFromUserPositionChange)
01023         (XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01024 
01025 } XnModuleUserPositionCapabilityInterface;
01026 
01028 typedef struct XnModuleDepthGeneratorInterface
01029 {
01033     XnModuleMapGeneratorInterface* pMapInterface;
01034 
01040     XnDepthPixel* (XN_CALLBACK_TYPE* GetDepthMap)
01041         (XnModuleNodeHandle hGenerator);
01042 
01048     XnDepthPixel (XN_CALLBACK_TYPE* GetDeviceMaxDepth)
01049         (XnModuleNodeHandle hGenerator);
01050 
01059     void (XN_CALLBACK_TYPE* GetFieldOfView)(XnModuleNodeHandle hGenerator, XnFieldOfView* pFOV);
01060 
01069     XnStatus (XN_CALLBACK_TYPE* RegisterToFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01070         void* pCookie, XnCallbackHandle* phCallback);
01071 
01078     void (XN_CALLBACK_TYPE* UnregisterFromFieldOfViewChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01079 
01083     XnModuleUserPositionCapabilityInterface* pUserPositionInterface;
01084 
01085 } XnModuleDepthGeneratorInterface;
01086 
01088 typedef struct XnModuleImageGeneratorInterface
01089 {
01093     XnModuleMapGeneratorInterface* pMapInterface;
01094 
01096     XnUInt8* (XN_CALLBACK_TYPE* GetImageMap)(
01097         XnModuleNodeHandle hGenerator
01098     );
01099 
01106     XnBool (XN_CALLBACK_TYPE* IsPixelFormatSupported)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
01107 
01114     XnStatus (XN_CALLBACK_TYPE* SetPixelFormat)(XnModuleNodeHandle hGenerator, XnPixelFormat Format);
01115 
01121     XnPixelFormat (XN_CALLBACK_TYPE* GetPixelFormat)(XnModuleNodeHandle hGenerator);
01122 
01131     XnStatus (XN_CALLBACK_TYPE* RegisterToPixelFormatChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01132         void* pCookie, XnCallbackHandle* phCallback);
01133 
01140     void (XN_CALLBACK_TYPE* UnregisterFromPixelFormatChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01141 
01142 } XnModuleImageGeneratorInterface;
01143 
01145 typedef struct XnModuleIRGeneratorInterface
01146 {
01150     XnModuleMapGeneratorInterface* pMapInterface;
01151 
01153     XnIRPixel* (XN_CALLBACK_TYPE* GetIRMap)(
01154         XnModuleNodeHandle hGenerator
01155     );
01156 
01157 } XnModuleIRGeneratorInterface;
01158 
01160 typedef struct XnModuleGestureGeneratorInterface
01161 {
01162     XnModuleGeneratorInterface* pGeneratorInterface;
01163 
01164     XnStatus (XN_CALLBACK_TYPE* AddGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture, XnBoundingBox3D* pArea);
01165     XnStatus (XN_CALLBACK_TYPE* RemoveGesture)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
01166     XnStatus (XN_CALLBACK_TYPE* GetActiveGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
01167     XnStatus (XN_CALLBACK_TYPE* EnumerateGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt16* nGestures);
01168     XnBool (XN_CALLBACK_TYPE* IsGestureAvailable)(XnModuleNodeHandle hInstance, const XnChar* strGesture);
01169     XnBool (XN_CALLBACK_TYPE* IsGestureProgressSupported)(XnModuleNodeHandle hGenerator, const XnChar* strGesture);
01170     XnStatus (XN_CALLBACK_TYPE* RegisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01171     void (XN_CALLBACK_TYPE* UnregisterGestureCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01172     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
01173     void (XN_CALLBACK_TYPE* UnregisterFromGestureChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01174 
01175     XnStatus (XN_CALLBACK_TYPE* GetAllActiveGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* nGestures);
01176     XnStatus (XN_CALLBACK_TYPE* EnumerateAllGestures)(XnModuleNodeHandle hGenerator, XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16* nGestures);
01177 
01178     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureIntermediateStageCompleted)(XnModuleNodeHandle hGenerator, XnModuleGestureIntermediateStageCompleted GestureIntermediateStageCompletedCB, void* pCookie, XnCallbackHandle* phCallback);
01179     void (XN_CALLBACK_TYPE* UnregisterFromGestureIntermediateStageCompleted)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01180     XnStatus (XN_CALLBACK_TYPE* RegisterToGestureReadyForNextIntermediateStage)(XnModuleNodeHandle hGenerator, XnModuleGestureReadyForNextIntermediateStage ReadyForNextIntermediateStageCB, void* pCookie, XnCallbackHandle* phCallback);
01181     void (XN_CALLBACK_TYPE* UnregisterFromGestureReadyForNextIntermediateStage)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01182 
01183 } XnModuleGestureGeneratorInterface;
01184 
01186 typedef struct XnModuleSceneAnalyzerInterface
01187 {
01188     XnModuleMapGeneratorInterface* pMapInterface;
01189 
01190     const XnLabel* (XN_CALLBACK_TYPE* GetLabelMap)(XnModuleNodeHandle hGenerator);
01191     XnStatus (XN_CALLBACK_TYPE* GetFloor)(XnModuleNodeHandle hGenerator, XnPlane3D* pPlane);
01192 } XnModuleSceneAnalyzerInterface;
01193 
01197 typedef struct XnModuleHandTouchingFOVEdgeCapabilityInterface
01198 {
01199     XnStatus (XN_CALLBACK_TYPE* RegisterToHandTouchingFOVEdge)(XnModuleNodeHandle hGenerator, XnModuleHandTouchingFOVEdge, void* pCookie, XnCallbackHandle* phCallback);
01200     void (XN_CALLBACK_TYPE* UnregisterFromHandTouchingFOVEdge)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01201 } XnModuleHandTouchingFOVEdgeCapabilityInterface;
01202 
01203 typedef struct XnModuleHandsGeneratorInterface
01204 {
01205     XnModuleGeneratorInterface* pGeneratorInterface;
01206 
01207     XnStatus (XN_CALLBACK_TYPE* RegisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle* phCallback);
01208     void (XN_CALLBACK_TYPE* UnregisterHandCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01209     XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01210     XnStatus (XN_CALLBACK_TYPE* StopTrackingAll)(XnModuleNodeHandle hGenerator);
01211     XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, const XnPoint3D* pPosition);
01212     XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01213 
01214     XnModuleHandTouchingFOVEdgeCapabilityInterface* pHandTouchingFOVEdgeInterface;
01215 
01216 } XnModuleHandsGeneratorInterface;
01217 
01221 typedef struct XnModuleSkeletonCapabilityInterface
01222 {
01223     XnBool (XN_CALLBACK_TYPE* IsJointAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01224     XnBool (XN_CALLBACK_TYPE* IsProfileAvailable)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01225     XnStatus (XN_CALLBACK_TYPE* SetSkeletonProfile)(XnModuleNodeHandle hGenerator, XnSkeletonProfile eProfile);
01226     XnStatus (XN_CALLBACK_TYPE* SetJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint, XnBool bState);
01227     XnBool (XN_CALLBACK_TYPE* IsJointActive)(XnModuleNodeHandle hGenerator, XnSkeletonJoint eJoint);
01228     XnStatus (XN_CALLBACK_TYPE* RegisterToJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback);
01229     void (XN_CALLBACK_TYPE* UnregisterFromJointConfigurationChange)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01230     XnStatus (XN_CALLBACK_TYPE* EnumerateActiveJoints)(XnModuleNodeHandle hGenerator, XnSkeletonJoint* pJoints, XnUInt16* pnJoints);
01231     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJoint)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation* pJoint);
01232     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointPosition)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition* pJoint);
01233     XnStatus (XN_CALLBACK_TYPE* GetSkeletonJointOrientation)(XnModuleNodeHandle hGenerator, XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation* pJoint);
01234     XnBool (XN_CALLBACK_TYPE* IsTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01235     XnBool (XN_CALLBACK_TYPE* IsCalibrated)(XnModuleNodeHandle hGenerator, XnUserID user);
01236     XnBool (XN_CALLBACK_TYPE* IsCalibrating)(XnModuleNodeHandle hGenerator, XnUserID user);
01237     XnStatus (XN_CALLBACK_TYPE* RequestCalibration)(XnModuleNodeHandle hGenerator, XnUserID user, XnBool bForce);
01238     XnStatus (XN_CALLBACK_TYPE* AbortCalibration)(XnModuleNodeHandle hGenerator, XnUserID user);
01239     XnStatus (XN_CALLBACK_TYPE* SaveCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01240     XnStatus (XN_CALLBACK_TYPE* LoadCalibrationData)(XnModuleNodeHandle hGenerator, XnUserID user, XnUInt32 nSlot);
01241     XnStatus (XN_CALLBACK_TYPE* ClearCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01242     XnBool (XN_CALLBACK_TYPE* IsCalibrationData)(XnModuleNodeHandle hGenerator, XnUInt32 nSlot);
01243     XnStatus (XN_CALLBACK_TYPE* StartTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01244     XnStatus (XN_CALLBACK_TYPE* StopTracking)(XnModuleNodeHandle hGenerator, XnUserID user);
01245     XnStatus (XN_CALLBACK_TYPE* Reset)(XnModuleNodeHandle hGenerator, XnUserID user);
01246     XnBool (XN_CALLBACK_TYPE* NeedPoseForCalibration)(XnModuleNodeHandle hGenerator);
01247     XnStatus (XN_CALLBACK_TYPE* GetCalibrationPose)(XnModuleNodeHandle hGenerator, XnChar* strPose);
01248     XnStatus (XN_CALLBACK_TYPE* SetSmoothing)(XnModuleNodeHandle hGenerator, XnFloat fSmoothingFactor);
01249     XnStatus (XN_CALLBACK_TYPE* RegisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle* phCallback);
01250     void (XN_CALLBACK_TYPE* UnregisterCalibrationCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01251 
01252     XnStatus (XN_CALLBACK_TYPE* SaveCalibrationDataToFile)(XnModuleNodeHandle hGenerator, XnUserID user, const XnChar* strFileName);
01253     XnStatus (XN_CALLBACK_TYPE* LoadCalibrationDataFromFile)(XnModuleNodeHandle hGenerator, XnUserID user, const XnChar* strFileName);
01254 
01255     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationInProgress)(XnModuleNodeHandle hGenerator, XnModuleCalibrationInProgress CalibrationInProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01256     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationInProgress)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01257     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationComplete)(XnModuleNodeHandle hGenerator, XnModuleCalibrationComplete CalibrationCompleteCB, void* pCookie, XnCallbackHandle* phCallback);
01258     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationComplete)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01259 
01260     XnStatus (XN_CALLBACK_TYPE* RegisterToCalibrationStart)(XnModuleNodeHandle hGenerator, XnModuleCalibrationStart handler, void* pCookie, XnCallbackHandle* phCallback);
01261     void (XN_CALLBACK_TYPE* UnregisterFromCalibrationStart)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01262 } XnModuleSkeletonCapabilityInterface;
01263 
01264 typedef struct XnModulePoseDetectionCapabilityInterface
01265 {
01266     XnUInt32 (XN_CALLBACK_TYPE* GetNumberOfPoses)(XnModuleNodeHandle hGenerator);
01267     XnStatus (XN_CALLBACK_TYPE* GetAvailablePoses)(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32* pnPoses);
01268     XnStatus (XN_CALLBACK_TYPE* StartPoseDetection)(XnModuleNodeHandle hGenerator, const XnChar* strPose, XnUserID user);
01269     XnStatus (XN_CALLBACK_TYPE* StopPoseDetection)(XnModuleNodeHandle hGenerator, XnUserID user);
01270     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseCallbacks)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndCB, void* pCookie, XnCallbackHandle* phCallback);
01271     void (XN_CALLBACK_TYPE* UnregisterFromPoseCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01272 
01273     XnStatus (XN_CALLBACK_TYPE* GetAllAvailablePoses)(XnModuleNodeHandle hGenerator, XnChar** pstrPoses, XnUInt32 nNameLength, XnUInt32* pnPoses);
01274 
01275     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseDetectionInProgress)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionInProgressCallback PoseProgressCB, void* pCookie, XnCallbackHandle* phCallback);
01276     void (XN_CALLBACK_TYPE* UnregisterFromPoseDetectionInProgress)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01277 
01278     XnStatus (XN_CALLBACK_TYPE* RegisterToPoseDetected)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback handler, void* pCookie, XnCallbackHandle* phCallback);
01279     void (XN_CALLBACK_TYPE* UnregisterFromPoseDetected)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01280     XnStatus (XN_CALLBACK_TYPE* RegisterToOutOfPose)(XnModuleNodeHandle hGenerator, XnModulePoseDetectionCallback handler, void* pCookie, XnCallbackHandle* phCallback);
01281     void (XN_CALLBACK_TYPE* UnregisterFromOutOfPose)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01282 } XnModulePoseDetectionCapabilityInterface;
01283 
01285 typedef struct XnModuleUserGeneratorInterface
01286 {
01287     XnModuleGeneratorInterface* pGeneratorInterface;
01288 
01289     XnUInt16 (XN_CALLBACK_TYPE* GetNumberOfUsers)(XnModuleNodeHandle hGenerator);
01290     XnStatus (XN_CALLBACK_TYPE* GetUsers)(XnModuleNodeHandle hGenerator, XnUserID* pUsers, XnUInt16* pnUsers);
01291     XnStatus (XN_CALLBACK_TYPE* GetCoM)(XnModuleNodeHandle hGenerator, XnUserID user, XnPoint3D* pCoM);
01292     XnStatus (XN_CALLBACK_TYPE* GetUserPixels)(XnModuleNodeHandle hGenerator, XnUserID user, XnSceneMetaData* pScene);
01293     XnStatus (XN_CALLBACK_TYPE* RegisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle* phCallback);
01294     void (XN_CALLBACK_TYPE* UnregisterUserCallbacks)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01295 
01299     XnModuleSkeletonCapabilityInterface* pSkeletonInterface;
01303     XnModulePoseDetectionCapabilityInterface* pPoseDetectionInterface;
01304 
01305     XnStatus (XN_CALLBACK_TYPE* RegisterToUserExit)(XnModuleNodeHandle hGenerator, XnModuleUserHandler UserExitCB, void* pCookie, XnCallbackHandle* phCallback);
01306     void (XN_CALLBACK_TYPE* UnregisterFromUserExit)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01307     XnStatus (XN_CALLBACK_TYPE* RegisterToUserReEnter)(XnModuleNodeHandle hGenerator, XnModuleUserHandler UserReEnterCB, void* pCookie, XnCallbackHandle* phCallback);
01308     void (XN_CALLBACK_TYPE* UnregisterFromUserReEnter)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01309 
01310 } XnModuleUserGeneratorInterface;
01311 
01313 typedef struct XnModuleAudioGeneratorInterface
01314 {
01315     XnModuleGeneratorInterface* pGeneratorInterface;
01316 
01317     XnUChar* (XN_CALLBACK_TYPE* GetAudioBuffer)(XnModuleNodeHandle hGenerator);
01318     XnUInt32 (XN_CALLBACK_TYPE* GetSupportedWaveOutputModesCount)(XnModuleNodeHandle hGenerator);
01319     XnStatus (XN_CALLBACK_TYPE* GetSupportedWaveOutputModes)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* aSupportedModes, XnUInt32* pnCount);
01320     XnStatus (XN_CALLBACK_TYPE* SetWaveOutputMode)(XnModuleNodeHandle hGenerator, const XnWaveOutputMode* OutputMode);
01321     XnStatus (XN_CALLBACK_TYPE* GetWaveOutputMode)(XnModuleNodeHandle hGenerator, XnWaveOutputMode* OutputMode);
01322     XnStatus (XN_CALLBACK_TYPE* RegisterToWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnModuleStateChangedHandler handler,
01323         void* pCookie, XnCallbackHandle* phCallback);
01324     void (XN_CALLBACK_TYPE* UnregisterFromWaveOutputModeChanges)(XnModuleNodeHandle hGenerator, XnCallbackHandle hCallback);
01325 
01326 } XnModuleAudioGeneratorInterface;
01327 
01328 typedef struct XnModuleCodecInterface
01329 {
01330     XnModuleProductionNodeInterface* pProductionNode;
01331 
01332     XnCodecID (XN_CALLBACK_TYPE* GetCodecID)(XnModuleNodeHandle hCodec);
01333     XnStatus (XN_CALLBACK_TYPE* Init)(XnModuleNodeHandle hCodec, XnNodeHandle hNode);
01334     XnStatus (XN_CALLBACK_TYPE* CompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01335     XnStatus (XN_CALLBACK_TYPE* DecompressData)(XnModuleNodeHandle hCodec, const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten);
01336 
01337 } XnModuleCodecInterface;
01338 
01339 typedef struct XnModuleScriptNodeInterface
01340 {
01341     XnModuleProductionNodeInterface* pProductionNode;
01342 
01343     const XnChar* (XN_CALLBACK_TYPE* GetSupportedFormat)(XnModuleNodeHandle hScript);
01344     XnStatus (XN_CALLBACK_TYPE* LoadScriptFromFile)(XnModuleNodeHandle hScript, const XnChar* strFileName);
01345     XnStatus (XN_CALLBACK_TYPE* LoadScriptFromString)(XnModuleNodeHandle hScript, const XnChar* strScript);
01346     XnStatus (XN_CALLBACK_TYPE* Run)(XnModuleNodeHandle hScript, XnNodeInfoList* pCreatedNodes, XnEnumerationErrors* pErrors);
01347 
01348 } XnModuleScriptNodeInterface;
01349 
01350 #endif // __XN_MODULE_INTERFACE_H__