다음을 통해 공유


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)이면 메서드는 이전 중지 요청을 취소합니다. psStopNULL이면 핀이 즉시 중지됩니다.

미리 보기 핀의 경우 미리 보기 핀이 제공하는 샘플에 타임스탬프를 지정하지 않으므로 NULLMAXLONGLONG 값만 유효합니다.

[in] bSendExtra

예약된 중지 시간 후에 추가 샘플을 보낼지 여부를 나타내는 부울 값을 지정합니다. TRUE이면 핀이 하나의 추가 샘플을 보냅니다.

[in] dwCookie

시작 알림과 함께 보낼 값을 지정합니다. 설명 부분을 참조하세요.

반환 값

메서드가 성공하면 반환 값이 S_OK. 그렇지 않으면 실패의 원인을 나타내는 HRESULT 값을 반환합니다.

설명

dwCookie 매개 변수가 0이 아닌 경우 핀은 데이터 배달을 중지할 때 EC_STREAM_CONTROL_STOPPED 이벤트를 보냅니다. 첫 번째 이벤트 매개 변수는 핀의 IPin 인터페이스에 대한 포인터이고 두 번째는 dwCookie 값입니다. ptStopNULL 또는 MAXLONGLONG이면 이벤트가 전송되지 않고 dwCookie 값이 무시됩니다.

비디오 캡처에서는 일반적으로 캡처 필터의 출력 핀과 멀티플렉서의 입력 핀에서 이 메서드를 호출합니다. 애플리케이션은 멀티플렉서의 중지 이벤트를 기다려야 합니다. 이렇게 하면 캡처 필터가 올바른 수의 프레임을 전송하는 동시에 모든 프레임이 멀티플렉서에 도달하도록 보장합니다. 또한 캡처 핀의 경우 bSendExtra 매개 변수를 TRUE 로 설정하고 멀티플렉서 핀의 경우 FALSE 로 설정합니다. 이렇게 하면 캡처 필터가 하나의 추가 프레임을 보냅니다. 멀티플렉서는 캡처 핀의 타임스탬프를 사용하므로 추가 프레임이 전송되지 않으면 멀티플렉서는 중지 시간 동안 무기한 대기합니다. 멀티플렉서가 추가 프레임을 받으면 삭제됩니다.

이 메서드는 다음 경계 조건을 처리합니다.

  • 중지 시간이 샘플의 시작 시간과 중지 시간 사이에 속하는 경우 핀은 해당 샘플을 제공합니다.
  • 시작 시간이 중지 시간과 같으면 핀은 하나의 샘플을 제공합니다.
MAXLONGLONG 은 가능한 가장 큰 REFERENCE_TIME 값입니다. 기본 클래스 라이브러리에서는 상수 MAX_TIME 정의됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 strmif.h(Dshow.h 포함)
라이브러리 Strmiids.lib

추가 정보

오류 및 성공 코드

IAMStreamControl 인터페이스