DirectShow DirectShow 의 사용법 DirectShow 필터의 개발 필터 개발자가 사용하는 데이터 플로우 스트림 종료 통지   [목차열람] [주소복사] [슬롯비우기]
스트림 종료 통지
 
Microsoft DirectX 9.0

스트림 종료 통지

소스 필터가 데이터의 송신을 완료 하면, 다운 스트림의 입력 핀의 IPin::EndOfStream 메서드를 호출한다. 다운 스트림 필터는 이 호출을 다음의 필터에 전달해, 이하와 같이 처리를 한다. EndOfStream 호출이 렌더러에 이르면 렌더러는 필터 그래프 매니저에 EC_COMPLETE 이벤트를 송신한다. 렌더러에 복수의 입력 핀이 있는 경우, 모든 입력 핀이 스트림 종료 통지를 수신한 후, 렌더러는 EC_COMPLETE 를 송신한다.

필터는,IMemInputPin::Receive 등의 다른 스트리밍 호출과 함께 EndOfStream 호출을 계속해 처리할 필요가 있다. (바꾸어 말하면, 다운 스트림 필터는 항상 올바른 순서로 호출을 수신할 필요가 있다. )

경우에 따라서는, 소스 필터보다 전에 다운 스트림 필터가 스트림 종료를 검출한다. (예를 들어, 다운 스트림 필터는 스트림을 해석하는 일이 있다. ) 그 경우, 다운 스트림 필터는 스트림 종료 통지를 송신할 수 있다. 이 경우, 그래프가 정지하는지 플래시 할 때까지,IMemInputPin::Receive 으로부터 S_FALSE 를 돌려줄 필요가 있다. 반환값 S_FALSE 는, 소스 필터에 데이터 송신의 정지를 알린다.

EC_COMPLETE 의 디폴트 처리

디폴트에서는, 필터 그래프 매니저는 모든 EC_COMPLETE 이벤트를 애플리케이션에는 전송 하지 않는다. 대신에, 모든 스트림이 EC_COMPLETE 를 통지할 때까지 대기한 다음에, EC_COMPLETE 이벤트를 1 개 송신한다. 따라서, 모든 스트림이 완료한 후에 애플리케이션은 이벤트를 수신한다.

스트림의 수를 조사하기 (위해)때문에, 필터 그래프 매니저는 시크를 지원 해 (IMediaSeeking 또는 IMediaPosition 를 사용),"렌더링 된" 입력 핀을 가지는 필터를 센다. 렌더링 된 입력 핀은 대응하는 출력을 가지지 않는 입력 핀으로서 정의된다. 필터 그래프 매니저는, 다음의 어느 쪽인지 1 개의 방법을 사용해, 핀이 렌더링 되고 있는지를 조사한다.

풀 모드의 스트림 종료 통지

IAsyncReader 접속으로, 소스 필터는 스트림 종료 통지를 송신하지 않는다. 대신에, 다운 스트림 필터 (보통은 파서 필터)가 실시한다. 파서는 다운로드 방향으로 EndOfStream 호출을 송신한다. 업 스트림의 소스 필터에는 송신하지 않는다.

참조

↑TOP