YUV 혼합 모드

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

이 항목은 Windows XP 서비스 팩 2 이상에 적용됩니다.

Windows XP 서비스 팩 2부터 VMR은 YUV 혼합 모드라는 혼합 모드를 지원합니다. 이 모드는 고급 TV 또는 DVD 애플리케이션에 가장 유용합니다. 통합 메모리 아키텍처 디자인을 사용하는 저가형 그래픽 하드웨어에서 더 나은 성능을 위해 VMR 믹서의 일부 성능을 교환합니다. YUV 혼합 모드는 VMR-7 및 VMR-9 모두에서 지원됩니다.

장점

YUV 혼합 모드에는 VMR에서 지원하는 원래 RGB 혼합 모드보다 렌더링 성능과 관련된 몇 가지 이점이 있습니다.

  • VMR이 YUV 혼합 모드인 경우 모든 인터레이스 해제 및 비디오 스트림 컴퍼지션 작업은 YUV 색 공간에서 수행됩니다. YUV 표면은 일반적으로 동일한 RGB 표면보다 50%에서 60% 적은 메모리 대역폭을 필요로 합니다.
  • 디인터레이싱 및 스트림 컴퍼지션은 그래픽 드라이버에 대한 단일 호출에 의해 수행됩니다. 드라이버는 그래픽 하드웨어의 다중 텍스처링 기능을 사용하여 메모리 대역폭을 추가로 절감할 수 있습니다.

모든 비디오 애플리케이션은 YUV 혼합 모드를 사용할 수 있지만 주로 두 가지 유형의 비디오 재생 애플리케이션을 위한 것입니다.

  1. 선택 자막 또는 텔레텍스트를 표시하는 TV 애플리케이션.
  2. DVD 응용 프로그램은 DVD 하위 사진 데이터 또는 선택 자막을 표시합니다.

제한 사항

VMR이 YUV 혼합 모드로 전환될 때 여러 제한 사항이 적용됩니다.

  • 스트림 0(입력 핀 0에 연결된 스트림)은 점진적이거나 인터레이스될 수 있습니다. 다른 모든 스트림은 점진적이어야 합니다.
  • 스트림 0에는 GUID_NULL(직조 모드)가 허용되지 않습니다.
  • DeinterlacePref_Weave 대체 모드로 사용할 수 없습니다. 이 경우 인터레이스 해제 디바이스가 생성되지 않을 수 있기 때문입니다. YUV 혼합 모드는 들어오는 비디오가 인터레이스되지 않은 경우에도 deinterlace 디바이스가 필요합니다.
  • 각 VMR 입력 스트림과 연결된 평면 알파 값은 변경할 수 없습니다.
  • 사용자는 연결된 비디오 스트림의 Z 순서를 변경할 수 없습니다. 기본 Z 순서는 핀 순서에서 가져옵니다.
  • 색 키 지정은 지원되지 않습니다.
  • 입력 핀 0은 비디오 스트림을 받아야 합니다.
  • 다른 입력 핀은 DVD 하위 사진, 선택 자막 또는 텔레텍스트와 같은 비디오 하위 스트림 데이터만 받을 수 있습니다.
  • 다른 입력 핀은 AYUV, AI44 및 IA44와 같은 픽셀당 알파 YUV 형식만 허용할 수 있습니다.
  • VMR의 입력 핀 중 어느 것도 RGB 형식을 허용할 수 없습니다.
  • 애플리케이션 제공 비트맵 이미지는 디스플레이에 프레젠테이션하기 전에 더 이상 비디오와 결합할 수 없습니다.
  • VMR의 믹서 "출력 사각형" 함수를 사용하여 개별 하위 스트림을 가로 또는 세로로 반전할 수 없습니다. "일반" 스트림 위치 조정 및 크기 조정이 지원됩니다.
  • 혼합 배경색( IVMRMixerControl::SetBackgroundClr로 지정됨)은 RGB 혼합 모드와 마찬가지로 RGB 색 공간에 여전히 지정됩니다.

Configuration

애플리케이션은 YUV 혼합 모드를 활용하도록 VMR을 명시적으로 구성해야 합니다. 원래 RGB 혼합 모드는 기본 혼합 모드로 유지됩니다. VMR-7에서 YUV 혼합 모드를 사용하도록 설정하려면 MixerPref_RenderTargetYUV 플래그를 사용하여 IVMRMixerControl::SetMixingPrefs 를 호출합니다. VMR의 입력 핀이 연결되기 전에 이 호출을 수행해야 합니다. VMR-9에서 YUV 혼합 모드를 사용하도록 설정하려면 MixerPref9_RenderTargetYUV 플래그를 사용하여 IVMRMixerControl9::SetMixingPrefs 를 호출합니다.

VMR-7이 새 YUV 혼합 모드를 지원하는지 확인하는 유일한 방법은 VMR을 해당 모드로 설정하는 것입니다. 호출이 성공하면 필요한 경우 VMR을 RGB 혼합 모드로 다시 전환할 수 있습니다. YUV 혼합 모드로 설정된 후에는 모든 입력 핀의 연결이 끊긴 후에만 VMR을 RGB 혼합 모드로 다시 변경할 수 있습니다.

YUV 혼합 모드에서는 SetMixingPrefs 메서드에 다음 플래그를 적용하여 GPU(그래픽 처리 장치)의 부하를 줄일 수 있습니다.

플래그 설명
VMR-7: MixerPref_DynamicSwitchToBOBVMR-9: MixerPref9_DynamicSwitchToBOB
bob deinterlacing으로 전환합니다.
VMR-7: MixerPref_DynamicDecimateBy2VMR-9: MixerPref_DynamicDecimateBy2
이미지를 가로 및 세로로 2 배씩 분리합니다.

 

필터 그래프가 실행되는 동안 이러한 플래그를 추가하거나 제거할 수 있습니다. VMR 믹서가 다음 비디오 프레임을 작성할 때 변경 내용이 적용됩니다. 플래그는 상호 배타적이지 않습니다. 이러한 설정은 이미지의 품질을 줄이므로 일반적으로 비디오 품질이 덜 중요한 경우에만 적용합니다(예: 비디오가 사용자 인터페이스의 작은 부분에서 재생되는 경우).

VMR 혼합 모드 사용