ICaptureGraphBuilder2::ControlStream 메서드(strmif.h)
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media 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 값을 반환합니다. 가능한 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
하나 이상의 다운스트림 렌더러가 중지 알림을 보내지 않습니다. |
|
성공. |
|
일치하는 핀을 찾을 수 없거나 핀이 스트림 컨트롤을 지원하지 않습니다. |
|
NULL 포인터 인수입니다. |
설명
이 메서드는 메서드 호출에서 제공하는 검색 조건을 사용하여 캡처 필터에서 출력 핀을 찾습니다. 그런 다음 해당 핀에서 IAMStreamControl 메서드를 호출합니다. 이 메서드를 사용하면 애플리케이션이 그래프의 필터 및 핀을 열거할 필요 없이 스트림을 제어할 수 있습니다.
프레임 정확도 캡처 또는 캡처 및 미리 보기의 개별 제어에 이 메서드를 사용합니다. 예를 들어 디스크에 대한 캡처를 중지하지만 비디오 미리 보기를 실행 상태로 둘 수 있습니다.
처음 세 개의 매개 변수는 제어할 핀을 지정합니다. 캡처 그래프에는 둘 이상의 캡처 필터가 있을 수 있습니다. 예를 들어 비디오, 오디오 및 선택 자막 데이터에 대한 필터가 있을 수 있습니다. 또한 캡처 필터에는 둘 이상의 출력 핀이 있을 수 있습니다. 일부 캡처 필터에는 미리 보기 및 캡처를 위한 별도의 핀 또는 비디오 전용 데이터 및 오디오 비디오 인터리브 데이터에 대한 별도의 핀이 있습니다. 예를 들어 비디오 미리 보기를 제어하려면 pCategory 에 대한 PIN_CATEGORY_PREVIEW 지정하고 pType에 MEDIATYPE_Video 지정합니다.
핀 범주가 PIN_CATEGORY_PREVIEW 경우 미리 보기 핀에서 제공하는 샘플에 타임스탬프가 없기 때문에 특정 시작 및 중지 시간을 설정할 수 없습니다( 타임스탬프 참조). 대신 NULL 및 MAXLONGLONG 값을 사용하여 원하는 시간에 핀을 시작하고 중지합니다.
또한 디바이스가 비디오 포트 핀을 사용하는 경우 이 메서드는 미리 보기에 지원되지 않습니다. 이 경우 디바이스가 하드웨어를 통해 직접 미리 보기 샘플을 제공하기 때문입니다.
이 메서드는 일치하는 핀을 찾으면 다운스트림에서 IAMStreamControl (일반적으로 멀티플렉서)을 지원하는 다른 필터를 검색합니다. 이 필터를 찾으면 해당 필터의 시작 및 중지 시간도 설정합니다. 이렇게 하면 캡처 필터와 다운스트림 필터에 대한 두 쌍의 중지 알림이 생성됩니다. 다운스트림 필터의 중지 알림만 wStopCookie 매개 변수를 사용합니다. 이 이벤트를 대기하면 다운스트림 필터가 마지막 샘플을 받습니다.
IAMStreamControl을 지원하는 다운스트림 필터가 없으면 메서드는 S_FALSE 반환합니다. 이 경우 마지막 샘플이 렌더링되기 전에 중지 알림을 받을 수 있습니다.
MAXLONGLONG 은 가능한 가장 큰 REFERENCE_TIME 값입니다. DirectShow 기본 클래스 라이브러리에서는 상수 MAX_TIME 정의됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | strmif.h(Dshow.h 포함) |
라이브러리 | Strmiids.lib |