추구

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

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

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

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

이벤트 시퀀스

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

IMediaPosition 인터페이스는 필터에 사용되지 않습니다. IMediaSeeking은 Automation과 호환되지 않지만 Filter Graph Manager는 모든 IMediaPosition 호출을 IMediaSeeking 호출로 변환하므로 Automation 클라이언트는 여전히 필터 그래프 관리자에서 이 인터페이스 사용해야 합니다.

플러싱

DirectShow의 시간 및 시계