File: XnLinkContInputStream.h

package info (click to toggle)
openni2 2.2.0.33%2Bdfsg-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 22,216 kB
  • sloc: cpp: 111,197; ansic: 35,511; sh: 10,542; python: 1,313; java: 952; makefile: 575; xml: 12
file content (79 lines) | stat: -rw-r--r-- 2,356 bytes parent folder | download | duplicates (4)
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
#ifndef __XNLINKCONTINPUTSTREAM_H__
#define __XNLINKCONTINPUTSTREAM_H__

#include "XnLinkMsgParser.h"
#include "XnLinkInputStream.h"
#include <XnStatus.h>
#include <XnEvent.h>
#include <XnDump.h>

#include "XnLinkLogParser.h"

typedef XnUInt32 XnStreamFormat;

namespace xn
{

class LinkContInputStream : public LinkInputStream
{
public:
	LinkContInputStream();
	virtual ~LinkContInputStream();
    virtual XnStatus Init(LinkControlEndpoint* pLinkControlEndpoint,
                          XnStreamType streamType,
                          XnUInt16 nStreamID, 
                          IConnection* pConnection);
    //LinkInputStream methods
    virtual XnBool IsInitialized() const;
	virtual void Shutdown();
	virtual XnStatus HandlePacket(const LinkPacketHeader& header, const XnUInt8* pData, XnBool& bPacketLoss);
	virtual const void* GetData() const;
	virtual XnUInt32 GetDataSize() const;
	virtual XnUInt64 GetTimestamp() const { return 0; }
	virtual const void* GetNextData() const;
	virtual XnUInt32 GetNextDataSize() const;
	virtual XnUInt64 GetNextTimestamp() const { return 0; }
	virtual XnBool IsNewDataAvailable() const;
	virtual XnStatus UpdateData();

    virtual XnBool IsStreaming() const;

	virtual XnStreamFragLevel GetStreamFragLevel() const { return XN_LINK_STREAM_FRAG_LEVEL_CONTINUOUS; }

	typedef void (XN_CALLBACK_TYPE* NewDataAvailableHandler)(void* pCookie);
	virtual XnStatus RegisterToNewDataAvailable(NewDataAvailableHandler pHandler, void* pCookie, XnCallbackHandle& hCallback);
	virtual void UnregisterFromNewDataAvailable(XnCallbackHandle hCallback);

    //Other methods
    virtual void SetDumpName(const XnChar* strDumpName);
    virtual void SetDumpOn(XnBool bDumpOn);

protected:
	virtual XnStatus StartImpl();
	virtual XnStatus StopImpl();

private:
	LinkLogParser m_logParser;

	static const XnUInt32 CONT_STREAM_PREDEFINED_BUFFER_SIZE;
	mutable XN_CRITICAL_SECTION_HANDLE m_hCriticalSection; //Protects buffers info
	XnBool m_bNewDataAvailable;
    XnBool m_bInitialized;
	XnBool m_bStreaming;
	
	XnUInt32 m_nUserBufferMaxSize;
	XnUInt32 m_nUserBufferCurrentSize;
	XnUInt8* m_pUserBuffer;

	XnUInt32 m_nWorkingBufferCurrentSize;
	XnUInt8* m_pWorkingBuffer;

	XnChar m_strDumpName[XN_FILE_MAX_PATH];
	XnDumpFile* m_pDumpFile;

	xnl::EventNoArgs m_newDataAvailableEvent;
};

}

#endif // __XNLINKCONTINPUTSTREAM_H__