향상된 비디오 렌더러

[이 페이지에 설명된 구성 요소, 향상된 Video Renderer는 레거시 기능입니다. MediaPlayer 및 IMFMediaEngine 구성 요소를 통해 노출된 SVR(Simple Video Renderer)으로 대체되었습니다. 비디오 콘텐츠를 재생하려면 이러한 구성 요소 중 하나로 데이터를 보내고 새 비디오 렌더러를 인스턴스화하도록 허용해야 합니다. 이러한 구성 요소는 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 MediaPlayer 또는 하위 수준 IMFMediaEngine API를 사용하여 EVR 대신 Windows에서 비디오 미디어를 재생하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

향상된 EVR(비디오 렌더러)은 사용자의 모니터에 비디오를 표시하는 구성 요소입니다. EVR의 두 가지 버전이 있습니다.

  • Media Foundation 애플리케이션용 EVR 미디어 싱크입니다.
  • DirectShow 애플리케이션에 대한 EVR 필터입니다.

두 버전 모두 동일한 내부 개체를 사용하여 비디오를 렌더링하고 동일한 인터페이스를 많이 공유합니다.

EVR은 최대 16개의 비디오 스트림을 혼합할 수 있습니다. 첫 번째 입력 스트림을 참조 스트림이라고합니다. 참조 스트림은 항상 z 순서로 먼저 나타납니다. 모든 추가 스트림을 하위 스트림이라고 하며 참조 스트림 위에 혼합됩니다. 애플리케이션은 하위 스트림의 z 순서를 변경할 수 있지만 z 순서에서 첫 번째 하위 스트림은 변경할 수 없습니다.

그래픽 드라이버는 지원되는 비디오 형식을 결정하지만 일반적으로 다음으로 제한됩니다.

  • 참조 스트림: 픽셀당 알파가 없는 프로그레시브 또는 인터레이스된 YUV(예: NV12 또는 YUY2); 또는 점진적 RGB입니다.
  • 하위 스트림: AYUV 또는 AI44와 같이 픽셀당 알파가 있는 프로그레시브 YUV입니다.

사용 가능한 하위 스트림 형식은 참조 스트림의 형식에 따라 달라질 수 있습니다. 자세한 내용은 EVR 미디어 형식 협상을 참조하세요.

내부적으로 EVR은 믹서라는 개체를 사용하여 렌더링을 위해 입력 스트림의 프레임을 하나의 표면으로 합성합니다. 믹서는 또한 탈인터레이싱 및 색 보정을 수행합니다. 믹서의 출력은 최종 합성 비디오 프레임입니다. 발표자라는 두 번째 개체는 비디오 프레임을 디스플레이에 렌더링합니다. 발표자는 프레임이 렌더링되는 시기를 예약하고 Direct3D 디바이스를 관리합니다. 애플리케이션은 믹서 또는 발표자의 사용자 지정 구현을 제공할 수 있습니다.

출력 프레임 속도가 참조 스트림에 잠겨 있습니다. 하위 스트림이 새 프레임을 받을 때마다 믹서는 이를 유지합니다. 참조 스트림이 새 프레임을 받으면 믹서 복합은 서브스트림 프레임과 함께 프레임됩니다. (참조 스트림이 인터레이스되는 경우 전체 참조 프레임에는 둘 이상의 미디어 샘플이 필요할 수 있습니다.) 믹서가 참조 프레임을 기다리는 동안 하위 스트림이 둘 이상의 프레임을 수신할 수 있습니다. 이 경우 믹서는 단순히 이전 하위 스트림 프레임을 카드.

발표자는 Direct3D 디바이스를 만들기 때문에 DXVA(DirectX Video Acceleration) 서비스에 액세스해야 하는 다른 파이프라인 개체와 디바이스를 공유해야 합니다. 특히 EVR 믹서는 DXVA 비디오 처리 서비스를 사용하여 비디오를 디인터레이스하고 혼합합니다. EVR 외부에서 소프트웨어 디코더는 가속 비디오 디코딩에 DXVA를 사용할 수 있습니다. 발표자는 Direct3D 장치 관리자 통해 Direct3D 디바이스를 공유합니다. 다음 다이어그램은 EVR의 내부 아키텍처를 보여줍니다. (회색으로 음영 처리된 소프트웨어 디코더는 EVR의 일부가 아닙니다.)

architectural diagram showing the evr.

EVR 인터페이스

EVR은 다음 인터페이스를 지원합니다. 이러한 인터페이스 중 일부는 믹서 또는 발표자에 의해 구현됩니다. 각 인터페이스에 대해 참조 항목에서는 인터페이스에 대한 포인터를 가져오는 방법을 설명합니다.

인터페이스 설명
IEVRFilterConfig EVR 필터의 입력 핀 수를 설정합니다(DirectShow에만 해당).
IEVRFilterConfigEx EVR 필터를 구성합니다(DirectShow에만 해당).
IEVRTrustedVideoPlugin EVR 플러그 인이 보호된 비디오를 렌더링할 수 있도록 합니다.
IMFDesiredSample EVR 발표자가 믹서에서 특정 프레임을 요청할 수 있도록 합니다.
IMFQualityAdvise 품질 관리자가 EVR 비디오 품질을 조정할 수 있도록 합니다.
IMFTopologyServiceLookup 사용자 지정 믹서 또는 발표자가 EVR에서 인터페이스 포인터를 가져올 수 있도록 합니다.
IMFVideoDeviceID EVR 믹서 또는 발표자의 디바이스 식별자를 반환합니다.
IMFVideoDisplayControl EVR에서 비디오를 표시하는 방법을 제어합니다.
IMFVideoMixerBitmap 정적 비트맵 이미지를 비디오와 알파 혼합합니다.
IMFVideoMixerControl EVR(Enhanced Video Renderer)이 비디오 하위 스트림을 혼합하는 방법을 제어합니다.
IMFVideoMixerControl2 비디오 디인터레이싱에 대한 기본 설정을 제어합니다.
IMFVideoPositionMapper 입력 비디오 스트림의 위치를 출력 비디오 스트림의 해당 위치로 지도.
IMFVideoPresenter EVR 발표자가 노출합니다.
IMFVideoProcessor 조정, 노이즈 필터 및 세부 필터를 비롯한 비디오 처리를 제어합니다.
IMFVideoRenderer EVR에서 믹서 또는 발표자를 설정합니다.
IMFVideoSampleAllocator 비디오 샘플을 할당합니다.

 

섹션 내용

주제 설명
DirectShow EVR 필터 사용 DirectShow 애플리케이션에서 EVR을 사용하는 방법입니다.
EVR 미디어 싱크 사용 Media Foundation 애플리케이션에서 EVR을 사용하는 방법
비디오 표시 컨트롤 사용 EVR이 애플리케이션 창 내에 비디오를 표시하는 방법을 제어하는 방법입니다.
Video Mixer 컨트롤 사용 EVR 믹서가 작동하는 방식을 제어하는 방법입니다.
EVR 미디어 형식 협상 EVR이 입력으로 허용할 수 있는 비디오 형식을 결정하는 방법을 설명합니다.
사용자 지정 믹서 EVR에 대한 사용자 지정 믹서를 작성하는 방법입니다.
EVR 발표자를 작성하는 방법 EVR에 대한 사용자 지정 발표자를 작성하는 방법입니다.

 

오디오/비디오 재생