필터 그래프 관리자 정보

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

Filter Graph Manager는 필터 그래프의 필터를 제어하는 COM 개체입니다. 다음을 포함하여 많은 함수를 수행합니다.

  • 필터 간의 상태 변경 조정.
  • 참조 클록을 설정합니다.
  • 애플리케이션에 이벤트를 다시 전달합니다.
  • 애플리케이션이 필터 그래프를 빌드하는 메서드를 제공합니다.

이러한 각 함수는 여기에서 간략하게 설명합니다. 자세한 내용은 설명서의 다른 위치에서 찾을 수 있습니다.

상태가 변경되었습니다. 필터 내의 상태 변경은 특정 순서로 발생해야 합니다. 따라서 애플리케이션은 필터에 직접 상태 변경 명령을 실행하지 않습니다. 대신 Filter Graph Manager에 단일 명령을 제공하여 각 필터에 명령을 배포합니다. 검색은 비슷한 방식으로 작동합니다. 애플리케이션은 필터 그래프 관리자에 seek 명령을 제공하여 필터에 배포합니다.

참조 클록입니다. 그래프의 모든 필터는 참조 클록이라는 동일한 클록을 사용합니다. 참조 클록은 모든 스트림이 동기화되도록 합니다. 비디오 프레임 또는 오디오 샘플을 렌더링해야 하는 시간을 프레젠테이션 시간이라고 합니다. 프레젠테이션 시간은 참조 클록을 기준으로 측정됩니다. 필터 그래프 관리자는 참조 클록(일반적으로 사운드 카드 클록 또는 시스템 클록)을 선택합니다.

그래프 이벤트. Filter Graph Manager는 이벤트 큐를 사용하여 필터 그래프에서 발생하는 이벤트를 애플리케이션에 알릴 수 있습니다. 이 메커니즘은 Windows 메시지 루프와 비슷합니다.

그래프 작성 방법. Filter Graph Manager는 애플리케이션이 그래프에 필터를 추가하고, 필터를 다른 필터에 연결하고, 필터를 분리하는 메서드를 제공합니다.

Filter Graph Manager에서 처리하지 않는 한 가지 함수는 한 필터에서 다음 필터로 데이터를 이동하는 것입니다. 이 작업은 핀 연결을 통해 필터 자체에 의해 수행됩니다. 처리는 항상 별도의 스레드에서 발생합니다.

참고

필터는 항상 자유 스레드이며 필터 그래프 관리자와 동일한 프로세스에 상주하며 프로세스 내 서버에서 로드됩니다. 따라서 메서드 호출은 필터 간 또는 필터와 필터 Graph 관리자 간에 마샬링되지 않습니다.

 

필터 그래프의 Data Flow

DirectShow의 이벤트 알림

그래프 클록 설정

DirectShow의 시간 및 시계