1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //------------------------------------------------------------------------------
- // File: SysClock.cpp
- //
- // Desc: DirectShow base classes - implements a system clock based on
- // IReferenceClock.
- //
- // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- #include <streams.h>
- #include <limits.h>
- #ifdef FILTER_DLL
- /* List of class IDs and creator functions for the class factory. This
- provides the link between the OLE entry point in the DLL and an object
- being created. The class factory will call the static CreateInstance
- function when it is asked to create a CLSID_SystemClock object */
- CFactoryTemplate g_Templates[1] = {
- {&CLSID_SystemClock, CSystemClock::CreateInstance}
- };
- int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
- #endif
- /* This goes in the factory template table to create new instances */
- CUnknown * WINAPI CSystemClock::CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr)
- {
- return new CSystemClock(NAME("System reference clock"),pUnk, phr);
- }
- CSystemClock::CSystemClock(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr) :
- CBaseReferenceClock(pName, pUnk, phr)
- {
- }
- STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(
- REFIID riid,
- __deref_out void ** ppv)
- {
- if (riid == IID_IPersist)
- {
- return GetInterface(static_cast<IPersist *>(this), ppv);
- }
- else if (riid == IID_IAMClockAdjust)
- {
- return GetInterface(static_cast<IAMClockAdjust *>(this), ppv);
- }
- else
- {
- return CBaseReferenceClock::NonDelegatingQueryInterface(riid, ppv);
- }
- }
- /* Return the clock's clsid */
- STDMETHODIMP
- CSystemClock::GetClassID(__out CLSID *pClsID)
- {
- CheckPointer(pClsID,E_POINTER);
- ValidateReadWritePtr(pClsID,sizeof(CLSID));
- *pClsID = CLSID_SystemClock;
- return NOERROR;
- }
- STDMETHODIMP
- CSystemClock::SetClockDelta(REFERENCE_TIME rtDelta)
- {
- return SetTimeDelta(rtDelta);
- }
|