다음을 통해 공유


정사각형이 아닌 혼합

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

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

VMR-9가 둘 이상의 스트림을 혼합하는 경우 크기 조정이 발생할 수 있는 두 가지 지점이 있습니다. 믹서가 입력 스트림을 합성하는 경우와 할당자-발표자가 복합 이미지를 렌더링하는 경우입니다.

vmr 혼합 작업

이전 버전의 VMR-9는 비디오 스트림이 하나만 있는 경우에도 항상 정사각형(1:1) PAR(픽셀 가로 세로 비율)을 사용하여 입력 스트림을 합성했습니다. 입력 스트림에 제곱 픽셀이 아닌 픽셀이 있는 경우 불필요한 크기 조정 작업이 발생했습니다. 물론 최종 이미지 품질이 저하되므로 크기 조정을 최대한 피해야 합니다.

Windows XP 서비스 팩 2부터 VMR-9는 이중 크기 조정 문제를 방지하는 두 가지 방법을 지원합니다.

  • 사용자 지정 할당자-발표자를 구현하고 IVMRSurfaceAllocatorEx9 인터페이스를 지원합니다.
  • 정사각형이 아닌 혼합 모드를 사용합니다.

이 섹션에서는 제곱이 아닌 혼합 모드에 대해 설명합니다. 애플리케이션은 두 기술을 결합할 수 있습니다.

제곱이 아닌 혼합의 작동 방식

비제곱 혼합 모드에서 VMR-9는 하나의 입력 스트림을 대상 크기 및 PAR로 선택합니다. VMR의 믹서는 해당 스트림 또는 이미지 크기와 PAR이 동일한 다른 스트림에서 비디오를 스케일링하지 않습니다. 크기 또는 가로 세로 비율이 다른 스트림은 최종 출력 이미지 크기에 맞게 대상 PAR 및 letterboxed와 일치하도록 크기가 조정됩니다.

스트림 선택은 현재 혼합 모드에 따라 달라집니다.

  • YUV 혼합 모드는 핀 0에서 하나의 비디오 스트림으로 제한됩니다. (다른 핀에는 하위 이미지 또는 닫힌 캡션 스트림이 있을 수 있습니다.) 따라서 VMR-9는 항상 대상 이미지 크기와 PAR에 대해 핀 0을 선택합니다.
  • RGB 혼합 모드에서 VMR은 이미지 크기가 가장 큰 스트림을 선택합니다. 둘 이상이 있는 경우 z 순서가 가장 높은 항목을 선택합니다. 그리고 여전히 넥타이가 있는 경우 핀 번호가 가장 낮은 스트림을 선택합니다.

작업의 예

예제 1. 스트림 0은 720 x 480 픽셀이며 그림 가로 세로 비율은 16:9입니다. 스트림 1은 그림 가로 세로 비율이 4:3인 640 x 480 픽셀입니다.

이 예제에서 스트림 0은 이미지 크기가 가장 크므로 VMR은 RGB 혼합 모드 또는 YUB 혼합 모드에 관계없이 이 스트림을 선택합니다. PAR은 32:27(16:9/720:480)이므로 올바른 16:9 그림 가로 세로 비율을 생성하려면 이미지를 이 비율로 가로로 늘여야 합니다.

대상 PAR과 일치하기 위해 VMR 믹서는 역비(27:32)로 스트림 1의 크기를 조정하여 540 x 480 이미지를 생성합니다. 그런 다음 두 스트림이 한 표면에 합성됩니다. 결과 이미지를 올바르게 표시하려면 할당자 발표자가 16:9 그림 가로 세로 비율에 맞게 이미지를 가로로 확장해야 합니다.

예제 1.

예제 2. 스트림 0은 720 x 480 픽셀이며 그림 가로 세로 비율은 16:9입니다. 스트림 1은 그림 가로 세로 비율이 4:3인 1024 x 768픽셀입니다.

VMR-9가 YUV 혼합 모드를 사용하는 경우 항상 스트림 0을 선택합니다. 따라서 스트림 0의 PAR과 일치하도록 스트림 1에서 540 x 480 픽셀까지 늘입니다.

VMR-9가 RGB 혼합 모드를 사용하는 경우 해당 스트림의 이미지 크기가 가장 크므로 스트림 1을 대상으로 선택합니다. 스트림 0을 1024 x 576 픽셀의 이미지 크기로 확장합니다. 이 경우 복합 이미지의 PAR은 1:1이므로 할당자-발표자는 정사각형이 아닌 픽셀에 대해 수정할 필요가 없습니다. (대상 사각형을 고려하기 위해 비디오를 확장해야 할 수도 있습니다.)

정사각형이 아닌 혼합 모드 사용

다음 조건 중 하나에 해당하는 경우 정사각형이 아닌 혼합 모드를 사용하는 것이 좋습니다.

  • 애플리케이션은 VMR-9에 둘 이상의 비디오 스트림을 보내지 않습니다.
  • 애플리케이션은 DVD, TV 또는 ms-dvr 파일을 렌더링합니다. 또한 그래픽 하드웨어에서 지원하는 경우 이 경우 YUV 혼합 모드를 사용해야 합니다.

애플리케이션이 다양한 이미지 크기 또는 픽셀 가로 세로 비율을 가질 수 있는 여러 비디오 스트림을 혼합하는 경우 기본 정사각형 혼합 모드를 사용하는 것이 좋습니다.

정사각형이 아닌 혼합 모드를 구성하려면 필터 그래프를 중지하고 VMR-9에서 모든 입력 핀의 연결이 끊어져야 합니다. 그런 다음, MixerPref9_NonSquareMixing 플래그를 사용하여 IVMRMixerControl9::SetMixingPrefs 를 호출합니다.

DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);  
dwPrefs |= MixerPref9_NonSquareMixing;
pMixControl->SetMixingPrefs(dwPrefs);

참고

MixerPref9_NonSquareMixing 플래그를 MixerPref9_ARAdjustXorY 플래그와 결합하면 VMR-9는 MixerPref9_ARAdjustXorY 플래그를 무시합니다.

 

애플리케이션에서 정사각형이 아닌 혼합 모드의 사용자 지정 할당자-발표자를 사용하는 경우 복합 이미지에 사각형이 아닌 PAR이 있을 수 있습니다. 할당자-발표자는 이미지를 정사각형(1:1) PAR로 조정해야 합니다.

정적 비트맵

IVMRMixerBitmap9 인터페이스를 사용하여 정적 비트맵을 비디오에 혼합하는 경우 비트맵을 VMR 혼합 모드를 위해 두 번째 비디오 스트림으로 간주해야 합니다.

VMR은 비트맵이 대상과 동일한 PAR을 갖는 것으로 처리합니다. 대상의 픽셀 가로 세로 비율에 맞게 조정하기 위해 비트맵의 크기를 조정하지 않습니다. VMR의 기본 구성에서 대상에는 대부분의 비트맵과 일치하는 1:1 PAR가 있습니다. 제곱이 아닌 혼합 모드에서는 대상에 제곱 픽셀이 아닌 픽셀이 있을 수 있습니다. 비트맵이 올바르게 표시되도록 하려면 애플리케이션에서 PAR이 대상 PAR과 일치하는 이미지를 제공해야 합니다.

VMR 혼합 모드 사용