DirectShow DirectShow 레퍼런스 DirectShow 의 필터 오버레이 믹서 필터   [목차열람] [주소복사] [슬롯비우기]
오버레이 믹서 필터
 
Microsoft DirectX 9.0

오버레이 믹서 필터

오버레이 믹서 필터는, Line 21 자막 방송 부착의 DVD 재생 및 브로드캐스트 비디오 스트림용으로 설계된 비디오 렌더러이다. 오버레이 믹서는, 비디오 포트 extension (VPE)도 지원 하고 있다. VPE 는, 오버레이 믹서에 의해, 데이터를 PCI 버스를 개좌도에 직접 그래픽 카드로 송신하는 하드웨어 MPEG-2 디코더 또는 아날로그 TV 튜너와 함께 동작할 수 있게 된다.

 :  VPE 의 경우를 제외해, 현재는 Video Mixing Renderer9 가 오버레이 믹서 필터보다 우선된다.

오버레이 믹서는 렌더링을 위해서(때문에) Microsoft® DirectDraw® 를 사용한다. 오버레이 믹서는, 그래픽 카드의 오버레이 표면을 필요로 한다. 1차 비디오 스트림은 핀 0 에, 2차 스트림 (자막 방송 그래픽 또는 DVD 서브 픽쳐)은 핀 1 이후에 접속된다. 오버레이 믹서는 2차 스트림을 1차 표면에 직접 블리트 해, 믹싱이나 알파 혼합은 실시하지 않는다.

오버레이 믹서는, 윈도우 관리를 위해서(때문에) 비디오 렌더러를 사용한다. 비디오 렌더러는, 오버레이 믹서의 출력 핀에 접속한다.

이 필터는, 애플리케이션이 IDvdGraphBuilder 인터페이스 및 ICaptureGraphBuilder2 인터페이스를 사용해 그래프를 생성 할 경우에, 자동적으로 필터 그래프에 추가된다. 필터 그래프 매니저는 오버레이 믹서를 그래프에 자동적으로 추가는 하지 않는다.

주 :  이하의 표로, 입력 핀 0 으로 사용할 수 있는 미디어 서브 타입은 하드웨어에 의존한다. 오버레이 믹서는, DirectDraw 표면을 생성 할 때까지, 특정의 서브 타입이 지원 되고 있는지를 확인할 수 없다. 이 때문에, 어느 서브 타입이 지원 되고 있는지를 업 스트림 필터가 판단하기 위해서(때문에)는, 그 서브 타입을 사용해 접속을 시도할 필요가 있다.

필터 인터페이스 IAMOverlayFX ,IAMVideoDecimationProperties ,IBaseFilter ,IDDrawExclModeVideo ,IKsPropertySet ,IMediaPosition ,IMediaSeeking ,IMixerOCX ,IQualProp ,IVPNotify ,IVPNotify2
입력 핀 미디어 타입 메이저 타입 : MEDIATYPE_Video
서브 타입 : 
  • MEDIASUBTYPE_Overlay (핀 0 마셔)
  • DirectDraw YUV 포맷 : MEDIASUBTYPE_YUVxx (핀 0 마셔)

DirectDraw 비디오 가속화 포맷 : MEDIASUBTYPE_DVAxxx (핀 0 마셔)

  • Microsoft® DirectDraw® RGB 포맷 : MEDIASUBTYPE_RGBxx (모든 입력 핀)

    포맷 타입 : Format_VIDEOINFO, Format_VIDEOINFO2

입력 핀인타페이스 IAMVideoAccelerator ,IKsPin ,IKsPropertySet ,IMemInputPin ,IMixerPinConfig ,IMixerPinConfig2 ,IOverlay (핀 0 마셔),IPin ,IPinConnection ,IQualityControl ,IVPNotify ,IVPNotify2
출력 핀 미디어 타입 MEDIATYPE_Video, MEDIASUBTYPE_Overlay
출력 핀인타페이스 IMediaPosition ,IMediaSeeking ,IPin ,IQualityControl
필터 CLSID CLSID_OverlayMixer
프로퍼티 페이지 CLSID 프로퍼티 페이지 없음.
실행 모듈 qdvd.dll
메리트 MERIT_DO_NOT_USE
필터 카테고리 CLSID_LegacyAmFilterCategory

주의

오버레이 믹서는, 목적지 컬러 키를 사용해 비디오 표면와 오버레이를 믹스 한다. 컬러 키와 2차 비디오를 1차 표면에 블리트 해, 1차 비디오를 오버레이 표면에 송신한다. 그 후, 그래픽 카드가 2 개의 표면을 frame buffer에 합성한다.

애플리케이션은 IMixerPinConfig2 인터페이스를 개입시켜 오버레이 믹서에 대한 일부의 동작을 제어할 수 있다. 이 섹션으로 나중에 설명하도록(듯이), 게임 개발자는 오버레이 믹서를 사용해 비디오를 DirectDraw 배타 모드로 표시할 수 있다. 다만,Video Mixing Renderer 필터 9 (VMR-9)에서는 게임의 비디오에 대한 지원이 개선되고 있다. 더 자세한 정보는, 「Video Mixing Renderer 의 사용」을 참조할것.

이하의 정보는, 필터 개발자나, 오버레이 믹서를 DirectDraw 배타 모드로 사용하는 게임 개발자를 대상으로 하고 있다.

오버레이 믹서의 내부 동작

오버레이 믹서는, 입력 스트림 마다 입력 핀을 공개한다. 일반적으로는, 비디오 데이터용의 핀 0, Line 21 및 DVD 서브 픽쳐 데이터용의 핀 1 으로 핀 2 의 3 개의 입력 핀이 있다. 내부적으로는, 오버레이 믹서는 데스크탑 전체를 구성하는 1차 표면와 핀 0 의 비디오 스트림의 사이즈에 의해 그 직사각형이 정의되는 오버레이 표면을 가지는 DirectDraw 개체를 생성 한다. 디코더가 컬러 키를 지정하지 않는 경우, 오버레이 믹서는 지정의 컬러 키로서 최근의 그래픽 카드의 경우는 다크 회색, 낡은 256 색카드의 경우는 맛젠타를 사용한다.

주 :  디코더가 오버레이 표면의 같은 장소에 2 개의 2차 비디오 스트림을 동시에 출력하는 경우, 결과는 미정도리이다. (이것은, 서브 픽쳐 스트림과 Line 21 스트림을 포함한 DVD 로 발생하는 경우가 있다. ) 비디오에 깜박거림이 발생하는지, 어느쪽이든 한편의 스트림만이 표시된다.

Windows 98SE 및 Windows 2000 에서는, 오버레이 믹서는 2차 모니터 위에의 비디오 포트 접속을 지원 하지 않는다. 이 경우, 핀 접속은 실패한다. Windows Me 와 Windows XP 에는 이 제한은 없다.

비디오 디코더와의 업 스트림 접속

보통, 오버레이 믹서의 입력 핀은 업 스트림 비디오 디코더에 접속한다. 1차 비디오 스트림은 핀 0 에 접속할 필요가 있다. Line 21 또는 서브 픽쳐 스트림은 핀 1 이후의 핀에 접속한다. 디코더가, 호스트 CPU 를 배타적으로 사용하는 소프트웨어 디코더의 경우, 디코더와 핀 0 과의 사이의 접속은, 표준 IMemInputPin 접속이 된다. 디코더가 하드웨어 가속화를 이용하는 경우, 핀 0 에의 접속은 IAMVideoAccelerator 인터페이스를 사용할 필요가 있다. 이것들 2 종류의 접속은 서로 배타적이다.

디코더가 오버레이 표면에 직접 드로잉(Drawing) 하는 경우는, 핀 0 으로 IOverlay 인터페이스를 사용해,IOverlayNotify 인터페이스를 처리 할 필요가 있다.

하드웨어 디코더를 랩 해 비디오 포트 경유로 오버레이 믹서에 접속하는 필터는,IVPConfig 인터페이스를 처리 할 필요가 있다. 오버레이 믹서는 IVPNotify 인터페이스를 처리 한다. 이러한 2 개의 인터페이스에 의해, 디코더가 필요한 오버레이 표면을 지정할 수 있는 한편, 오버레이 믹서는, 비디오 메모리내에서의 그러한 표면의 위치를 디코더에 통지하는 것이 가능하게 된다.

오버레이 믹서는 비디오 직사각형이 정상적으로 스케일링 되는 일도 보증한다. 비디오 캡춰에는 프리뷰 이미지의 스케일링과 인터리브 된 비디오 프레임의 캡춰에 관해서 각종의 문제가 수반한다. 하드웨어 비디오 캡춰 장치의 필터 또는 WDM 드라이버의 개발에 관한 더 자세한 정보는, 「IVPConfig 」 및 「IVPNotify 」를 참조할것.

오버레이 믹서는, 1394 또는 USB 캡춰 시나리오에서는 사용되지 않는다. 오버레이 믹서는, PCI 버스상에서의 비디오 캡춰에 사용된다.

비디오 렌더러와의 다운 스트림 접속

오버레이 믹서에는,비디오 렌더러 필터에 접속하는 출력 핀이 있다. 이 경우, 비디오 렌더러는 비디오를 렌더링 하지 않고, 비디오 윈도우를 관리하는 것만으로 있다.

핀 접속은,IMemInputPin 인터페이스는 아니고,IOverlay 인터페이스를 사용한다. 비디오 렌더러는, 직사각형 클리핑을 관리하는 DirectDraw 에, 오버레이 믹서 경유로 윈도우 핸들을 건네준다. 애플리케이션은, 필터 그래프 매니저의 IVideoWindowIBasicVideo2 인터페이스를 개입시켜 비디오 렌더러를 제어할 수 있다.

DirectDraw 배타 모드

오버레이 믹서의 DirectDraw 배타 모드는, 게임에서 화면의 일부에 비디오를 표시할 수 있도록(듯이) 한다. 이 모드에서는, 오버레이 믹서는, 비디오 렌더러에 의해 제공된 윈도우내는 아니고, 게임 애플리케이션에 의해 생성 된 DirectDraw 표면에 비디오를 직접 렌더링 한다. 이것에 의해, 게임은 컬러 키를 제어할 수 있다. 오버레이 믹서는, DirectDraw 배타 모드에서는 1 개의 입력 핀만을 공개한다. 이 때문에, 이 모드에서는, Line 21 또는 DVD 서브 픽쳐의 믹싱은 실행할 수 없다.

오버레이 믹서를 DirectDraw 배타 모드로 사용하려면 , 오버레이 믹서의 인스턴스를 생성 해, 필터 그래프를 생성 하기 전에 그 IDDrawExclModeVideo 인터페이스를 문의한다. 다음에 IDDrawExclModeVideo::SetDDrawSurface 를 호출해, 렌더링을 위한 DirectDraw 표면을 지정한다. 이 모드에 관한 1 개의 중요한 제한은, 게임이 실제의 비디오 비트에 액세스 할 수 없는 점이다. IDDrawExclModeVideo 를 사용하는 경우, 애플리케이션은 1차 표면을 생성 해, 오버레이 믹서는 오버레이 표면을 생성 한다.

또, DirectDraw 배타 모드를 사용해, Web 페이지등으로 윈도우레스렌더링을 실시할 수도 있지만, 이러한 처리는 추천 하지 않는다. 이유는, 오버레이 믹서가 이 모드로 믹싱을 실시하지 않기 때문에이다. 믹싱을 하지 않기 때문에, Line 21 또는 서브 픽쳐 데이터를 표시할 수가 없다. 윈도우레스모드로 DVD 재생 애플리케이션을 생성 하는 경우는,MSWebDVD ActiveX 컨트롤의 사용이 추천 된다.

↑TOP