다음을 통해 공유


연결 고정

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

필터는 IPin 인터페이스를 통해 핀에서 연결됩니다. 출력 핀은 입력 핀에 연결됩니다. 각 핀 연결에는 AM_MEDIA_TYPE 구조에서 설명하는 미디어 유형이 있습니다.

애플리케이션은 필터 또는 핀 자체에서 메서드를 호출하지 말고 Filter Graph Manager에서 메서드를 호출하여 필터를 연결합니다. 애플리케이션은 IFilterGraph::ConnectDirect 또는 IGraphBuilder ::Connect 메서드를 호출하여 연결할 필터를 직접 지정할 수 있습니다. 또는 IGraphBuilder::RenderFile과 같은 그래프 빌드 메서드를 사용하여 필터를 간접적으로 연결할 수 있습니다.

연결이 성공하려면 두 필터가 필터 그래프에 있어야 합니다. 애플리케이션은 IFilterGraph::AddFilter 메서드를 호출하여 그래프에 필터를 추가할 수 있습니다. 필터 그래프 관리자도 그래프에 필터를 추가할 수 있습니다. 필터가 추가되면 Filter Graph Manager는 필터의 IBaseFilter::JoinFilterGraph 메서드를 호출하여 필터에 알립니다.

연결 프로세스의 일반적인 개요는 다음과 같습니다.

  1. 필터 그래프 관리자는 출력 핀에서 IPin::Connect 를 호출하여 입력 핀에 포인터를 전달합니다.
  2. 출력 핀이 연결을 수락하면 입력 핀에서 IPin::ReceiveConnection 을 호출합니다.
  3. 입력 핀도 연결을 수락하면 연결 시도가 성공하고 핀이 연결됩니다.

필터가 활성화된 동안 일부 핀의 연결을 끊고 다시 연결할 수 있습니다. 이 유형의 재연결을 동적 다시 연결이라고 합니다. 자세한 내용은 동적 그래프 빌드를 참조하세요. 그러나 대부분의 필터는 동적 다시 연결을 지원하지 않습니다.

필터는 일반적으로 다운스트림 순서로 연결됩니다. 즉, 필터의 입력 핀이 출력 핀 앞에 연결됩니다. 필터는 항상 이 연결 순서를 지원해야 합니다. 또한 일부 필터는 반대 순서로 연결을 지원합니다. 먼저 출력 핀과 입력 핀이 옵니다. 예를 들어 MUX 필터의 입력 핀을 연결하기 전에 MUX 필터의 출력 핀을 파일 작성기 필터에 연결할 수 있습니다.

핀의 Connect 또는 ReceiveConnection 메서드가 호출되면 핀이 연결을 지원할 수 있는지 확인해야 합니다. 세부 정보는 특정 필터에 따라 달라집니다. 가장 일반적인 작업에는 다음이 포함됩니다.

  • 미디어 유형이 허용되는지 확인
  • 할당자 협상
  • 필요한 인터페이스에 대해 다른 핀을 쿼리합니다.