00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __XN_MODULE_CPP_INTERFACE_H__
00027 #define __XN_MODULE_CPP_INTERFACE_H__
00028
00035
00036
00037
00038 #include "XnModuleInterface.h"
00039 #include "XnList.h"
00040 #include "XnCppWrapper.h"
00041
00042
00043
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__