1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
/****************************************************************************
* *
* PrimeSense Sensor 5.x Alpha *
* Copyright (C) 2011 PrimeSense Ltd. *
* *
* This file is part of PrimeSense Sensor. *
* *
* PrimeSense Sensor is free software: you can redistribute it and/or modify*
* it under the terms of the GNU Lesser General Public License as published *
* by the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* PrimeSense Sensor is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public License *
* along with PrimeSense Sensor. If not, see <http://www.gnu.org/licenses/>.*
* *
****************************************************************************/
#ifndef __XN_V_STREAM_OUTPUT_H__
#define __XN_V_STREAM_OUTPUT_H__
//---------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------
#include "XnVEventHandlers.h"
#include "XnVStream.h"
#include <XnList.h>
//---------------------------------------------------------------------------
// Types
//---------------------------------------------------------------------------
class XN_EE_CORE_API XnVStreamData : private XnVModulePropertyChangedHandler
{
public:
XnVStreamData(XnVStream* pStream = NULL, XnBool bIsLive = FALSE, XnBool bWaitForDataUpdate = FALSE);
virtual ~XnVStreamData();
XnStatus Initialize(const XnVStreamData& soOther);
inline XnBool IsValid() const { return m_bValid; }
inline XnVStream* GetStream() { return m_pStream; }
inline const XnVStream* GetStream() const { return m_pStream; }
XnVStreamContainer* GetCreator();
const XnVStreamContainer* GetCreator() const;
inline XnBool IsLive() const { return m_bIsLive; }
inline XnBool IsDataNew() const { return m_bIsNewData; }
inline XnUInt64 GetTimestamp() const { return m_nTimestamp; }
inline XnUInt32 GetFrameID() const { return m_nFrameID; }
inline XnUInt32 GetDataSize() const { return m_nDataSize; }
XnStatus SetTimestamp(XnUInt64 nTimestamp);
XnStatus SetFrameID(XnUInt32 nFrameID);
XnStatus SetDataSize(XnUInt32 nDataSize);
XnStatus SetDataNew(XnBool bIsNew);
inline void* Data() const { return m_pData; }
XnStatus CopyFrom(const void* pData, XnUInt32 nDataSize, XnUInt64 nTimestamp = 0);
XnStatus CopyFrom(const XnVStreamData& sd, XnUInt64 nTimestamp = 0);
protected:
friend class XnVDeviceStream;
XnStatus UnderlyingStreamUpdated();
virtual XnStatus ReadPropertiesFromStream();
XnStatus AddWatchedProperty(const XnChar* strProp);
inline void SetValidity(XnBool bValid) { m_bValid = bValid; }
private:
void OnModulePropertyChanged(const XnChar* strModule, const XnChar* strProperty);
typedef struct XnWatchedProperty
{
const XnChar* strName;
XnCallbackHandle hCallback;
} XnWatchedProperty;
XN_DECLARE_LIST_DECL(XN_EE_CORE_API, XnWatchedProperty, XnWatchedPropertiesList)
XnBool m_bIsLive;
XnBool m_bWaitForDataUpdate;
XnWatchedPropertiesList m_WatchedProperties;
XnBool m_bChangeOccurred;
XN_3_6_PUBLIC_MEMBER XnVStream* m_pStream;
XN_3_6_PUBLIC_MEMBER XnBool m_bValid;
XnBool m_bIsNewData;
XnUInt64 m_nTimestamp;
XnUInt32 m_nFrameID;
void* m_pData;
XnUInt32 m_nDataSize;
};
#endif //__XN_V_STREAM_OUTPUT_H__
|