Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// Copyright (c) 1996-2000 Microsoft Corporation. All rights reserved.
/* PLClock.h
*/
#ifndef __PLCLOCK_H__
#define __PLCLOCK_H__
#define IReferenceClock IMasterClock
/*****************************************************************************
* class CPhaseLockClock ***************************************************************************** * This implements a clock that phase locks two reference clocks. */ class CPhaseLockClock { public: CPhaseLockClock(); void Start(REFERENCE_TIME rfMasterTime, REFERENCE_TIME rfSlaveTime); void GetSlaveTime(REFERENCE_TIME rfSlaveTime,REFERENCE_TIME *prfTime); void SetSlaveTime(REFERENCE_TIME rfSlaveTime,REFERENCE_TIME *prfTime); void SyncToMaster(REFERENCE_TIME rfSlaveTime, REFERENCE_TIME rfMasterTime);
private: REFERENCE_TIME m_rfOffset; };
/*****************************************************************************
* class CSampleClock ***************************************************************************** * This implements a clock that translates between a sample time and a * reference time, doing any phase locking in a child CPhaseLockClock object. */ class CSampleClock { public: CSampleClock(); void Start(IReferenceClock *pIClock, DWORD dwSampleRate, LONGLONG llSampleTime); void SampleToRefTime(LONGLONG llSampleTime,REFERENCE_TIME *prfTime); void SyncToMaster(LONGLONG llSampleTime, IReferenceClock *pIClock); void SyncToMaster(REFERENCE_TIME rfSlaveTime, REFERENCE_TIME rfMasterTime); LONGLONG RefTimeToSample(REFERENCE_TIME rfTime);
private: CPhaseLockClock m_PLClock; LONGLONG m_llStart; // Initial sample offset.
REFERENCE_TIME m_rfStart; DWORD m_dwSampleRate; };
#endif // __PLCLOCK_H__
|