다음을 통해 공유


ICaptureGraphBuilder2::ControlStream 메서드(strmif.h)

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

메서드는 ControlStream 하나 이상의 캡처된 데이터 스트림에 대한 시작 및 중지 시간을 설정합니다.

구문

HRESULT ControlStream(
  [in] const GUID     *pCategory,
  [in] const GUID     *pType,
  [in] IBaseFilter    *pFilter,
  [in] REFERENCE_TIME *pstart,
  [in] REFERENCE_TIME *pstop,
  [in] WORD           wStartCookie,
  [in] WORD           wStopCookie
);

매개 변수

[in] pCategory

Pin 속성 집합에 나열된 핀 범주 중 하나를 지정하는 GUID에 대한 포인터입니다. 이 매개 변수의 값은 NULL일 수 없습니다.

[in] pType

미디어 형식 또는 NULL을 지정하는 주 형식 GUID에 대한 포인터입니다. 이 매개 변수가 NULL인 경우 pFilter 매개 변수도 NULL 로 설정합니다. 그렇지 않으면 잘못된 핀을 제어하고 예측할 수 없는 결과를 얻을 수 있습니다.

[in] pFilter

제어할 필터를 지정하는 IBaseFilter 인터페이스에 대한 포인터입니다. 그래프의 모든 캡처 필터를 제어하려면 이 매개 변수를 NULL로 설정합니다.

[in] pstart

시작 시간을 포함하는 변수에 대한 포인터입니다. 값이 MAXLONGLONG (0x7FFFFFFFFFFFFFFF)이면 메서드는 이전 시작 요청을 취소합니다. 값이 NULL이면 그래프가 실행되면 핀이 즉시 시작됩니다.

[in] pstop

중지 시간을 포함하는 변수에 대한 포인터입니다. 값이 MAXLONGLONG이면 메서드는 이전 중지 요청을 취소합니다. 값이 NULL이면 핀이 즉시 중지됩니다.

[in] wStartCookie

EC_STREAM_CONTROL_STARTED 이벤트 알림의 두 번째 매개 변수로 전송되는 값입니다. 자세한 내용은 설명 부분을 참조하십시오.

[in] wStopCookie

EC_STREAM_CONTROL_STOPPED 이벤트 알림의 두 번째 매개 변수로 전송되는 값입니다. 자세한 내용은 설명 부분을 참조하십시오.

반환 값

HRESULT 값을 반환합니다. 가능한 값은 다음과 같습니다.

반환 코드 설명
S_FALSE
하나 이상의 다운스트림 렌더러가 중지 알림을 보내지 않습니다.
S_OK
성공.
E_FAIL
일치하는 핀을 찾을 수 없거나 핀이 스트림 컨트롤을 지원하지 않습니다.
E_POINTER
NULL 포인터 인수입니다.

설명

이 메서드는 메서드 호출에서 제공하는 검색 조건을 사용하여 캡처 필터에서 출력 핀을 찾습니다. 그런 다음 해당 핀에서 IAMStreamControl 메서드를 호출합니다. 이 메서드를 사용하면 애플리케이션이 그래프의 필터 및 핀을 열거할 필요 없이 스트림을 제어할 수 있습니다.

프레임 정확도 캡처 또는 캡처 및 미리 보기의 개별 제어에 이 메서드를 사용합니다. 예를 들어 디스크에 대한 캡처를 중지하지만 비디오 미리 보기를 실행 상태로 둘 수 있습니다.

처음 세 개의 매개 변수는 제어할 핀을 지정합니다. 캡처 그래프에는 둘 이상의 캡처 필터가 있을 수 있습니다. 예를 들어 비디오, 오디오 및 선택 자막 데이터에 대한 필터가 있을 수 있습니다. 또한 캡처 필터에는 둘 이상의 출력 핀이 있을 수 있습니다. 일부 캡처 필터에는 미리 보기 및 캡처를 위한 별도의 핀 또는 비디오 전용 데이터 및 오디오 비디오 인터리브 데이터에 대한 별도의 핀이 있습니다. 예를 들어 비디오 미리 보기를 제어하려면 pCategory 에 대한 PIN_CATEGORY_PREVIEW 지정하고 pType에 MEDIATYPE_Video 지정합니다.

참고  

핀 범주가 PIN_CATEGORY_PREVIEW 경우 미리 보기 핀에서 제공하는 샘플에 타임스탬프가 없기 때문에 특정 시작 및 중지 시간을 설정할 수 없습니다( 타임스탬프 참조). 대신 NULLMAXLONGLONG 값을 사용하여 원하는 시간에 핀을 시작하고 중지합니다.

또한 디바이스가 비디오 포트 핀을 사용하는 경우 이 메서드는 미리 보기에 지원되지 않습니다. 이 경우 디바이스가 하드웨어를 통해 직접 미리 보기 샘플을 제공하기 때문입니다.

 
핀을 제어하기 위해 이 메서드는 IAMStreamControl::StartAtIAMStreamControl::StopAt 메서드를 호출합니다. 각 핀은 시작될 때 EC_STREAM_CONTROL_STARTED 이벤트 알림을 보냅니다. 이벤트 알림의 두 번째 매개 변수는 wStartCookie에 지정된 값입니다. 핀이 중지되면 EC_STREAM_CONTROL_STOPPED 이벤트 알림을 보냅니다. 해당 이벤트 알림의 두 번째 매개 변수는 wStopCookie에 지정된 값입니다.

이 메서드는 일치하는 핀을 찾으면 다운스트림에서 IAMStreamControl (일반적으로 멀티플렉서)을 지원하는 다른 필터를 검색합니다. 이 필터를 찾으면 해당 필터의 시작 및 중지 시간도 설정합니다. 이렇게 하면 캡처 필터와 다운스트림 필터에 대한 두 쌍의 중지 알림이 생성됩니다. 다운스트림 필터의 중지 알림만 wStopCookie 매개 변수를 사용합니다. 이 이벤트를 대기하면 다운스트림 필터가 마지막 샘플을 받습니다.

IAMStreamControl을 지원하는 다운스트림 필터가 없으면 메서드는 S_FALSE 반환합니다. 이 경우 마지막 샘플이 렌더링되기 전에 중지 알림을 받을 수 있습니다.

MAXLONGLONG 은 가능한 가장 큰 REFERENCE_TIME 값입니다. DirectShow 기본 클래스 라이브러리에서는 상수 MAX_TIME 정의됩니다.

요구 사항

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

추가 정보

오류 및 성공 코드

ICaptureGraphBuilder2 인터페이스