OpenNI 1.0.0
|
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 GetAllActiveGestures(XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16& nGestures) = 0; 00319 virtual XnStatus EnumerateGestures(XnChar** pstrGestures, XnUInt16& nGestures) = 0; 00320 virtual XnStatus EnumerateAllGestures(XnChar** pstrGestures, XnUInt32 nNameLength, XnUInt16& nGestures) = 0; 00321 virtual XnBool IsGestureAvailable(const XnChar* strGesture) = 0; 00322 virtual XnBool IsGestureProgressSupported(const XnChar* strGesture) = 0; 00323 virtual XnStatus RegisterGestureCallbacks(XnModuleGestureRecognized RecognizedCB, XnModuleGestureProgress ProgressCB, void* pCookie, XnCallbackHandle& hCallback) = 0; 00324 virtual void UnregisterGestureCallbacks(XnCallbackHandle hCallback) = 0; 00325 virtual XnStatus RegisterToGestureChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0; 00326 virtual void UnregisterFromGestureChange(XnCallbackHandle hCallback) = 0; 00327 }; 00328 00329 class ModuleSceneAnalyzer : virtual public ModuleMapGenerator 00330 { 00331 public: 00332 virtual ~ModuleSceneAnalyzer() {} 00333 virtual const XnLabel* GetLabelMap() = 0; 00334 virtual XnStatus GetFloor(XnPlane3D& pPlane) = 0; 00335 }; 00336 00337 class ModuleHandsGenerator : virtual public ModuleGenerator 00338 { 00339 public: 00340 virtual ~ModuleHandsGenerator() {} 00341 virtual XnStatus RegisterHandCallbacks(XnModuleHandCreate CreateCB, XnModuleHandUpdate UpdateCB, XnModuleHandDestroy DestroyCB, void* pCookie, XnCallbackHandle& hCallback) = 0; 00342 virtual void UnregisterHandCallbacks(XnCallbackHandle hCallback) = 0; 00343 virtual XnStatus StopTracking(XnUserID user) = 0; 00344 virtual XnStatus StopTrackingAll() = 0; 00345 virtual XnStatus StartTracking(const XnPoint3D& ptPosition) = 0; 00346 virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0; 00347 }; 00348 00349 class ModuleSkeletonInterface 00350 { 00351 public: 00352 virtual ~ModuleSkeletonInterface() {} 00353 virtual XnBool IsJointAvailable(XnSkeletonJoint eJoint) = 0; 00354 virtual XnBool IsProfileAvailable(XnSkeletonProfile eProfile) = 0; 00355 virtual XnStatus SetSkeletonProfile(XnSkeletonProfile eProfile) = 0; 00356 virtual XnStatus SetJointActive(XnSkeletonJoint eJoint, XnBool bState) = 0; 00357 virtual XnBool IsJointActive(XnSkeletonJoint eJoint) = 0; 00358 virtual XnStatus RegisterToJointConfigurationChange(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0; 00359 virtual void UnregisterFromJointConfigurationChange(XnCallbackHandle hCallback) = 0; 00360 virtual XnStatus EnumerateActiveJoints(XnSkeletonJoint* pJoints, XnUInt16& nJoints) = 0; 00361 virtual XnStatus GetSkeletonJoint(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointTransformation& jointTransformation) = 0; 00362 virtual XnStatus GetSkeletonJointPosition(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointPosition& pJointPosition) = 0; 00363 virtual XnStatus GetSkeletonJointOrientation(XnUserID user, XnSkeletonJoint eJoint, XnSkeletonJointOrientation& pJointOrientation) = 0; 00364 virtual XnBool IsTracking(XnUserID user) = 0; 00365 virtual XnBool IsCalibrated(XnUserID user) = 0; 00366 virtual XnBool IsCalibrating(XnUserID user) = 0; 00367 virtual XnStatus RequestCalibration(XnUserID user, XnBool bForce) = 0; 00368 virtual XnStatus AbortCalibration(XnUserID user) = 0; 00369 virtual XnStatus SaveCalibrationData(XnUserID user, XnUInt32 nSlot) = 0; 00370 virtual XnStatus LoadCalibrationData(XnUserID user, XnUInt32 nSlot) = 0; 00371 virtual XnStatus ClearCalibrationData(XnUInt32 nSlot) = 0; 00372 virtual XnBool IsCalibrationData(XnUInt32 nSlot) = 0; 00373 virtual XnStatus StartTracking(XnUserID user) = 0; 00374 virtual XnStatus StopTracking(XnUserID user) = 0; 00375 virtual XnStatus Reset(XnUserID user) = 0; 00376 virtual XnBool NeedPoseForCalibration() = 0; 00377 virtual XnStatus GetCalibrationPose(XnChar* strPose) = 0; 00378 virtual XnStatus SetSmoothing(XnFloat fSmoothingFactor) = 0; 00379 virtual XnStatus RegisterCalibrationCallbacks(XnModuleCalibrationStart CalibrationStartCB, XnModuleCalibrationEnd CalibrationEndCB, void* pCookie, XnCallbackHandle& hCallback) = 0; 00380 virtual void UnregisterCalibrationCallbacks(XnCallbackHandle hCallback) = 0; 00381 }; 00382 00383 class ModulePoseDetectionInteface 00384 { 00385 public: 00386 virtual ~ModulePoseDetectionInteface() {} 00387 00388 virtual XnUInt32 GetNumberOfPoses() = 0; 00389 virtual XnStatus GetAvailablePoses(XnChar** pstrPoses, XnUInt32& nPoses) = 0; 00390 virtual XnStatus GetAllAvailablePoses(XnChar** pstrPoses, XnUInt32 nNameLength, XnUInt32& nPoses) = 0; 00391 00392 virtual XnStatus StartPoseDetection(const XnChar* strPose, XnUserID user) = 0; 00393 virtual XnStatus StopPoseDetection(XnUserID user) = 0; 00394 00395 virtual XnStatus RegisterToPoseDetectionCallbacks(XnModulePoseDetectionCallback StartPoseCB, XnModulePoseDetectionCallback EndPoseCB, void* pCookie, XnCallbackHandle& hCallback) = 0; 00396 virtual void UnregisterFromPoseDetectionCallbacks(XnCallbackHandle hCallback) = 0; 00397 00398 }; 00399 00400 class ModuleUserGenerator : virtual public ModuleGenerator 00401 { 00402 public: 00403 virtual ~ModuleUserGenerator() {} 00404 virtual XnUInt16 GetNumberOfUsers() = 0; 00405 virtual XnStatus GetUsers(XnUserID* pUsers, XnUInt16& nUsers) = 0; 00406 virtual XnStatus GetCoM(XnUserID user, XnPoint3D& com) = 0; 00407 virtual XnStatus GetUserPixels(XnUserID user, XnSceneMetaData *pScene) = 0; 00408 virtual XnStatus RegisterUserCallbacks(XnModuleUserHandler NewUserCB, XnModuleUserHandler LostUserCB, void* pCookie, XnCallbackHandle& hCallback) = 0; 00409 virtual void UnregisterUserCallbacks(XnCallbackHandle hCallback) = 0; 00410 virtual ModuleSkeletonInterface* GetSkeletonInterface() { return NULL; } 00411 virtual ModulePoseDetectionInteface* GetPoseDetectionInteface() {return NULL;} 00412 00413 }; 00414 00415 class ModuleAudioGenerator : virtual public ModuleGenerator 00416 { 00417 public: 00418 virtual ~ModuleAudioGenerator() {} 00419 virtual XnUChar* GetAudioBuffer() = 0; 00420 virtual XnUInt32 GetSupportedWaveOutputModesCount() = 0; 00421 virtual XnStatus GetSupportedWaveOutputModes(XnWaveOutputMode aSupportedModes[], XnUInt32& nCount) = 0; 00422 virtual XnStatus SetWaveOutputMode(const XnWaveOutputMode& OutputMode) = 0; 00423 virtual XnStatus GetWaveOutputMode(XnWaveOutputMode& OutputMode) = 0; 00424 virtual XnStatus RegisterToWaveOutputModeChanges(XnModuleStateChangedHandler handler, void* pCookie, XnCallbackHandle& hCallback) = 0; 00425 virtual void UnregisterFromWaveOutputModeChanges(XnCallbackHandle hCallback) = 0; 00426 }; 00427 00428 class ModuleCodec : virtual public ModuleProductionNode 00429 { 00430 public: 00431 virtual ~ModuleCodec() {} 00432 virtual XnCodecID GetCodecID() const = 0; 00433 virtual XnStatus Init(const ProductionNode& node) = 0; 00434 virtual XnStatus CompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0; 00435 virtual XnStatus DecompressData(const void* pSrc, XnUInt32 nSrcSize, void* pDst, XnUInt32 nDstSize, XnUInt* pnBytesWritten) const = 0; 00436 }; 00437 } 00438 00439 #endif // __XN_MODULE_CPP_INTERFACE_H__