2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/clockforward.cpp
5 * PURPOSE: IKsClockForwarder interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
12 const GUID KSCATEGORY_QUALITY
= {0x97EBAACB, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
15 #define IID_IKsQualityForwarder KSCATEGORY_QUALITY
17 class CKsQualityForwarder
: public IKsQualityForwarder
20 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
22 STDMETHODIMP_(ULONG
) AddRef()
24 InterlockedIncrement(&m_Ref
);
27 STDMETHODIMP_(ULONG
) Release()
29 InterlockedDecrement(&m_Ref
);
39 // IKsObject interface
40 HANDLE STDMETHODCALLTYPE
KsGetObjectHandle();
42 // IKsQualityForwarder
43 VOID STDMETHODCALLTYPE
KsFlushClient(IN IKsPin
*Pin
);
45 CKsQualityForwarder(HANDLE handle
) : m_Ref(0), m_Handle(handle
){}
46 virtual ~CKsQualityForwarder(){ if (m_Handle
) CloseHandle(m_Handle
);}
57 CKsQualityForwarder::QueryInterface(
61 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
62 IsEqualGUID(refiid
, IID_IKsQualityForwarder
))
64 *Output
= PVOID(this);
65 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
72 //-------------------------------------------------------------------
73 // IKsObject interface
78 CKsQualityForwarder::KsGetObjectHandle()
83 //-------------------------------------------------------------------
84 // IKsQualityForwarder interface
88 CKsQualityForwarder::KsFlushClient(
91 OutputDebugString("UNIMPLEMENTED\n");
96 CKsQualityForwarder_Constructor(
104 OutputDebugStringW(L
"CKsQualityForwarder_Constructor\n");
106 // open default clock
107 hr
= KsOpenDefaultDevice(KSCATEGORY_QUALITY
, GENERIC_READ
| GENERIC_WRITE
, &handle
);
111 OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
115 CKsQualityForwarder
* quality
= new CKsQualityForwarder(handle
);
121 return E_OUTOFMEMORY
;
124 if (FAILED(quality
->QueryInterface(riid
, ppv
)))
128 return E_NOINTERFACE
;