다음을 통해 공유


오버레이 믹서 필터

[DirectShow 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, Media Foundation 오디오/비디오 캡처대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngineAudio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

오버레이 믹서 필터는 줄 21 선택 자막이 있는 DVD 재생 및 브로드캐스트 비디오 스트림을 위해 특별히 설계된 비디오 렌더러입니다. 오버레이 믹서는 VPI(비디오 포트 확장)도 지원하므로 PCI 버스가 아닌 그래픽 카드로 직접 비디오를 보내는 하드웨어 MPEG-2 디코더 또는 아날로그 TV 튜너와 함께 작동할 수 있습니다.

메모

이제 VPE 시나리오를 제외하고 Video Mixing Renderer 9 오버레이 믹서 필터보다 선호됩니다.

 

오버레이 믹서는 렌더링에 DirectDraw를 사용합니다. 그래픽 카드에 오버레이 표면이 필요합니다. 기본 비디오 스트림은 핀 0에 연결되어야 합니다. 보조 스트림(선택 자막 그래픽 또는 DVD 하위 그림)은 핀 1 이상에 연결됩니다. 오버레이 믹서는 보조 스트림을 기본 서페이스에 직접 블릿합니다. 혼합하거나 알파 혼합하지 않습니다.

오버레이 믹서는 창 관리에 Video Renderer를 사용합니다. Video Renderer는 오버레이 믹서의 출력 핀에 연결합니다.

이 필터는 애플리케이션이 IDvdGraphBuilderICaptureGraphBuilder2 인터페이스를 사용하여 그래프를 만들 때 자동으로 필터 그래프에 추가됩니다. 필터 그래프 관리자는 그래프에 오버레이 믹서가 자동으로 추가되지 않습니다.

메모

다음 표에서 입력 핀 0에 허용되는 미디어 하위 형식은 하드웨어에 따라 다릅니다. 오버레이 믹서는 DirectDraw 표면을 만들 때까지 특정 하위 형식이 지원되는지 여부를 확인할 수 없습니다. 따라서 업스트림 필터가 하위 형식이 지원되는지 여부를 확인하는 유일한 방법은 해당 하위 형식과의 연결을 시도하는 것입니다.

 

레이블
필터 인터페이스 IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2
입력 핀 미디어 형식 주 형식: MEDIATYPE_Video
하위:
  • MEDIASUBTYPE_Overlay(핀 0만 해당)
  • DirectDraw YUV 형식(핀 0에만 해당)
  • DirectDraw 비디오 가속 형식(핀 0에만 해당)
  • DirectDraw RGB 형식(모든 입력 핀)
형식 형식:
  • 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

 

발언

오버레이 믹서는 대상 색 키링을 사용하여 비디오 표면과 오버레이를 혼합합니다. 색 키와 보조 비디오를 기본 화면으로 표시하고 기본 비디오를 오버레이 화면으로 보냅니다. 그런 다음 그래픽 카드는 두 표면을 프레임 버퍼에 합성합니다.

그래픽 드라이버가 하드웨어 오버레이를 지원하는지 테스트하려면 IDirectDraw7::GetCaps호출합니다. DDCAPS 구조체의 dwMaxVisibleOverlays 필드가 0보다 크면 드라이버가 하드웨어 오버레이를 지원합니다.

애플리케이션은 IMixerPinConfig2 인터페이스를 통해 오버레이 믹서에서 일부 동작을 제어할 수 있습니다. 게임 개발자는 이 섹션의 뒷부분에 설명된 대로 오버레이 믹서(Overlay Mixer)를 사용하여 DirectDraw 전용 모드로 비디오를 표시할 수 있습니다. 그러나 비디오 혼합 렌더러 필터 9(VMR-9)은 이제 게임에서 비디오를 더 잘 지원합니다. 자세한 내용은 비디오 혼합 렌더러 사용하는참조하세요.

DirectDraw 전용 모드에서 오버레이 믹서(Overlay Mixer)를 사용하려는 필터 개발자 및 게임 개발자의 혜택을 위해 다음 정보가 제공됩니다.

오버레이 믹서 내부 작업

오버레이 믹서는 들어오는 각 스트림에 대한 입력 핀을 노출합니다. 일반적으로 세 개의 입력 핀이 있습니다. 비디오 데이터의 경우 핀 0, 줄 21 및 DVD 하위 작업에 대한 핀 1과 2. 내부적으로 Overlay Mixer는 전체 데스크톱으로 구성된 기본 표면과 핀 0의 비디오 스트림 크기로 사각형이 정의된 오버레이 표면을 사용하여 DirectDraw 개체를 만듭니다. 디코더가 색 키를 지정하지 않으면 오버레이 믹서는 기본 색 키인 최신 그래픽 카드의 경우 진한 회색, 이전 256가지 색 카드의 경우 자홍색 키를 사용합니다.

메모

디코더가 오버레이 표면의 동일한 위치에서 두 개의 보조 비디오 스트림을 동시에 제공하는 경우 결과는 정의되지 않습니다. 하위 작업과 줄 21 스트림이 포함된 DVD에서 발생하는 경우가 있습니다. 비디오가 깜박이거나 스트림 중 하나만 표시될 수 있습니다.

 

Windows Vista 이상에서 오버레이 믹서는 디스플레이 드라이버가 하드웨어 오버레이를 지원하는 경우 DWM(데스크톱 창 관리자) 컴퍼지션을 사용하지 않도록 설정합니다. 애플리케이션은 오버레이 믹서 필터를 사용하지 않아야 합니다. 대신 VMR-9 또는 EVR(고급 비디오 렌더러)을 사용합니다.

비디오 디코더 업스트림 연결

일반적으로 오버레이 믹서의 입력 핀은 업스트림 비디오 디코더에 연결됩니다. 기본 비디오 스트림은 핀 0에 연결해야 합니다. 줄 21 또는 하위픽처 스트림은 핀 1 이상에 연결됩니다. 디코더가 호스트 CPU만 사용하는 소프트웨어 디코더인 경우 디코더와 핀 0 간의 연결은 IMemInputPin 연결입니다. 디코더가 하드웨어 가속을 사용하는 경우 핀 0에 대한 연결은 IAMVideoAccelerator 유추를 사용해야 합니다. 이러한 두 가지 유형의 연결은 상호 배타적입니다.

디코더가 오버레이 표면에 직접 그리는 경우 핀 0에서 IOverlay 인터페이스를 사용하고 IOverlayNotify 인터페이스를 구현해야 합니다.

하드웨어 디코더를 래핑하고 비디오 포트를 통해 오버레이 믹서에 연결하는 필터는 IVPConfig 인터페이스를 구현해야 합니다. 오버레이 믹서는 IVPNotify 인터페이스를 구현합니다. 이러한 두 인터페이스를 사용하면 디코더가 필요한 오버레이 표면을 지정할 수 있으며 오버레이 믹서가 비디오 메모리에서 해당 표면의 위치를 디코더에 알릴 수 있습니다.

오버레이 믹서는 비디오 사각형의 크기를 올바르게 조정합니다. 비디오 캡처에는 미리 보기 이미지 크기 조정 및 인터리브된 비디오 프레임 캡처와 관련된 특정 문제가 포함됩니다. 하드웨어 비디오 캡처 디바이스용 필터 또는 WDM 드라이버를 개발하는 경우 이러한 항목에 대한 자세한 내용은 IVPConfigIVPNotify 참조 페이지를 참조하세요.

오버레이 믹서는 1394년 또는 USB 캡처 시나리오에서 사용되지 않습니다. PCI 버스를 통해 비디오 캡처에 사용됩니다.

Video Renderer 다운스트림 연결

오버레이 믹서에는 Video Renderer 필터에 연결하는 출력 핀이 있습니다. 이 경우 Video Renderer는 비디오를 렌더링하지 않습니다. 단순히 비디오 창을 관리합니다.

핀 연결은 IMemInputPin 인터페이스 대신 IOverlay 인터페이스를 사용합니다. Video Renderer는 오버레이 믹서의 창 핸들을 DirectDraw에 전달하여 사각형 클리핑을 관리합니다. 애플리케이션은 필터 그래프 관리자에서 IVideoWindowIBasicVideo2 인터페이스를 통해 Video Renderer를 제어할 수 있습니다.

DirectDraw 전용 모드

오버레이 믹서의 DirectDraw 전용 모드를 사용하면 게임이 화면의 일부에 비디오를 표시할 수 있습니다. 이 모드에서 오버레이 믹서는 비디오 렌더러에서 제공하는 창이 아니라 게임 애플리케이션에서 만든 DirectDraw 화면에 직접 비디오를 렌더링합니다. 이를 통해 게임은 색 키를 제어할 수 있습니다. 오버레이 믹서는 DirectDraw 전용 모드에서 하나의 입력 핀만 노출합니다. 즉, 이 모드에서는 줄 21 또는 DVD 하위 이미지의 혼합을 수행할 수 없습니다.

DirectDraw 전용 모드에서 Overlay Mixer를 사용하려면 오버레이 믹서의 인스턴스를 만들고 필터 그래프를 빌드하기 전에 IDDrawExclModeVideo 인터페이스에 대해 쿼리합니다. 그런 다음 IDDrawExclModeVideo::SetDDrawSurface 호출하여 렌더링을 위한 DirectDraw 표면을 지정합니다. 이 모드의 한 가지 중요한 제한 사항은 게임이 실제 비디오 비트에 액세스하지 못한다는 것입니다. idDrawExclModeVideo 사용하는 경우 애플리케이션은 기본 표면을 만들고 오버레이 믹서는 오버레이 표면을 만듭니다.

DirectDraw 전용 모드를 사용하여 창 없는 렌더링(예: 웹 페이지)을 수행할 수도 있지만 오버레이 믹서는 이 모드에서 혼합을 수행하지 않으므로 권장되지 않습니다. 즉, 줄 21 또는 하위픽처 데이터를 표시할 수 없습니다.

DirectShow 필터