DirectShow DirectShow 의 사용법 비디오 캡춰 비디오의 프리뷰   [목차열람] [주소복사] [슬롯비우기]
비디오의 프리뷰
 
Microsoft DirectX 9.0

비디오의 프리뷰

비디오 프리뷰 그래프를 생성 하려면 , 다음과 같이 ICaptureGraphBuilder2::RenderStream 메서드를 호출한다.

ICaptureGraphBuilder2 *pBuild; // 캡춰 그래프 빌더.
// pBuild 를 초기화한다 (생략).

IBaseFilter *pCap; // 비디오 캡춰 필터.
/* pCap 를 초기화해, 필터 그래프에 추가한다 (생략).  */

hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);

이 예에서는, 다음 일을 가정하고 있다.

RenderStream 메서드의 최초의 인수에는 핀 카테고리를 지정한다. 프리뷰 그래프의 경우, PIN_CATEGORY_PREVIEW 를 사용한다. 2 번째의 인수에는, 메이저 타입 GUID 로서 미디어 타입을 지정한다. 비디오의 경우, MEDIATYPE_Video 를 사용한다. DV 장치는 인터리브 된 오디오와 비디오를 송신한다. 그 미디어 타입은 MEDIATYPE_Interleaved 이다. (DV 캡춰의 더 자세한 정보는, 「DirectShow 에서의 디지털 비디오」를 참조할것. )

3 번째의 인수는, 캡춰 필터의 IBaseFilter 인터페이스의 포인터이다. 다음의 2 개의 인수는 이 예에서는 필요없다. 이러한 인수는, 스트림의 렌더링에 필요한 일이 있는 추가 필터를 지정할 경우에 사용한다. 마지막 인수를 NULL 로 설정 하면, Capture Graph Builder 는 미디어 타입에 근거해, 스트림에 디폴트의 렌더러를 선택한다. 비디오의 경우, Capture Graph Builder 는 디폴트 렌더러로서 항상비디오 렌더러 필터를 사용한다.

주 :  Windows XP 에서는, Video Mixing Renderer (VMR)는 IGraphBuilder 메서드의 디폴트 비디오 렌더러이지만,RenderStream 메서드의 디폴트 렌더러 "는 아니다". 어느 플랫폼으로도, 특히 지정하지 않는 한, Capture Graph Builder 는 항상 낡은 비디오 렌더러 필터를 사용한다.

핀 카테고리는 PIN_CATEGORY_PREVIEW 와 지정하지만, 필터에 실제로 프리뷰 핀이 있을지 어떨지는 관계없다. 비디오 포트 핀이나 캡춰 핀이 있어도 괜찮다. 어느 쪽의 경우도, Capture Graph Builder 는 자동적으로 올바른 그래프를 생성 한다.

다음 그림은 비디오를 프리뷰 할 수 있는 가장 단순한 그래프를 나타내고 있다.

비디오 프리뷰 그래프

이 그림으로, 캡춰 필터에는 프리뷰 핀이 있어, 비디오 렌더러에 직접 접속하고 있다.

캡춰 필터에 캡춰 핀 밖에 없는 경우, Capture Graph Builder 는스마트티 필터를 삽입한다. 이 필터는 스트림을 캡춰 스트림과 프리뷰 스트림에 분할한다. 더 자세한 정보는, 「비디오 캡춰와 프리뷰의 편성」으로 설명하고 있다.

경우에 따라서는, 비디오 스트림을 오버레이 믹서 필터에 통해야 한다. 그 경우는,RenderStream 메서드가 자동적으로 그래프에 추가한다.

참조

↑TOP