XnModuleCppInterface.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_CPP_INTERFACE_H__
00027 #define __XN_MODULE_CPP_INTERFACE_H__
00028 
00035 //---------------------------------------------------------------------------
00036 // Includes
00037 //---------------------------------------------------------------------------
00038 #include "XnModuleInterface.h"
00039 #include "XnList.h"
00040 #include "XnCppWrapper.h"
00041 
00042 //---------------------------------------------------------------------------
00043 // Types
00044 //---------------------------------------------------------------------------
00045 namespace xn
00046 {
00047         XN_DECLARE_LIST(XnModuleGetExportedInterfacePtr, ExportedNodesList);
00048 
00049         class ModuleProductionNode;
00050 
00051         class Module
00052         {
00053         public:
00054                 Module() {}
00055                 virtual ~Module() {}
00056 
00057                 virtual XnStatus Load() { return XN_STATUS_OK; }
00058                 virtual void Unload() {}
00059 
00060                 inline XnStatus AddExportedNode(XnModuleGetExportedInterfacePtr pEntryPoint) { return m_ExportedNodes.AddLast(pEntryPoint); }
00061 
00062                 XnUInt32 GetExportedNodesCount() { return m_ExportedNodes.Size(); }
00063 
00064                 XnStatus GetExportedNodes(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount)
00065                 {
00066                         if (nCount < m_ExportedNodes.Size())                                                                            
00067                         {                                                                                                                               
00068                                 return XN_STATUS_OUTPUT_BUFFER_OVERFLOW;                                        
00069                         }                                                                                                                               
00070 
00071                         XnUInt32 i = 0;                                                                                         
00072                         for (ExportedNodesList::ConstIterator it = m_ExportedNodes.begin();                     
00073                                 it != m_ExportedNodes.end();                                                                                    
00074                                 ++it, ++i)                                                                                                      
00075                         {                                                                                                                               
00076                                 aEntryPoints[i] = *it;                                                                          
00077                         }                                                                                                                               
00078 
00079                         return (XN_STATUS_OK);                                                                                  
00080                 }
00081 
00082         private:
00083                 ExportedNodesList m_ExportedNodes;
00084         };
00085 
00086         class ModuleExportedProductionNode
00087         {
00088         public:
00089                 ModuleExportedProductionNode() {}
00090                 virtual ~ModuleExportedProductionNode() {}
00091 
00092                 virtual void GetDescription(XnProductionNodeDescription* pDescription) = 0;
00093                 virtual XnStatus EnumerateProductionTrees(Context& context, NodeInfoList& TreesList, EnumerationErrors* pErrors) = 0;
00094                 virtual XnStatus Create(Context& context, const XnChar* strInstanceName, const XnChar* strCreationInfo, NodeInfoList* pNeededTrees, const XnChar* strConfigurationDir, ModuleProductionNode** ppInstance) = 0;
00095                 virtual void Destroy(ModuleProductionNode* pInstance) = 0;
00096         };
00097 
00098         class ModuleExtendedSerializationInterface
00099         {
00100         public:
00101                 virtual ~ModuleExtendedSerializationInterface() {}
00102                 virtual XnStatus NotifyExState(XnNodeNotifications* pNotifications, void* pCookie) = 0;
00103                 virtual void UnregisterExNotifications() = 0;
00104         };
00105 
00106         class ModuleLockAwareInterface
00107         {
00108         public:
00109                 virtual ~ModuleLockAwareInterface() {}
00110                 virtual XnStatus SetLockState(XnBool bLocked) = 0;
00111                 virtual XnBool GetLockState() = 0;
00112                 virtual XnStatus RegisterToLockChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00113                 virtual void UnregisterFromLockChange(XnCallbackHandle hCallback) = 0;
00114         };
00115 
00116         class ModuleErrorStateInterface
00117         {
00118         public:
00119                 virtual ~ModuleErrorStateInterface() {}
00120                 virtual XnStatus GetErrorState() = 0;
00121                 virtual XnStatus RegisterToErrorStateChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00122                 virtual void UnregisterFromErrorStateChange(XnCallbackHandle hCallback) = 0;
00123         };
00124 
00125         class ModuleProductionNode
00126         {
00127         public:
00128                 virtual ~ModuleProductionNode() {}
00129                 virtual XnBool IsCapabilitySupported(const XnChar* strCapabilityName) { return FALSE; }
00130                 virtual XnStatus SetIntProperty(const XnChar* strName, XnUInt64 nValue) { return XN_STATUS_ERROR; }
00131                 virtual XnStatus SetRealProperty(const XnChar* strName, XnDouble dValue) { return XN_STATUS_ERROR; }
00132                 virtual XnStatus SetStringProperty(const XnChar* strName, const XnChar* strValue) { return XN_STATUS_ERROR; }
00133                 virtual XnStatus SetGeneralProperty(const XnChar* strName, XnUInt32 nBufferSize, const void* pBuffer) { return XN_STATUS_ERROR; }
00134                 virtual XnStatus GetIntProperty(const XnChar* strName, XnUInt64& nValue) const { return XN_STATUS_ERROR; }
00135                 virtual XnStatus GetRealProperty(const XnChar* strName, XnDouble& dValue) const { return XN_STATUS_ERROR; }
00136                 virtual XnStatus GetStringProperty(const XnChar* strName, XnChar* csValue, XnUInt32 nBufSize) const { return XN_STATUS_ERROR; }
00137                 virtual XnStatus GetGeneralProperty(const XnChar* strName, XnUInt32 nBufferSize, void* pBuffer) const { return XN_STATUS_ERROR; }
00138                 virtual ModuleExtendedSerializationInterface* GetExtendedSerializationInterface() { return NULL; }
00139                 virtual ModuleLockAwareInterface* GetLockAwareInterface() { return NULL; }
00140                 virtual ModuleErrorStateInterface* GetErrorStateInterface() { return NULL; }
00141         };
00142 
00143         class ModuleDevice : virtual public ModuleProductionNode
00144         {
00145         public:
00146                 virtual ~ModuleDevice() {}
00147         };
00148 
00149         class ModuleMirrorInterface
00150         {
00151         public:
00152                 virtual ~ModuleMirrorInterface() {}
00153                 virtual XnStatus SetMirror(XnBool bMirror) = 0;
00154                 virtual XnBool IsMirrored() = 0;
00155                 virtual XnStatus RegisterToMirrorChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00156                 virtual void UnregisterFromMirrorChange(XnCallbackHandle hCallback) = 0;
00157         };
00158 
00159         class ModuleAlternativeViewPointInterface
00160         {
00161         public:
00162                 virtual ~ModuleAlternativeViewPointInterface() {}
00163                 virtual XnBool IsViewPointSupported(ProductionNode& other) = 0;
00164                 virtual XnStatus SetViewPoint(ProductionNode& other) = 0;
00165                 virtual XnBool IsViewPointAs(ProductionNode& other) = 0;
00166                 virtual XnStatus ResetViewPoint() = 0;
00167                 virtual XnStatus RegisterToViewPointChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00168                 virtual void UnregisterFromViewPointChange(XnCallbackHandle hCallback) = 0;
00169         };
00170 
00171         class ModuleFrameSyncInterface
00172         {
00173         public:
00174                 virtual XnBool CanFrameSyncWith(ProductionNode& other) = 0;
00175                 virtual XnStatus FrameSyncWith(ProductionNode& other) = 0;
00176                 virtual XnStatus StopFrameSyncWith(ProductionNode& other) = 0;
00177                 virtual XnBool IsFrameSyncedWith(ProductionNode& other) = 0;
00178                 virtual XnStatus RegisterToFrameSyncChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00179                 virtual void UnregisterFromFrameSyncChange(XnCallbackHandle hCallback) = 0;
00180         };
00181 
00182         class ModuleGenerator : virtual public ModuleProductionNode
00183         {
00184         public:
00185                 virtual ~ModuleGenerator() {}
00186                 virtual XnStatus StartGenerating() = 0;
00187                 virtual XnBool IsGenerating() = 0;
00188                 virtual void StopGenerating() = 0;
00189                 virtual XnStatus RegisterToGenerationRunningChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00190                 virtual void UnregisterFromGenerationRunningChange(XnCallbackHandle hCallback) = 0;
00191                 virtual XnStatus RegisterToNewDataAvailable(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00192                 virtual void UnregisterFromNewDataAvailable(XnCallbackHandle hCallback) = 0;
00193                 virtual XnBool IsNewDataAvailable(XnUInt64& nTimestamp) = 0;
00194                 virtual XnStatus UpdateData() = 0;
00195                 virtual XnUInt32 GetDataSize() = 0;
00196                 virtual XnUInt64 GetTimestamp() = 0;
00197                 virtual XnUInt32 GetFrameID() = 0;
00198                 virtual ModuleMirrorInterface* GetMirrorInterface() { return NULL; }
00199                 virtual ModuleAlternativeViewPointInterface* GetAlternativeViewPointInterface() { return NULL; }
00200                 virtual ModuleFrameSyncInterface* GetFrameSyncInterface() { return NULL; }
00201         };
00202 
00203         class ModuleNodeNotifications
00204         {
00205         public:
00206                 virtual ~ModuleNodeNotifications() {}
00207                 virtual XnStatus OnNodeAdded(const XnChar* strNodeName, XnProductionNodeType type, XnCodecID compression) = 0;
00208                 virtual XnStatus OnNodeRemoved(const XnChar* strNodeName) = 0;
00209                 virtual XnStatus OnNodeIntPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnUInt64 nValue) = 0;
00210                 virtual XnStatus OnNodeRealPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnDouble dValue) = 0;
00211                 virtual XnStatus OnNodeStringPropChanged(const XnChar* strNodeName, const XnChar* strPropName, const XnChar* strValue) = 0;
00212                 virtual XnStatus OnNodeStateReady(const XnChar* strNodeName) = 0;
00213                 virtual XnStatus OnNodeGeneralPropChanged(const XnChar* strNodeName, const XnChar* strPropName, XnUInt32 nBufferSize, const void* pBuffer) = 0;
00214                 virtual XnStatus OnNodeNewData(const XnChar* strNodeName, XnUInt64 nTimeStamp, XnUInt32 nFrame, const void* pData, XnUInt32 nSize) = 0;
00215         };
00216 
00217         class ModuleRecorder : 
00218                 virtual public ModuleProductionNode, 
00219                 virtual public ModuleNodeNotifications
00220         {
00221         public:
00222                 virtual ~ModuleRecorder() {}
00223                 virtual XnStatus SetOutputStream(void* pCookie, XnRecorderOutputStreamInterface* pStream) = 0;
00224         };
00225 
00226         class ModulePlayer : virtual public ModuleProductionNode
00227         {
00228         public:
00229                 virtual ~ModulePlayer() {}
00230                 virtual XnStatus SetInputStream(void* pStreamCookie, XnPlayerInputStreamInterface* pStream) = 0;
00231                 virtual XnStatus ReadNext() = 0;
00232                 virtual XnStatus SetNodeNotifications(void* pNodeNotificationsCookie, XnNodeNotifications* pNodeNotifications) = 0;
00233 
00234                 virtual XnStatus SetRepeat(XnBool bRepeat) = 0;
00235                 virtual XnStatus SeekToTimeStamp(XnInt64 nTimeOffset, XnPlayerSeekOrigin origin) = 0;
00236                 virtual XnStatus SeekToFrame(const XnChar* strNodeName, XnInt32 nFrameOffset, XnPlayerSeekOrigin origin) = 0;
00237                 virtual XnStatus TellTimestamp(XnUInt64& nTimestamp) = 0;
00238                 virtual XnStatus TellFrame(const XnChar* strNodeName, XnUInt32& nFrame) = 0;
00239                 virtual XnUInt32 GetNumFrames(const XnChar* strNodeName, XnUInt32& nFrames) = 0;
00240                 virtual const XnChar* GetSupportedFormat() = 0;
00241                 virtual XnBool IsEOF() = 0;
00242                 virtual XnStatus RegisterToEndOfFileReached(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00243                 virtual void UnregisterFromEndOfFileReached(XnCallbackHandle hCallback) = 0;
00244         };
00245 
00246         class ModuleCroppingInterface
00247         {
00248         public:
00249                 virtual ~ModuleCroppingInterface() {}
00250                 virtual XnStatus SetCropping(const XnCropping &Cropping) = 0;
00251                 virtual XnStatus GetCropping(XnCropping &Cropping) = 0;
00252                 virtual XnStatus RegisterToCroppingChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00253                 virtual void UnregisterFromCroppingChange(XnCallbackHandle hCallback) = 0;
00254         };
00255 
00256         class ModuleMapGenerator : virtual public ModuleGenerator
00257         {
00258         public:
00259                 virtual ~ModuleMapGenerator() {}
00260                 virtual XnUInt32 GetSupportedMapOutputModesCount() = 0;
00261                 virtual XnStatus GetSupportedMapOutputModes(XnMapOutputMode aModes[], XnUInt32& nCount) = 0;
00262                 virtual XnStatus SetMapOutputMode(const XnMapOutputMode& Mode) = 0;
00263                 virtual XnStatus GetMapOutputMode(XnMapOutputMode& Mode) = 0;
00264                 virtual XnStatus RegisterToMapOutputModeChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00265                 virtual void UnregisterFromMapOutputModeChange(XnCallbackHandle hCallback) = 0;
00266                 virtual ModuleCroppingInterface* GetCroppingInterface() { return NULL; }
00267         };
00268 
00269         class ModuleUserPositionInterface
00270         {
00271         public:
00272                 virtual ~ModuleUserPositionInterface() {}
00273                 virtual XnUInt32 GetSupportedUserPositionsCount() = 0;
00274                 virtual XnStatus SetUserPosition(XnUInt32 nIndex, const XnBoundingBox3D& Position) = 0;
00275                 virtual XnStatus GetUserPosition(XnUInt32 nIndex, XnBoundingBox3D& Position) = 0;
00276                 virtual XnStatus RegisterToUserPositionChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00277                 virtual void UnregisterFromUserPositionChange(XnCallbackHandle hCallback) = 0;
00278         };
00279 
00280         class ModuleDepthGenerator : virtual public ModuleMapGenerator
00281         {
00282         public:
00283                 virtual ~ModuleDepthGenerator() {}
00284                 virtual XnDepthPixel* GetDepthMap() = 0;
00285                 virtual XnDepthPixel GetDeviceMaxDepth() = 0;
00286                 virtual void GetFieldOfView(XnFieldOfView& FOV) = 0;
00287                 virtual XnStatus RegisterToFieldOfViewChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00288                 virtual void UnregisterFromFieldOfViewChange(XnCallbackHandle hCallback) = 0;
00289                 virtual ModuleUserPositionInterface* GetUserPositionInterface() { return NULL; }
00290         };
00291 
00292         class ModuleImageGenerator : virtual public ModuleMapGenerator
00293         {
00294         public:
00295                 virtual ~ModuleImageGenerator() {}
00296                 virtual XnUInt8* GetImageMap() = 0;
00297                 virtual XnBool IsPixelFormatSupported(XnPixelFormat Format) = 0;
00298                 virtual XnStatus SetPixelFormat(XnPixelFormat Format) = 0;
00299                 virtual XnPixelFormat GetPixelFormat() = 0;
00300                 virtual XnStatus RegisterToPixelFormatChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00301                 virtual void UnregisterFromPixelFormatChange(XnCallbackHandle hCallback) = 0;
00302         };
00303 
00304         class ModuleIRGenerator : virtual public ModuleMapGenerator
00305         {
00306         public:
00307                 virtual ~ModuleIRGenerator() {}
00308                 virtual XnIRPixel* GetIRMap() = 0;
00309         };
00310 
00311         class ModuleGestureGenerator : virtual public ModuleGenerator
00312         {
00313         public:
00314                 virtual ~ModuleGestureGenerator() {}
00315                 virtual XnStatus AddGesture(const XnChar* strGesture, XnBoundingBox3D* pArea) = 0;
00316                 virtual XnStatus RemoveGesture(const XnChar* strGesture) = 0;
00317                 virtual XnStatus GetActiveGestures(XnChar** pstrGestures, XnUInt16& nGestures) = 0;
00318                 virtual XnStatus EnumerateGestures(XnChar** pstrGestures, XnUInt16& nGestures) = 0;
00319                 virtual XnBool IsGestureAvailable(const XnChar* strGesture) = 0;
00320                 virtual XnBool IsGestureProgressSupported(const XnChar* strGesture) = 0;
00321                 virtual XnStatus RegisterGestureCallbacks(XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00322                 virtual void UnregisterGestureCallbacks(XnCallbackHandle hCallback) = 0;
00323                 virtual XnStatus RegisterToGestureChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00324                 virtual void UnregisterFromGestureChange(XnCallbackHandle hCallback) = 0;
00325         };
00326 
00327         class ModuleSceneAnalyzer : virtual public ModuleMapGenerator
00328         {
00329         public:
00330                 virtual ~ModuleSceneAnalyzer() {}
00331                 virtual const XnLabel* GetLabelMap() = 0;
00332                 virtual XnStatus GetFloor(XnPlane3D& pPlane) = 0;
00333         };
00334 
00335         class ModuleHandsGenerator : virtual public ModuleGenerator
00336         {
00337         public:
00338                 virtual ~ModuleHandsGenerator() {}
00339                 virtual XnStatus RegisterHandCallbacks(XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00340                 virtual void UnregisterHandCallbacks(XnCallbackHandle hCallback) = 0;
00341                 virtual XnStatus StopTracking(XnUserID user) = 0;
00342                 virtual XnStatus StopTrackingAll() = 0;
00343                 virtual XnStatus StartTracking(const XnPoint3D& ptPosition) = 0;
00344                 virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0;
00345         };
00346 
00347         class ModuleSkeletonInterface
00348         {
00349         public:
00350                 virtual ~ModuleSkeletonInterface() {}
00351                 virtual XnBool IsJointAvailable(XnSkeletonJoint eJoint) = 0;
00352                 virtual XnBool IsProfileAvailable(XnSkeletonProfile eProfile) = 0;
00353                 virtual XnStatus SetSkeletonProfile(XnSkeletonProfile eProfile) = 0;
00354                 virtual XnStatus SetJointActive(XnSkeletonJoint eJoint, XnBool bState) = 0;
00355                 virtual XnBool IsJointActive(XnSkeletonJoint eJoint) = 0;
00356                 virtual XnStatus RegisterToJointConfigurationChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00357                 virtual void UnregisterFromJointConfigurationChange(XnCallbackHandle hCallback) = 0;
00358                 virtual XnStatus EnumerateActiveJoints(XnSkeletonJoint* pJoints, XnUInt16& nJoints) = 0;
00359                 virtual XnStatus GetSkeletonJoint(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation& jointTransformation) = 0;
00360                 virtual XnStatus GetSkeletonJointPosition(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition& pJointPosition) = 0;
00361                 virtual XnStatus GetSkeletonJointOrientation(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation& pJointOrientation) = 0;
00362                 virtual XnBool IsTracking(XnUserID user) = 0;
00363                 virtual XnBool IsCalibrated(XnUserID user) = 0;
00364                 virtual XnBool IsCalibrating(XnUserID user) = 0;
00365                 virtual XnStatus RequestCalibration(XnUserID user, XnBool bForce) = 0;
00366                 virtual XnStatus AbortCalibration(XnUserID user) = 0;
00367                 virtual XnStatus SaveCalibrationData(XnUserID user, XnUInt32 nSlot) = 0;
00368                 virtual XnStatus LoadCalibrationData(XnUserID user, XnUInt32 nSlot) = 0;
00369                 virtual XnStatus ClearCalibrationData(XnUInt32 nSlot) = 0;
00370                 virtual XnBool IsCalibrationData(XnUInt32 nSlot) = 0;
00371                 virtual XnStatus StartTracking(XnUserID user) = 0;
00372                 virtual XnStatus StopTracking(XnUserID user) = 0;
00373                 virtual XnStatus Reset(XnUserID user) = 0;
00374                 virtual XnBool NeedPoseForCalibration() = 0;
00375                 virtual XnStatus GetCalibrationPose(XnChar* strPose) = 0;
00376                 virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0;
00377                 virtual XnStatus RegisterCalibrationCallbacks(XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00378                 virtual void UnregisterCalibrationCallbacks(XnCallbackHandle hCallback) = 0;
00379         };
00380 
00381         class ModulePoseDetectionInteface
00382         {
00383         public:
00384                 virtual ~ModulePoseDetectionInteface() {}
00385 
00386                 virtual XnUInt32 GetNumberOfPoses() = 0;
00387                 virtual XnStatus GetAvailablePoses(XnChar** pstrPoses, XnUInt32& nPoses) = 0;
00388 
00389                 virtual XnStatus StartPoseDetection(const XnChar* strPose, XnUserID user) = 0;
00390                 virtual XnStatus StopPoseDetection(XnUserID user) = 0;
00391 
00392                 virtual XnStatus RegisterToPoseDetectionCallbacks(XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndPoseCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00393                 virtual void UnregisterFromPoseDetectionCallbacks(XnCallbackHandle hCallback) = 0;
00394 
00395         };
00396 
00397         class ModuleUserGenerator : virtual public ModuleGenerator
00398         {
00399         public:
00400                 virtual ~ModuleUserGenerator() {}
00401                 virtual XnUInt16 GetNumberOfUsers() = 0;
00402                 virtual XnStatus GetUsers(XnUserID* pUsers, XnUInt16& nUsers) = 0;
00403                 virtual XnStatus GetCoM(XnUserID user, XnPoint3D& com) = 0;
00404                 virtual XnStatus GetUserPixels(XnUserID user, XnSceneMetaData *pScene) = 0;
00405                 virtual XnStatus RegisterUserCallbacks(XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle& hCallback) = 0;
00406                 virtual void UnregisterUserCallbacks(XnCallbackHandle hCallback) = 0;
00407                 virtual ModuleSkeletonInterface* GetSkeletonInterface() { return NULL; }
00408                 virtual ModulePoseDetectionInteface* GetPoseDetectionInteface() {return NULL;}
00409 
00410         };
00411 
00412         class ModuleAudioGenerator : virtual public ModuleGenerator
00413         {
00414         public:
00415                 virtual ~ModuleAudioGenerator() {}
00416                 virtual XnUChar* GetAudioBuffer() = 0;
00417                 virtual XnUInt32 GetSupportedWaveOutputModesCount() = 0;
00418                 virtual XnStatus GetSupportedWaveOutputModes(XnWaveOutputMode aSupportedModes[], XnUInt32& nCount) = 0;
00419                 virtual XnStatus SetWaveOutputMode(const XnWaveOutputMode& OutputMode) = 0;
00420                 virtual XnStatus GetWaveOutputMode(XnWaveOutputMode& OutputMode) = 0;
00421                 virtual XnStatus RegisterToWaveOutputModeChanges(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0;
00422                 virtual void UnregisterFromWaveOutputModeChanges(XnCallbackHandle hCallback) = 0;
00423         };
00424 
00425         class ModuleCodec : virtual public ModuleProductionNode
00426         {
00427         public:
00428                 virtual ~ModuleCodec() {}
00429                 virtual XnCodecID GetCodecID() const = 0;
00430                 virtual XnStatus Init(const ProductionNode& node) = 0;
00431                 virtual XnStatus CompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0;
00432                 virtual XnStatus DecompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0;
00433         };
00434 }
00435 
00436 #endif // __XN_MODULE_CPP_INTERFACE_H__


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