다음을 통해 공유


오버레이 믹서 필터

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

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

참고

이제 VPE 시나리오를 제외하고 비디오 혼합 렌더러 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(pin 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 전용 모드에서 오버레이 믹서 사용하려는 게임 개발자의 이점을 위해 제공됩니다.

오버레이 믹서 내부 작업

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

참고

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

 

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

비디오 디코더를 사용하여 업스트림 연결

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

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

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

오버레이 믹서는 비디오 사각형의 크기가 올바르게 조정되도록 합니다. 비디오 캡처에는 미리 보기 이미지 크기 조정 및 인터리브된 비디오 프레임 캡처와 관련된 특정 문제가 포함됩니다. 하드웨어 비디오 캡처 디바이스용 필터 또는 WDM 드라이버를 개발하는 경우 이러한 topics 대한 자세한 내용은 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 전용 모드에서 오버레이 믹서 를 사용하려면 필터 그래프를 빌드하기 전에 오버레이 믹서의 instance 만들고 IDDrawExclModeVideo 인터페이스에 대해 쿼리합니다. 그런 다음 IDDrawExclModeVideo::SetDDrawSurface 를 호출하여 렌더링할 DirectDraw 표면을 지정합니다. 이 모드의 한 가지 중요한 제한 사항은 게임이 실제 비디오 비트에 액세스하지 못한다는 것입니다. IDDrawExclModeVideo를 사용하는 경우 애플리케이션은 기본 표면을 만들고 오버레이 믹서는 오버레이 표면을 만듭니다.

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

DirectShow 필터