다음을 통해 공유


추구

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

필터는 IMediaSeeking 인터페이스를 통해 검색을 지원합니다. 애플리케이션은 IMediaSeeking Filter Graph Manager를 쿼리하고 이를 사용하여 탐색 명령을 실행합니다. Filter Graph Manager는 각 seek 명령을 그래프의 모든 렌더러 필터에 배포합니다. 각 렌더러는 검색을 실행할 수 있는 필터에 도달할 때까지 업스트림 필터의 출력 핀을 통해 명령 업스트림을 전달합니다. 일반적으로 원본 필터 또는 파서 필터(예: AVI Splitter)는 검색 작업을 수행합니다.

필터가 검색 작업을 수행하면 보류 중인 모든 데이터를 플러시합니다. 그 결과 기존 데이터가 그래프에서 플러시되므로 검색 명령의 대기 시간을 최소화할 수 있습니다. seek 명령 후에 스트림 시간이 0으로 다시 설정됩니다.

다음 다이어그램에서는 이벤트 시퀀스를 보여 줍니다.

이벤트 시퀀스

파서 필터에 둘 이상의 출력 핀이 있는 경우 일반적으로 검색 명령을 수락하도록 해당 필터 중 하나를 지정합니다. 다른 핀은 수신하는 모든 seek 명령을 거부하거나 무시합니다. 이러한 방식으로 파서는 모든 스트림을 동기화된 상태로 유지합니다. 그러나 모든 출력 핀은 iMediaSeeking::GetCapabilities구현하고 IMediaSeeking::CheckCapabilities필터의 검색 기능을 반환해야 합니다. 이렇게 하면 Filter Graph Manager가 애플리케이션에 올바른 값을 반환합니다.

IMediaPosition 인터페이스는 필터에 더 이상 사용되지 않습니다. IMediaSeeking 자동화와 호환되지 않지만 Filter Graph Manager는 모든 IMediaPosition 호출을 IMediaSeeking 호출로 변환하므로 Automation 클라이언트는 필터 그래프 관리자에서 이 인터페이스를 계속 사용해야 합니다.

플러시

DirectShow의 시간 및 시계