IAMStreamControl::StopAt 메서드(strmif.h)
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
메서드는 StopAt
데이터 배달을 중지할 때 핀에 알릴 수 있습니다.
구문
HRESULT StopAt(
[in] const REFERENCE_TIME *ptStop,
[in] BOOL bSendExtra,
[in] DWORD dwCookie
);
매개 변수
[in] ptStop
핀이 데이터 배달을 중지해야 하는 시기를 지정하는 REFERENCE_TIME 값에 대한 포인터입니다. 값이 MAXLONGLONG (0x7FFFFFFFFFFFFFFF)이면 메서드는 이전 중지 요청을 취소합니다. psStop이 NULL이면 핀이 즉시 중지됩니다.
미리 보기 핀의 경우 미리 보기 핀이 제공하는 샘플에 타임스탬프를 지정하지 않으므로 NULL 및 MAXLONGLONG 값만 유효합니다.
[in] bSendExtra
예약된 중지 시간 후에 추가 샘플을 보낼지 여부를 나타내는 부울 값을 지정합니다. TRUE이면 핀이 하나의 추가 샘플을 보냅니다.
[in] dwCookie
시작 알림과 함께 보낼 값을 지정합니다. 설명 부분을 참조하세요.
반환 값
메서드가 성공하면 반환 값이 S_OK. 그렇지 않으면 실패의 원인을 나타내는 HRESULT 값을 반환합니다.
설명
dwCookie 매개 변수가 0이 아닌 경우 핀은 데이터 배달을 중지할 때 EC_STREAM_CONTROL_STOPPED 이벤트를 보냅니다. 첫 번째 이벤트 매개 변수는 핀의 IPin 인터페이스에 대한 포인터이고 두 번째는 dwCookie 값입니다. ptStop이 NULL 또는 MAXLONGLONG이면 이벤트가 전송되지 않고 dwCookie 값이 무시됩니다.
비디오 캡처에서는 일반적으로 캡처 필터의 출력 핀과 멀티플렉서의 입력 핀에서 이 메서드를 호출합니다. 애플리케이션은 멀티플렉서의 중지 이벤트를 기다려야 합니다. 이렇게 하면 캡처 필터가 올바른 수의 프레임을 전송하는 동시에 모든 프레임이 멀티플렉서에 도달하도록 보장합니다. 또한 캡처 핀의 경우 bSendExtra 매개 변수를 TRUE 로 설정하고 멀티플렉서 핀의 경우 FALSE 로 설정합니다. 이렇게 하면 캡처 필터가 하나의 추가 프레임을 보냅니다. 멀티플렉서는 캡처 핀의 타임스탬프를 사용하므로 추가 프레임이 전송되지 않으면 멀티플렉서는 중지 시간 동안 무기한 대기합니다. 멀티플렉서가 추가 프레임을 받으면 삭제됩니다.
이 메서드는 다음 경계 조건을 처리합니다.
- 중지 시간이 샘플의 시작 시간과 중지 시간 사이에 속하는 경우 핀은 해당 샘플을 제공합니다.
- 시작 시간이 중지 시간과 같으면 핀은 하나의 샘플을 제공합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | strmif.h(Dshow.h 포함) |
라이브러리 | Strmiids.lib |