forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | //------------------------------------------------------------------------------
 | ||
|  | // 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); | ||
|  | } |