VMR의 좌표 매핑

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

이 섹션에서는 VMR이 최종 출력 이미지에 매핑하기 전에 원본 이미지에 적용되는 5가지 변환에 대해 설명합니다.

  1. 변환 T(Src) 는 원본 사각형을 대상 사각형에 매핑합니다. 미디어 형식의 VIDEOINFOHEADER 또는 VIDEOINFOHEADER2 구조체의 rcSourcercTarget 멤버에 의해 지정됩니다. 이 매핑은 VMR에 전달되는 원본 이미지를 전처리합니다.
  2. 변환 T(플래그) 는 미디어 샘플의 플래그로 지정된 모든 이미지 조작을 수행합니다. 여기에는 bob 인터레이스 플래그를 수용하기 위한 수직 변환 및 크기 조정과 같은 변환이 포함되었습니다. 인터레이스 변환은 이미지 높이를 두 배로 늘리고 홀수 필드에 있는 경우 이미지를 비디오 줄의 절반으로 변환할 수 있습니다.
  3. 변환 T(AR) 는 이미지 가로 세로 비율에 따라 이미지를 정사각형 픽셀로 조정합니다. VIDEOINFOHEADER 미디어 형식의 경우 가로 세로 비율은 이미지 크기에 따라 결정됩니다. VIDEOINFOHEADER2 형식의 경우 가로 세로 비율은 AMCONTROL_PAD_TO_16x9 또는 AMCONTROL_PAD_TO_4x3 플래그가 설정되지 않는 한 dwPictAspectRatioXdwPictAspectRatioY 필드에 의해 결정됩니다. 이 변환에서는 모니터 표시 설정이 모니터의 물리적 가로 세로 비율과 일치한다고 가정합니다. 예를 들어 사용자에게 가로 세로 비율이 4 x 3인 모니터가 있지만 디스플레이를 1280 x 768 픽셀(5 x 3)으로 설정하는 경우 이미지에 올바른 가로 세로 비율이 없습니다.
  4. 변환 T(Mix) 변환은 IVMRMixerControl 메서드에 지정된 정규화된 사각형을 사용하여 대상 이미지 내에 이미지를 배치합니다. 정규화된 사각형을 사용하면 애플리케이션이 원본 스트림의 위치를 서로 기준으로 배치하고 크기를 조정하는 방법을 구성할 수 있습니다. VMR은 모든 원본 이미지의 최대 차원을 계산하고 각 이미지를 전체 경계 사각형 내부에 가운데에 배치하여 대상 이미지를 계산합니다. 경계 사각형의 모서리에는 범위(0,0)가 (1,1)에 할당됩니다. 경계 사각형은 그래프가 실행되기 전에 고정되며 스트림이 추가되거나 삭제되더라도 일정하게 유지됩니다. 각 스트림의 대상 사각형은 범위(0,0)에서 (1,1) 범위 밖에 있을 수 있으며 여전히 유효합니다.
  5. 마지막으로 VMR의 IBasicVideo 인터페이스에서 원본 및 대상 사각형으로 지정된 매핑 T(Dst)에 의해 혼합 이미지의 일부를 변환할 수 있습니다. Allocator-Presenter 교체되고 IBasicVideo 인터페이스가 사용되지 않는 경우 애플리케이션은 IVMRWindowlessControl 인터페이스를 구현하고 좌표를 다시 2D 선형 공간에 매핑해야 합니다. DVD 탐색기로 반환되는 마우스 좌표도 이 공간에 있어야 합니다. 예를 들어 애플리케이션이 회전하는 큐브에 비디오를 렌더링하는 경우 창 없는 컨트롤에 대한 전체 디스플레이를 다시 보고하고 디스플레이를 기준으로 마우스 좌표를 반환합니다.

원본 데이터에서 최종 렌더러로의 전체 이미지 변환은 다음과 같습니다.

T = T(Src)* T(Flag)T(Ar)T(Mix)* T(Dst)*

where * 는 이미지가 해당 단계에서 대상 이미지로 잘려질 수 있음을 나타냅니다. 이러한 변환은 모두 아핀 변환이므로 VMR은 이를 단일 변환으로 결합할 수 있습니다.

변환의 역방향은 다음과 같습니다.

역 변환

T(Src) T(Flag) T(Ar) 요소는 원본 해상도를 기준으로 합니다. T(Mix) 요소에서 정규화된 원본 사각형은 측면 수정 이미지를 기준으로 합니다. 정규화된 대상 사각형은 출력 해상도를 기준으로 합니다. 다음 다이어그램은 이러한 관계를 보여줍니다.

이미지 변환 단계

DirectShow 필터 개발자용 VMR 사용