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.

37 lines
990 B

  1. // Copyright (c) 1996-1999 Microsoft Corporation
  2. /* PLClock.h
  3. */
  4. #ifndef __PLCLOCK_H__
  5. #define __PLCLOCK_H__
  6. class CPhaseLockClock
  7. {
  8. public:
  9. CPhaseLockClock();
  10. void Start(REFERENCE_TIME rfMasterTime, REFERENCE_TIME rfSlaveTime);
  11. void GetSlaveTime(REFERENCE_TIME rfSlaveTime,REFERENCE_TIME *prfTime);
  12. void SetSlaveTime(REFERENCE_TIME rfSlaveTime,REFERENCE_TIME *prfTime);
  13. void SyncToMaster(REFERENCE_TIME rfSlaveTime, REFERENCE_TIME rfMasterTime);
  14. private:
  15. REFERENCE_TIME m_rfOffset;
  16. };
  17. class CSampleClock
  18. {
  19. public:
  20. CSampleClock();
  21. void Start(IReferenceClock *pIClock, DWORD dwSampleRate, DWORD dwSamples);
  22. void SampleToRefTime(LONGLONG llSampleTime,REFERENCE_TIME *prfTime);
  23. void SyncToMaster(LONGLONG llSampleTime, IReferenceClock *pIClock);
  24. LONGLONG RefTimeToSample(REFERENCE_TIME rfTime);
  25. private:
  26. CPhaseLockClock m_PLClock;
  27. DWORD m_dwStart; // Initial sample offset.
  28. DWORD m_dwSampleRate;
  29. };
  30. #endif // __PLCLOCK_H__