Post date: Nov 30, 2016 4:00:31 AM
VMR 는 복수의 입력 스트림을 렌더링 할 수 있다. 믹싱 모드로 불리는 이 설정으로, VMR 는 믹서와 콘포지타를 로드해, 렌더링의 전에 믹싱과 혼합을 실시한다. 믹싱 모드는, VMR 가 윈도우 모드와 윈도우레스모드의 어디에서 있어도 사용할 수 있다.
믹싱 모드를 사용하려면 , 그래픽 드라이버가 능력 플래그 DDCAPS_BLTFOURCC 및 DDCAPS_BLTSTRETCH (각각 색공간(color space)의 변환 및 확대 블리트)를 지원 할 필요가 있다. 거의 모든 새로운 그래픽 드라이버는 이러한 능력을 갖추고 있다. 게다가 드라이버는 현재의 표시 픽셀 깊이에 대한 Direct3D 렌더링 타겟의 생성을 지원 해야 한다. 표시가 24 비트/픽셀로 설정되어 있을 때, Direct3D 처리를 지원 하지 않는 장치가 있다. 더 자세한 정보는, DirectX Graphics SDK 의 문서를 참조할것.
주 : VMR 가 복수의 비디오 스트림을 믹싱 할 때 필터 그래프는 올바르고 시크 하지 않는다. 복수의 비디오 스트림을 시크 할 필요가 있는 경우, 같은 커스텀얼로케이터 프리젠터 개체를 공유하는 다른 필터 그래프를 생성 할 필요가 있다. VMRMulti 샘플 애플리케이션은 이 방법을 예시하고 있다.
복수 스트림용의 VMR-7 의 설정
VMR-7 를 사용해 복수의 입력 스트림을 렌더링 하려면 , 다음의 작업을 실시한다.
복수 스트림용의 VMR-9 의 설정
디폴트에서는, VMR-9 는 4 개의 입력 핀을 생성 한다. 5 개 이상의 비디오 스트림을 믹싱 하는 경우는, 입력 핀을 접속하기 전에 IVMRFilterConfig9::SetNumberOfStreams 를 호출하는 것. 알파, Z 순서, 위치 등, 스트림의 파라미터를 설정하려면 ,IVMRMixerControl9 인터페이스를 사용한다.
합성 공간에서의 비디오 직사각형의 배치와 이동
VMR 가 복수의 입력 스트림을 믹싱 할 때 각 스트림은 "합성 공간" 으로 불리는 정규화한 직사각형내에 각 스트림을 배치한다. 합성 공간내에서, 좌표 (0.0, 0.0) ~ (1.0, 1.0)는 표시되는 비디오 직사각형을 형성한다. 이 직사각형외에 있는 좌표는 클립 된다.
애플리케이션에서는, 입력 스트림에 대한 합성 공간의 목적지 직사각형을 변경하는 것으로, 그 스트림으로부터의 비디오의 이동이나 신축(스트레치)를 실시해, 특수 효과를 실행할 수 있다. 지정한 직사각형이 네이티브 비디오 직사각형과는 다른 사이즈인 경우, 네이티브 비디오는 사이즈에 맞추어 신축(스트레치) 한다. 목적지 직사각형은,IVMRMixerControl::SetOutputRect 메서드를 호출해 지정한다.
예를 들어, 스트림 0 (핀 0 에 대응한다)에 메인 비디오 스트림이 있어, 스트림 1 (핀 1 에 대응하기)에는 2 차적인 비디오가 있으면 상정한다. 스트림 1 은,{ -1. 0f, 0.0f, 0.0f, 1.0f } 의 정규화된 직사각형을 지정해, 완전하게 오프 스크린으로 배치할 수 있다. 다음에,SetOutputRect 를 연속해 호출해 직사각형의 좌측과 우측을 변경해, 스트림 1 을 표시 영역으로 이동할 수 있다.
타임 t+10 로, 스트림 1 으로부터의 비디오는 완전하게 표시된다. 이 예로, 스트림 1 의 네이티브 사이즈는 이동 나카호지 되고 있다. 또, 직사각형을 신축(스트레치) 시켜, 흥미로운 이펙트를 낼 수도 있다. 게다가 bottom 보다 top 의 값을 크게 하는 것으로 수직 방향으로 비디오를 역전하거나 right 보다 left 의 값을 크게 하는 것으로 수평 방향으로 비디오를 반전할 수 있다.