76 lines
2.0 KiB
C++
76 lines
2.0 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>
|
|
|
|
/*NABIL: I changed this*/
|
|
//#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 */
|
|
|
|
/*NABIL: This was screwed up....(It didn't have the "blah")*/
|
|
CFactoryTemplate g_Templates[1] = {
|
|
{ (const WCHAR *) "blah", &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(LPUNKNOWN pUnk,HRESULT *phr)
|
|
{
|
|
return new CSystemClock(NAME("System reference clock"),pUnk, phr);
|
|
}
|
|
|
|
|
|
CSystemClock::CSystemClock(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *phr) :
|
|
CBaseReferenceClock(pName, pUnk, phr)
|
|
{
|
|
}
|
|
|
|
STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(
|
|
REFIID riid,
|
|
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(CLSID *pClsID)
|
|
{
|
|
CheckPointer(pClsID,E_POINTER);
|
|
ValidateReadWritePtr(pClsID,sizeof(CLSID));
|
|
*pClsID = CLSID_SystemClock;
|
|
return NOERROR;
|
|
}
|
|
|
|
|
|
STDMETHODIMP
|
|
CSystemClock::SetClockDelta(REFERENCE_TIME rtDelta)
|
|
{
|
|
return SetTimeDelta(rtDelta);
|
|
}
|