DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CTransformFilter   [목차열람] [주소복사] [슬롯비우기]
CTransformFilter 클래스
 
Microsoft DirectX 9.0

CTransformFilter 클래스

CTransformFilter 클래스의 계층

CTransformFilter 클래스는, 변환 필터를 처리 하는 base class이다. 이 클래스는 1 개의 입력 핀과 1 개의 출력 핀을 가지는 변환 필터를 처리 하기 위해서 설계되고 있다. 입력 핀과 출력 핀에 다른 할당자를 사용한다. 인 플레이스로 데이터를 처리하는 필터를 생성 하려면 ,CTransInPlaceFilter 클래스를 사용하는 것.

이 필터는 입력 핀에 CTransformInputPin 클래스를 사용해, 출력 핀에 CTransformOutputPin 클래스를 사용한다. 보통, 이러한 핑크 라스를 오버라이드(override) 할 필요는 없다. 대부분의 핀 메서드는 CTransformFilter 클래스에서 대응하는 메서드를 호출하므로, 필요에 따라서 그 필터 메서드를 오버라이드(override) 할 수 있다. 필터는CTransformFilter::GetPin 메서드내에서 양쪽 모두의 핀을 생성 한다. 핑크 라스를 오버라이드(override) 하는 경우,GetPin 를 오버라이드(override) 해 커스텀 핀을 생성 해야 한다.

이 클래스를 사용하려면 , 새로운 클래스를 CTransformFilter 로부터 파생해, 이하의 메서드를 처리 한다.

필터의 요구에 의해, 다른 메서드를과 같이 오버라이드(override) 할 필요가 있는 경우도 있다.

미디어 타입

이 필터의 입력 핀은, 어느 미디어 타입도 제시하지 않는다. 접속의 미디어 타입의 제시를 업 스트림 필터에 의존한다. 이와 같이 설계되고 있는 이유는, 대부분의 경우 업 스트림 필터가 포맷에 대해보다 많은 정보를 제공할 수 있기 때문에 있다. 예를 들어, 비디오 포맷의 경우, 업 스트림 필터는, 비디오 넓이와 frame rate를 인식하고 있지만, 전송 필터는, 이 정보를 판단하는 방법을 가지지 않는다. 이 동작을 변경하려면 , 입력 핀의 GetMediaType 메서드를 오버라이드(override) 한다. 업 스트림 필터가 미디어 타입을 제시 하면, 입력 핀이 필터의 CheckInputType 메서드 (순수 가상)를 호출한다.

입력 핀이 접속될 때까지, 출력 핀은 모든 접속을 거부해, 우선 미디어 타입을 아무것도 돌려주지 않는다. 입력 핀이 접속되면 출력 핀은 필터의 GetMediaType 메서드를 호출해 우선 타입의 리스트를 돌려준다. 출력 핀은, 필터의 CheckTransform 메서드를 사용해 접속의 출력 타입을 조사한다. (어느 쪽의 메서드도 순수 가상이다. ) 보통, 입력 타입은, 사용 가능한 출력 타입의 결정에 영향을 미친다.

필터에 따라서는,필터 맵퍼 개체를 필터를 찾아낼 수 있도록(듯이), 필터로 지원 되는 몇개의 미디어 타입을 등록하는 것이 좋은 경우가 있다. 더 자세한 정보는, 「DirectShow 필터의 등록 방법」을 참조할것.

스트리밍

이 클래스는 출력 데이터를 큐에 넣지 않는다. 각 출력 샘플은 IMemInputPin::Receive 메서드 내부로부터 출력된다. Receive 메서드는, 필터의 Transform 메서드 (순수 가상)를 호출해, 데이터를 처리한다.

요건

헤더 : Transfrm.h 내에서 선언해, Streams.h 를 인클루드 한다.

라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드)를 사용한다.

프로텍트 멤버 변수  
m_bEOSDelivered 필터가 엔드 오브 스트림 (EOS) 통지를 보냈는지 어떠했는지를 나타내는 플래그.
m_bSampleSkipped 최신의 샘플이 떨어뜨려졌는지 어떠했는지를 나타내는 플래그.
m_bQualityChanged 품질이 변경되었는지 어떠했는지를 나타내는 플래그.
m_csFilter 필터 상태를 보호하는 크리티컬 섹션.
m_csReceive 스트리밍 상태를 보호하는 크리티컬 섹션.
m_pInput 입력 핀의 포인터.
m_pOutput 출력 핀의 포인터.
퍼블릭 메서드  
CTransformFilter 생성자 메서드.
~CTransformFilter 소멸자 메서드.
GetPinCount 필터 위에의 핀의 수를 얻어온다. 가상.
GetPin 핀을 얻어온다. 가상.
Transform 입력 샘플을 변환해 출력 샘플을 생성 한다. 가상.
StartStreaming 필터가 포즈 상태에 스윗치 했을 때 호출된다. 가상.
StopStreaming 필터가 정지상태태에 스윗치 했을 때 호출된다. 가상.
AlterQuality 품질의 변경이 요구된 것을 필터에 통지한다. 가상.
SetMediaType 미디어 타입이 필터의 핀의 1 개로 설정되었을 때 호출된다. 가상.
CheckConnect 핀 접속이 적절한가 어떤가를 조사한다. 가상.
BreakConnect 핀 접속을 해제한다. 가상.
CompleteConnect 핀 접속을 완료한다. 가상.
Receive 미디어 샘플을 취득해, 그것을 처리해, 다운 스트림 필터에 출력 샘플을 출력한다. 가상.
InitializeOutputSample 새로운 출력 샘플을 취득해, 그것을 초기화한다.
EndOfStream 입력 핀으로부터의 추가 데이터는 없는 것을 필터에 통지한다. 가상.
BeginFlush 플래시 처리를 시작 한다. 가상.
EndFlush 플래시 처리를 종료한다. 가상.
NewSegment 이 호출 후에 받은 미디어 샘플이 세그먼트(segment)로서 그룹화 되고 있는 것을 필터에 통지한다. 가상.
순수 가상 메서드  
CheckInputType 지정된 미디어 타입이 입력으로서 허용 될지 어떨지를 체크한다.
CheckTransform 입력 미디어 타입이 출력 미디어 타입과 호환성이 있을지 어떨지를 체크한다.
DecideBufferSize 출력 핀의 버퍼 요구를 설정한다.
GetMediaType 출력 핀용의 우선 미디어 타입을 얻어온다.
IMediaFilter 메서드  
Stop 필터를 정지한다.
Pause 필터를 포즈 한다.
IBaseFilter 메서드  
FindPin 지정한 식별자로 핀을 얻어온다.

↑TOP