DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CTransInPlaceFilter [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
CTransInPlaceFilter 클래스는, 데이터를 버퍼간에 복사 하지 않고 입력 데이터를 수정하는, 인 플레이스 변환 필터용으로 설계되고 있다. 이 클래스를 사용하려면 ,CTransInPlaceFilter 로부터 새로운 클래스를 파생해, 이하의 메서드를 처리 하는 것.
이 필터는 입력 핀에 CTransInPlaceInputPin 클래스를 사용해, 출력 핀에 CTransInPlaceOutputPin 클래스를 사용한다. 보통, 이러한 핑크 라스를 오버라이드(override) 할 필요는 없다. 필터는 CTransInPlaceFilter::GetPin 메서드내에서 양쪽 모두의 핀을 생성 한다. 핑크 라스를 오버라이드(override) 하는 경우는,GetPin 를 오버라이드(override) 해 커스텀 핀을 생성 해야 한다.
이 클래스는, 입력 타입이 항상 출력 타입과 일치하도록(듯이) 설계되고 있다. 필터는, 가능한 한 양쪽 모두의 핀 접속에 1 개의 할당자를 사용한다.
우선되는 미디어 타입
출력 핀이 이미 접속되고 있는 경우는, 입력 핀이 다운 스트림 필터의 우선 타입을 제공한다. (실제, 단지 다운 스트림 필터의 열거자 개체를 돌려준다. ) 그 이외의 경우는, 우선 타입을 가지지 않는다. 출력 핀은, 역의 케이스로 같은 동작을 한다. 입력 핀이 이미 접속되고 있는 경우는, 출력 핀이 업 스트림 필터의 우선 타입을 제공한다. 그 이외의 경우는, 우선 타입을 가지지 않는다.
핀 접속
1 개의 핀이 접속하고 있는 경우, 보통은, 양쪽 모두의 핀이 같은 미디어 타입과 같은 할당자를 사용하도록, 필터가 다른 핀도 재접속한다. (핀의 재접속의 메카니즘에 대해서는, 「핀의 재접속」을 참조할것. ) 입력 핀이 최초로 접속하는 경우와 출력 핀이 최초로 접속하는 경우와 2 종류의 시나리오가 생각된다.
입력 핀이 최초로 접속 하면 한다. 다음의 스텝이 발생한다.
다음에 출력 핀이 접속되면 다음 일이 실행된다.
여기서, 출력 핀이 최초로 접속되는 이제 한편의 시나리오에 대해 생각한다.
그 후, 입력 핀이 접속되면 다음 일이 실행된다.
다운 스트림 할당자는 쓰기 가능하지 않으면 안 되기 때문에, 관여하는 할당자의 1 개에서도 읽기 전용의 경우는, 이 이벤트의 순서는 약간 다르다. 이 경우, 필터는, 개별의 2 개의 할당자를 사용한다.
요건
헤더 : Transip.h 내에서 선언해, Streams.h 를 인클루드 한다.
라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드)를 사용한다.
프로텍트 메서드 | |
Copy | 미디어 샘플을 복사 한다. |
InputPin | 필터의 입력 핀의 포인터를 얻어온다. |
OutputPin | 필터의 출력 핀의 포인터를 얻어온다. |
TypesMatch | 입력 미디어 타입이 출력 미디어 타입과 일치할지 어떨지를 조사한다. |
UsingDifferentAllocators | 입력 핀과 출력 핀이 다른 할당자를 사용하고 있는지를 조사한다. |
퍼블릭 메서드 | |
CTransInPlaceFilter | 생성자 메서드. |
GetPin | 핀을 얻어온다. |
GetMediaType | 출력 핀용의 우선 미디어 타입을 얻어온다. |
DecideBufferSize | 출력 핀의 버퍼 요구를 설정한다. |
CheckTransform | 입력 미디어 타입이 출력 미디어 타입과 호환성이 있을지 어떨지를 체크한다. |
CompleteConnect | 핀 접속을 완료한다. |
Receive | 미디어 샘플을 받아, 그것을 처리해, 다운 스트림 필터에 출력한다. |
순수 가상 메서드 | |
Transform | 샘플을 인 플레이스로 변환한다. |