2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/interface.cpp
5 * PURPOSE: IKsInterfaceHandler interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
11 const GUID IID_IKsInterfaceHandler
= {0xD3ABC7E0, 0x9A61, 0x11D0, {0xA4, 0x0D, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
12 const GUID IID_IKsObject
= {0x423c13a2, 0x2070, 0x11d0, {0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
14 class CKsInterfaceHandler
: public IKsInterfaceHandler
17 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
19 STDMETHODIMP_(ULONG
) AddRef()
21 InterlockedIncrement(&m_Ref
);
24 STDMETHODIMP_(ULONG
) Release()
26 InterlockedDecrement(&m_Ref
);
35 HRESULT STDMETHODCALLTYPE
KsSetPin(IKsPin
*KsPin
);
36 HRESULT STDMETHODCALLTYPE
KsProcessMediaSamples(IKsDataTypeHandler
*KsDataTypeHandler
, IMediaSample
** SampleList
, PLONG SampleCount
, KSIOOPERATION IoOperation
, PKSSTREAM_SEGMENT
*StreamSegment
);
37 HRESULT STDMETHODCALLTYPE
KsCompleteIo(PKSSTREAM_SEGMENT StreamSegment
);
39 CKsInterfaceHandler() : m_Ref(0), m_Handle(NULL
){};
40 virtual ~CKsInterfaceHandler(){};
49 CKsInterfaceHandler::QueryInterface(
53 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
54 IsEqualGUID(refiid
, IID_IKsInterfaceHandler
))
56 *Output
= PVOID(this);
57 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
65 CKsInterfaceHandler::KsSetPin(
71 // check if IKsObject is supported
72 hr
= KsPin
->QueryInterface(IID_IKsObject
, (void**)&KsObject
);
77 m_Handle
= KsObject
->KsGetObjectHandle();
79 // release IKsObject interface
84 // expected a file handle
95 CKsInterfaceHandler::KsProcessMediaSamples(
96 IKsDataTypeHandler
*KsDataTypeHandler
,
97 IMediaSample
** SampleList
,
99 KSIOOPERATION IoOperation
,
100 PKSSTREAM_SEGMENT
*StreamSegment
)
102 OutputDebugString("UNIMPLEMENTED\n");
108 CKsInterfaceHandler::KsCompleteIo(
109 PKSSTREAM_SEGMENT StreamSegment
)
111 OutputDebugString("UNIMPLEMENTED\n");
117 CKsInterfaceHandler_Constructor(
118 IUnknown
* pUnkOuter
,
122 CKsInterfaceHandler
* handler
= new CKsInterfaceHandler();
125 return E_OUTOFMEMORY
;
127 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
131 return E_NOINTERFACE
;