다음을 통해 공유


CBaseReferenceClock 클래스

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

cbasereferenceclock 클래스 계층 구조

클래스는 CBaseReferenceClock 참조 클록을 구현합니다.

보호된 멤버 변수 Description
m_pSchedule 클록에 대한 예약 작업을 처리하는 CAMSchedule 개체입니다.
Protected 메서드 Description
~CBaseReferenceClock 소멸자 메서드입니다.
Public 메서드 Description
CBaseReferenceClock 생성자 메서드입니다.
GetPrivateTime 시계에서 실시간으로 검색합니다.
SetTimeDelta 내부 클록 시간을 조정합니다.
GetSchedule 클록의 일정 개체에 대한 포인터를 검색합니다.
TriggerThread 예약을 처리하는 작업자 스레드를 절전 모드에서 해제합니다.
IReferenceClock 메서드 Description
GetTime 현재 참조 시간을 검색합니다.
AdviseTime 원샷 조언 요청을 만듭니다.
AdvisePeriodic 주기적인 조언 요청을 만듭니다.
Unadvise 보류 중인 조언 요청을 제거합니다.
IReferenceClockTimerControl 메서드 Description
GetDefaultTimerResolution 참조 클록 타이머의 현재 해상도를 반환합니다.
SetDefaultTimerResolution 참조 클록 타이머의 해상도를 설정합니다.
도우미 함수 Description
ConvertToMilliseconds 참조 시간을 밀리초로 변환합니다.

설명

이 클래스는 IReferenceClock 및 IReferenceClockTimerControl 인터페이스를 지원하는 참조 클 을 구현합니다. 예를 들어 필터가 필터 그래프에 대한 참조 클록을 제공할 수 있는 경우 하드웨어 디바이스에 액세스하면 이 클래스를 사용하여 클록을 구현할 수 있습니다.

개체는 CBaseReferenceClock 두 가지 고유한 시간 값을 유지 관리합니다.

내부 클록이 짧은 기간 동안 뒤로 실행되는 것이 유효합니다. 예를 들어 클록이 앞으로 드리프트되면 필터가 뒤로 조정할 수 있습니다. ( CBaseReferenceClock::SetTimeDelta를 참조하세요.) GetTime 메서드는 GetPrivateTime에서 보고한 시간 값을 사용합니다. 그러나 참조 시간은 단조롭게 증가합니다. 즉, 뒤로 실행되지 않습니다. 따라서 내부 클록이 뒤로 실행되면 GetTime은 내부 클록이 따라잡을 때까지 이전 시간을 계속 보고합니다.

예를 들어 두 메서드는 다음 시퀀스를 반환할 수 있습니다.

GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime:        105, 106, 106, 106, 106, 106, 107, 108

세 번째 클록 틱에서 내부 클록은 103으로 뒤로 이동합니다. GetTime 메서드는 내부 클록이 따라잡을 때까지 106을 계속 보고합니다.

기본적으로 GetPrivateTime은timeGetTime 함수 호출을 통해 시스템 시간을 반환합니다. 외부 디바이스에서 참조 클록을 제공하는 필터는 다음 중 하나를 수행할 수 있습니다.

  • GetPrivateTime을 재정의하여 디바이스에서 시간을 반환합니다.
  • 디바이스 시간과 시스템 시간 간의 불일치를 모니터링하고 SetTimeDelta 를 호출하여 수정합니다.

이 클래스는 CAMSchedule 개체를 사용하여 조언 요청 예약을 처리합니다. 자세한 내용은 CAMSchedule 클래스에 대한 설명서를 참조하세요.

요구 사항

요구 사항
헤더
Refclock.h(Streams.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)