CBaseStreamControl 클래스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
이 클래스는 입력 및 출력 핀에 대한 IAMStreamControl 인터페이스를 구현합니다. 필터에서 개별 핀의 시작 및 중지를 제어할 수 있습니다. IAMStreamControl을 지원하는 핀은 이 기본 클래스에서 상속되어야 합니다. 다음은 입력 핀에 대한 일반적인 선언입니다.
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
IAMStreamControl을 노출하려면 NonDelegatingQueryInteface를 재정의해야 합니다. 자세한 내용은 IUnknown을 구현하는 방법을 참조하세요.
Public 메서드 | Description |
---|---|
CBaseStreamControl | 생성자 메서드입니다. |
~CBaseStreamControl | 소멸자 메서드입니다. |
CheckStreamState | 미디어 샘플을 배달할지 아니면 삭제해야 하는지 여부를 결정합니다. |
플러싱 | 기본 클래스에 핀이 플러시를 시작하거나 중지했음을 알 수 있습니다. |
NotifyFilterState | 필터의 상태가 변경되면 핀에 알 수 있습니다. |
SetFilterGraph | 스트림 제어 이벤트에 대한 이벤트 싱크를 지정합니다. |
SetSyncSource | 현재 참조 클록의 기본 클래스에 알 수 있습니다. |
IAMStreamControl 메서드 | Description |
GetInfo | 시작 및 중지 시간을 포함하여 현재 스트림 제어 설정에 대한 정보를 검색합니다. |
Startat | 데이터 배달을 시작할 시기를 핀에 알릴 수 있습니다. |
StopAt | 데이터 배달을 중지해야 하는 시기를 핀에 알릴 수 있습니다. |
설명
이 클래스에는 그래프를 조인하거나 새 참조 클록을 받는 필터와 같은 다양한 이벤트가 발생할 때 클래스에 알리기 위해 핀 및 소유 필터가 필요합니다. 다음 클래스 메서드를 호출해야 합니다.
- 필터의 IMediaFilter::SetSyncSource 메서드에서 CBaseStreamControl::SetSyncSource 메서드를 호출합니다. 이 메서드는 현재 참조 클록의 클래스를 알 수 있습니다.
- 필터의 CBaseFilter::JoinFilterGraph 메서드에서 CBaseStreamControl::SetFilterGraph 메서드를 호출합니다. 이 메서드는 클래스가 올바른 스트림 제어 이벤트를 보낼 수 있도록 클래스에 Filter Graph Manager에 대한 포인터를 제공합니다.
- 필터가 상태를 변경할 때마다(실행 중, 일시 중지 또는 중지됨) CBaseStreamControl::NotifyFilterState 메서드를 호출합니다.
- 핀의 IPin::BeginFlush 및 IPin::EndFlush 메서드에서 CBaseStreamControl::Flushing 메서드를 호출합니다 .
클래스는 CBaseStreamControl
필터 그래프의 참조 클록을 사용하여 필터가 제공해야 하는 샘플과 삭제해야 하는 샘플을 결정합니다. 핀의 IMemInputPin::Receive 메서드에서 들어오는 미디어 샘플에 대한 포인터를 사용하여 CBaseStreamControl::CheckStreamState 메서드를 호출합니다. 메서드가 STREAM_FLOWING 값을 반환하는 경우 샘플 다운스트림을 제공합니다. 그렇지 않으면 삭제합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|