다중 핀 카메라의 드라이버 MFT에 대한 고려 사항(UWP 디바이스 앱)
Windows 8.1은 카메라 드라이버 MFT(Media Foundation Transform)의 형태로 비디오 처리 플러그 인을 만드는 기능을 IHV 및 시스템 OEM에 제공합니다. 설치되면 UWP 디바이스 앱에서 이러한 드라이버 MFT를 사용하여 특수 비디오 효과를 사용하도록 설정할 수 있습니다. 일부 카메라는 미리 보기, 캡처 및 스틸을 위한 별도의 핀을 제공합니다. 이러한 멀티 핀 카메라는 개발자에게 고유한 문제를 제기합니다. 이 항목에서는 멀티 핀 카메라에서 카메라 드라이버 MFT를 개발할 때 고려해야 할 몇 가지 사항에 대해 설명합니다. 드라이버 MFT를 만드는 방법에 대한 자세한 내용은 카메라 드라이버 MFT 만들기를 참조하세요.
소개
드라이버 MFT는 원본 판독기에서 작동하는 첫 번째 MFT임을 나타내기 위해 MFT0이라고도 합니다. MFT0의 별도 인스턴스는 캡처 원본의 모든 핀에 연결됩니다. 일부 시스템 OEM의 경우 AVStream 캡처 드라이버는 미리 보기 핀, 캡처 핀 및 스틸 핀을 지원해야 합니다. 즉, MFT0의 인스턴스가 세 개 있을 수 있습니다. 이 다이어그램은 IHV 플러그 인 MFT의 복사본 3개가 있는 이 아키텍처를 보여 줍니다. 각 스트림마다 하나씩.
MFT0의 일반적인 시나리오에서는 문제가 발생할 수 있습니다. MFT0에 사용되는 두 가지 함수는 다음과 같습니다.
비디오 스트림을 분석하여 향상된 캡처를 위해 카메라에 피드백을 제공(예: 호스트 기반 자동 포커스 및 자동 노출)
비디오 효과 추가
원핀 웹캠
지금까지 카메라는 단일 캡처 핀으로 Windows에 노출되었습니다. 이 다이어그램은 원핀 웹캠의 작동 방식을 나타냅니다.
이 경우 카메라 컨트롤과 비디오 효과가 적용된 후 미리 보기와 스틸이 캡처 핀에서 티-d이기 때문에 카메라 컨트롤과 비디오 효과 모두 디자인된 대로 작동합니다. 그 결과 저장된 파일 또는 사용자의 채팅 친구가 사용자가 미리 보기에서 보는 것과 동일한 비디오 효과를 볼 수 있으며 카메라 컨트롤 기능의 인스턴스는 하나뿐입니다. 연결된 UWP 디바이스 앱이 있는 경우 앱은 캡처 핀의 MFT0에 연결되므로 MFT0은 앱(즉, 사용자)에서 제어 메시지를 가져옵니다.
3핀 웹캠
3핀 카메라는 애플리케이션 요구 사항에 따라 MFT0 인스턴스를 3개까지 포함할 수 있습니다. 이 다이어그램은 3핀 카메라의 작동 방식을 나타냅니다.
이 상황은 몇 가지 과제를 제시합니다. 첫째, 카메라 센서 및 ISP 설정을 직접 제어해야 하는 호스트 기반 자동 노출 솔루션의 경우 3개의 MFT0이 동시에 카메라를 제어하려고 할 수 있습니다. 이렇게 하면 제어 시스템이 중단됩니다.
둘째, 비디오 효과의 세 가지 인스턴스가 있을 수 있습니다. 이제 MFT0의 세 인스턴스는 계산의 3배에 달하는 비용을 발생시키는 것 외에도 각 비디오 프레임이 항상 동일한 상태에서 동일한 효과를 발휘하도록 하는 방식으로 통신해야 합니다. 그렇지 않으면 사용자가 보는 항목은 저장되거나 공유되지 않습니다.
또한 두 가지 최종 복합 요소가 있습니다.
MFT0의 각 인스턴스는 언제든지 만들거나 종료할 수 있습니다.
UWP 디바이스 앱은 MFT0의 한 인스턴스에만 연결됩니다.
압축된 비디오
웹캠 또는 시스템 OEM은 캡처 핀(즉, 웹캠 자체)에 표시되기 전에 비디오를 압축하도록 선택할 수 있습니다. 압축을 웹캠으로 오프로드하면 저전력 PC가 HD 비디오를 저장하고 공유할 수 있습니다. 이 압축된 비디오 스트림은 일반적으로 카메라 컨트롤을 지원하기 위해 분석할 수 없으며 비디오 효과를 적용할 수도 없습니다. 이렇게 하면 캡처 스트림에 효과가 적용되지 않는다는 것을 인식하여 MFT0의 모든 인스턴스(및 Microsoft Store 디바이스 앱이 있는 경우)를 만드는 문제가 발생합니다. 이 다이어그램은 압축된 비디오를 나타냅니다.
사용자가 미리 보기 스트림에 비디오 효과를 적용하는 경우 캡처 스트림이나 스틸 핀에 적용할 수 없습니다. 따라서 사용자는 저장되거나 스트리밍된 비디오에 적용되지 않는 비디오 효과를 볼 수 있습니다. 미리 보기 스트림이 중지되면 Microsoft Store 디바이스 앱이 캡처 스트림에 연결을 시도합니다. 사용자가 압축 비디오를 스트리밍하는 경우 많은 기능이 허용되지 않습니다.
MFT0 인스턴스 간 통신
MFT0의 세 인스턴스가 서로 통신할 수 있는 경우 대부분의 문제를 해결할 수 있습니다. 이러한 인스턴스가 서로를 검색하는 방법은 IHV에 달려 있습니다. 모든 MFT0이 통신할 수 있게 되면 Microsoft Store 디바이스 앱에 연결된 MFT0 인스턴스가 다른 인스턴스에 적용 중인 효과와 현재 상태를 알 수 있습니다. 또한 세 인스턴스는 카메라 컨트롤을 적용하는 인스턴스를 결정할 수 있습니다. 마지막으로, 미리 보기 핀은 캡처 핀이 인코딩된 비디오를 스트리밍하는지 확인할 수 있습니다. 그러면 미리 보기 핀에서 비디오 효과를 사용하지 않도록 설정할 수 있습니다.
MFT0 인스턴스 간의 통신은 주요 사용자 환경 문제를 해결하지만 비디오 효과의 세 인스턴스는 여전히 동시에 실행되어야 합니다. 일부 비디오 효과는 특히 전체 화면 비디오를 미리 보고 동시에 캡처하는 경우 사용 가능한 대부분의 CPU 리소스를 사용할 수 있습니다. 이것은 심각한 문제입니다. 성능상의 이유로 각 ISV는 얼굴 감지와 같이 한 번 수행될 수 있는 처리를 고려하고 MFT0의 모든 인스턴스와 공유해야 합니다.