DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CBaseStreamControl [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
이 클래스는, 입력 핀과 출력 핀의 양쪽 모두에 대해,IAMStreamControl 인터페이스를 처리 한다. 이 클래스에 의해, 필터 위에의 각각의 핀의 시작과 종료를 제어할 수 있다. IAMStreamControl 를 지원 하는 핀은, 이 base class로부터 계승할 필요가 있다. 입력 핀의 표준적인 선언을 다음에 나타낸다.
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
NonDelegatingQueryInteface 를 오버라이드(override) 해 IAMStreamControl 를 공개할 필요가 있다. 더 자세한 정보는, 「IUnknown 의 처리 방법」을 참조할것.
이 클래스에는, 필터가 그래프에 참가하거나 새로운 기준 클럭을 받는다고 하는 각종의 이벤트가 발생했을 때에, 그것을 클래스에 통지하는 핀 및 오너 필터가 필요하다. 다음의 클래스 메서드를 호출할 필요가 있다.
CBaseStreamControl 클래스는 필터 그래프의 기준 클럭을 사용해, 필터가 전달해야 할 샘플과 파기해야 할 샘플을 판별한다. 핀의 IMemInputPin::Receive 메서드로, 수신 미디어 샘플의 포인터를 지정해 CBaseStreamControl::CheckStreamState 메서드를 호출한다. 메서드가 값 STREAM_FLOWING 를 돌려주었을 경우는, 샘플을 다운 스트림에 전달한다. 그 이외의 경우는, 샘플을 파기한다.
요건
헤더 : Strmctl.h 로 선언해, Streams.h 를 인클루드 한다.
라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드).
퍼블릭 메서드
메서드 | 설명 |
CBaseStreamControl | 생성자 메서드. |
~CBaseStreamControl | 소멸자 메서드. |
CheckStreamState | 미디어 샘플을 전달하는지, 파기할까를 판단한다. |
Flushing | 핀이 플래시를 시작 한 것, 또는 정지한 것을 base class에 통지한다. |
NotifyFilterState | 필터 상태가 변화했을 때에 핀에 통지한다. |
SetFilterGraph | 스트림 컨트롤 이벤트의 이벤트 싱크를 지정한다. |
SetSyncSource | 현재의 기준 클럭을 base class에 통지한다. |
IAMStreamControl 메서드
메서드 | 설명 |
GetInfo | 시작 타임과 종료 타임을 포함한, 현재의 스트림 컨트롤 설정에 관한 정보를 얻어온다. |
StartAt | 데이터 전달의 시작 타임을 핀에 통지한다. |
StopAt | 데이터 전달의 정지 타임을 핀에 통지한다. |