다음을 통해 공유


전송

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

필터 그래프를 통해 미디어 데이터를 이동하려면 DirectShow 필터가 몇 가지 가능한 프로토콜 중 하나를 지원해야 합니다. 이러한 프로토콜을 전송이라고 합니다. 두 필터가 연결되면 동일한 전송을 지원해야 합니다. 그렇지 않으면 미디어 데이터를 교환할 수 없습니다. 일반적으로 전송을 수행하려면 핀 중 하나가 특정 인터페이스를 지원해야 합니다. 필터가 연결되면 한 핀이 인터페이스에 대해 다른 핀을 쿼리합니다.

대부분의 DirectShow 필터는 미디어 데이터를 주 메모리에 저장하고 핀 연결을 통해 다른 필터에 전달합니다. 이 유형의 전송을 로컬 메모리 전송이라고 합니다. 로컬 메모리 전송은 DirectShow에서 가장 일반적인 전송이지만 모든 필터에서 사용하는 것은 아닙니다. 예를 들어 일부 필터는 하드웨어 경로를 따라 미디어 데이터를 보내고 핀만 사용하여 제어 정보를 전달합니다. 예를 들어 IOverlay 인터페이스를 참조하세요.

DirectShow는 로컬 메모리 전송, 즉 푸시 모델과 끌어오기 모델에 대한 두 가지 메커니즘을 정의합니다. 푸시 모델에서 원본 필터는 데이터를 생성하고 다음 필터 다운스트림으로 전달합니다. 이 필터는 데이터를 수동적으로 수신하고, 처리하고, 다운스트림으로 보냅니다. 끌어오기 모델에서 원본 필터는 파서 필터에 연결됩니다. 파서 필터는 원본 필터에서 데이터를 요청합니다. 원본 필터는 데이터를 전달하여 요청에 응답합니다. 푸시 모델은 IMemInputPin 인터페이스를 사용하고 끌어오기 모델은 IAsyncReader 인터페이스를 사용합니다.

푸시 모델은 끌어오기 모델보다 일반적입니다. 따라서 다음 문서에서는 푸시 모델을 가정합니다. 이 섹션의 마지막 문서인 끌어오기 모델 IAsyncReader 인터페이스가 IMemInputPin어떻게 다른지 설명합니다.

필터 그래프 데이터 흐름