다음을 통해 공유


IMediaFilter::SetSyncSource 메서드(strmif.h)

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

메서드는 SetSyncSource 참조 클록을 설정합니다.

구문

HRESULT SetSyncSource(
  [in] IReferenceClock *pClock
);

매개 변수

[in] pClock

클록의 IReferenceClock 인터페이스 또는 NULL에 대한 포인터입니다. 이 매개 변수가 NULL인 경우 필터 그래프는 참조 클록을 사용하지 않으며 모든 필터가 가능한 한 빨리 실행됩니다.

반환 값

성공하면 S_OK 반환하거나 오류의 원인을 나타내는 HRESULT 값을 반환합니다.

설명

필터 그래프의 모든 필터는 동기화 상태를 유지하기 위해 동일한 참조 클록을 공유합니다. 스트림 시간은 참조 클록에서 계산됩니다. 렌더러 필터는 참조 클록을 사용하여 샘플을 렌더링할 때 예약합니다. 참조 클록이 없으면 렌더러 필터는 도착하는 즉시 모든 샘플을 렌더링합니다.

이 메서드는 모든 DirectShow 필터와 Filter Graph Manager에서 구현됩니다.

필터 구현

그래프가 실행되면 Filter Graph 관리자는 그래프의 모든 필터에서 이 메서드를 호출하여 그래프 참조 클록을 알립니다. 이 메서드를 사용하여 IReferenceClock 포인터를 저장합니다. 저장된 포인터에 대한 참조 횟수를 증분합니다. 필터가 그래프에서 제거되기 전에 Filter Graph Manager는 값 NULL을 사용하여 SetSyncSource를 다시 호출합니다. 저장된 포인터를 해제하고 NULL로 설정합니다.

CBaseFilter 클래스는 이 메서드를 구현합니다. CBaseFilter::SetSyncSource를 참조하세요.

필터는 이 메서드를 사용하여 그래프 클록을 선택할 수 없습니다. 필터에서 이 메서드의 유일한 함수는 그래프가 사용 중인 클록의 필터를 알리는 것입니다. 필터는 IReferenceClock 인터페이스를 노출하여 참조 클록을 제공할 수 있습니다. 자세한 내용은 DirectShow의 시간 및 시계를 참조하세요.

애플리케이션 사용

애플리케이션은 필터 그래프 관리자에서 SetSyncSource 를 호출하여 기본 클록을 재정의할 수 있습니다. 다른 시계를 선호하는 특별한 이유가 없으면 이 작업을 수행하지 마세요. 값이 NULLSetSyncSource를 호출하여 참조 클록을 사용하지 않도록 그래프를 설정할 수도 있습니다. 샘플을 최대한 빨리 처리하려면 이 작업을 수행할 수 있습니다. 자세한 내용은 그래프 시계 설정을 참조하세요.

애플리케이션은 필터에서 이 메서드를 호출해서는 안 됩니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 strmif.h(Dshow.h 포함)
라이브러리 Strmiids.lib

추가 정보

오류 및 성공 코드

IFilterGraph::SetDefaultSyncSource

IMediaFilter 인터페이스