ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/mspcall.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 3320 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef __MSPCALL_H_
7 #define __MSPCALL_H_
8
9 class ATL_NO_VTABLE CMSPCallBase : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITStreamControl,&IID_ITStreamControl,&LIBID_TAPI3Lib> {
10 public:
11 DECLARE_POLY_AGGREGATABLE(CMSPCallBase)
12 BEGIN_COM_MAP(CMSPCallBase)
13 COM_INTERFACE_ENTRY(IDispatch)
14 COM_INTERFACE_ENTRY(ITStreamControl)
15 END_COM_MAP()
16 DECLARE_GET_CONTROLLING_UNKNOWN()
17 DECLARE_VQI()
18 CMSPCallBase();
19 virtual ~CMSPCallBase();
20 virtual ULONG MSPCallAddRef (void) = 0;
21 virtual ULONG MSPCallRelease (void) = 0;
22 STDMETHOD (CreateStream) (__LONG32 lMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream);
23 STDMETHOD (EnumerateStreams) (IEnumStream **ppEnumStream);
24 STDMETHOD (RemoveStream) (ITStream *pStream) = 0;
25 STDMETHOD (get_Streams) (VARIANT *pStreams);
26 virtual HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType) = 0;
27 virtual HRESULT ShutDown() = 0;
28 virtual HRESULT ReceiveTSPCallData(PBYTE pBuffer,DWORD dwSize);
29 HRESULT HandleStreamEvent(MSPEVENTITEM *EventItem) const;
30 protected:
31 virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream) = 0;
32 virtual HRESULT CreateStreamObject(DWORD dwMediaType,TERMINAL_DIRECTION Direction,IMediaEvent *pGraph,ITStream **ppStream) = 0;
33 protected:
34 CMSPAddress *m_pMSPAddress;
35 MSP_HANDLE m_htCall;
36 DWORD m_dwMediaType;
37 CMSPArray <ITStream *> m_Streams;
38 CMSPCritSection m_lock;
39 };
40
41 class ATL_NO_VTABLE CMSPCallMultiGraph : public CMSPCallBase {
42 public:
43 typedef struct {
44 CMSPCallMultiGraph *pMSPCall;
45 ITStream *pITStream;
46 IMediaEvent *pIMediaEvent;
47 } MSPSTREAMCONTEXT,*PMSPSTREAMCONTEXT;
48 typedef struct _THREADPOOLWAITBLOCK {
49 HANDLE hWaitHandle;
50 MSPSTREAMCONTEXT *pContext;
51 WINBOOL operator ==(struct _THREADPOOLWAITBLOCK &t) { return ((hWaitHandle==t.hWaitHandle) && (pContext==t.pContext)); }
52 } THREADPOOLWAITBLOCK,*PTHREADPOOLWAITBLOCK;
53 public:
54 CMSPCallMultiGraph();
55 virtual ~CMSPCallMultiGraph();
56 STDMETHOD (RemoveStream) (ITStream *ppStream);
57 HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType);
58 HRESULT ShutDown();
59 static VOID NTAPI DispatchGraphEvent(VOID *pContext,BOOLEAN bFlag);
60 virtual VOID HandleGraphEvent(MSPSTREAMCONTEXT *pContext);
61 virtual HRESULT ProcessGraphEvent(ITStream *pITStream,__LONG32 lEventCode,LONG_PTR lParam1,LONG_PTR lParam2);
62 protected:
63 HRESULT RegisterWaitEvent(IMediaEvent *pIMediaEvent,ITStream *pITStream);
64 HRESULT UnregisterWaitEvent(int index);
65 virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream);
66 protected:
67 CMSPArray <THREADPOOLWAITBLOCK> m_ThreadPoolWaitBlocks;
68 };
69
70 struct MULTI_GRAPH_EVENT_DATA {
71 CMSPCallMultiGraph *pCall;
72 ITStream *pITStream;
73 __LONG32 lEventCode;
74 LONG_PTR lParam1;
75 LONG_PTR lParam2;
76 IMediaEvent *pIMediaEvent;
77 MULTI_GRAPH_EVENT_DATA() : pIMediaEvent(NULL),pITStream(NULL),lEventCode(0),lParam1(0),lParam2(0) { }
78 };
79
80 DWORD WINAPI AsyncMultiGraphEvent(LPVOID pVoid);
81 #endif