DirectShow DirectShow 에 대해 DirectShow 의 타임과 클럭 기준 클럭   [목차열람] [주소복사] [슬롯비우기]
기준 클럭
 
Microsoft DirectX 9.0

기준 클럭

필터 그래프 매니저의 기능의 1 개로서 그래프내의 모든 필터의 동기가 있어, 이것을 "기준 클럭" 이라고 부른다.

IReferenceClock 인터페이스를 공개하는 모든 개체는 기준 클럭으로서 기능한다. 기준 클럭은, DirectShow 필터 (보통은 하드웨어 타이머에 액세스 할 수 있는 오디오 렌더러)가 제공할 수도 있다. 예비로서 필터 그래프 매니저는 시스템 타임을 사용할 수 있다.

기준 클럭은, 명목상 100 나노 초간격으로 시간을 측정하게 되어 있지만, 실제의 클럭의 정밀도는 이것보다 낮은 경우가 있다. 클럭의 현재의 타임을 얻어오려면,IReferenceClock::GetTime 메서드를 호출한다. 클럭의 기준, 즉 카운트를 시작 하는 타임은, 처리에 의존하므로,GetTime 로부터 돌려받는 값은 본질적으로 의미가 있는 것은 아니다. 중요한 것은, 그래프의 실행이 시작 되고 나서의 델타값이다.

기준 클럭의 정밀도는 다양하지만,GetTime 메서드가 돌려주는 타임은 단조롭게 증가하는 것이 보증되고 있다. 즉, 클럭 타임이 퇴보할 것은 없다. 기준 클럭이 하드웨어 소스로부터 클럭 타임을 생성하고 있어, 하드웨어 클럭이 퇴보했을 경우 (예를 들어, 클럭의 조정 등),GetTime 메서드는 하드웨어 클럭이 따라잡을 때까지, 마지막에 리포트된 타임을 계속 돌려주어야 하는 것 이다. 더 자세한 정보는, 「CBaseReferenceClock Class 」를 참조할것.

디폴트의 기준 클럭

필터 그래프 매니저는, 그래프를 실행하고 있을 때, 자동적으로 기준 클럭을 선택한다. 클럭을 선택하기 위해서, 다음과 같은 알고리즘을 사용한다.

기준 클럭의 설정

애플리케이션은, 필터 그래프 매니저로 IMediaFilter::SetSyncSource 메서드를 호출해, 클럭을 선택할 수 있다. 이 조작은, 다른 클럭을 사용하는 명확한 이유가 있는 경우에만 실시해야 하는 것이다.

NULL 값을 지정해 SetSyncSource 를 호출하는 것에 의해, 필터 그래프 매니저가 기준 클럭을 사용하지 않게 지시할 수 있다. 예를 들어, 샘플을 할 수 있는 한 고속으로 처리해야 하는 것 같은 경우이다. 디폴트의 기준 클럭을 복원하려면 , 필터 그래프 매니저로 IFilterGraph::SetDefaultSyncSource 메서드를 호출한다.

기준 클럭이 변경될 때마다, 필터 그래프 매니저는 IMediaFilter::SetSyncSource 메서드를 호출해 각 필터에 통지한다. 애플리케이션은 필터로 이 메서드를 호출해서는 안 된다.

참조

↑TOP