Freigeben über


Überlegungen zu Treiber-MFTs für Multi-Pin-Kameras (UWP-Geräte-Apps)

Important

Geräte-Metadaten sind veraltet und werden in einer zukünftigen Version von Windows entfernt. Informationen zum Ersatz dieser Funktionalität finden Sie unter Treiberpaketcontainermetadaten.

Windows bietet IHVs und System-OEMs die Möglichkeit, Videoverarbeitungs-Plug-Ins in Form einer Media Foundation Transform (MFT) zu erstellen, die als Kameratreiber MFT bezeichnet wird. Nach der Installation werden diese Treiber-MFTs von UWP-Geräte-Apps verwendet, um spezielle Videoeffekte zu aktivieren. Einige Kameras bieten separate Pins für Vorschau, Aufnahme und Bilder. Diese Multi-Pin-Kameras stellen entwicklern einzigartige Herausforderungen dar. In diesem Artikel werden einige Punkte behandelt, die Sie beim Entwickeln eines Kameratreibers MFT auf einer Multi-Pin-Kamera berücksichtigen sollten. Weitere Informationen zum Erstellen eines Treiber-MFT finden Sie unter Erstellen eines Kameratreibers MFT.

Introduction

Der Treiber MFT wird auch als MFT0 bezeichnet, um anzugeben, dass es der erste MFT ist, der im Quellleser ausgeführt wird. Eine separate Instanz von MFT0 ist an jeden Pin an der Aufnahmequelle angefügt. Für einige System-OEMs muss der AVStream-Aufnahmetreiber einen Vorschau-Pin, einen Aufnahme-Pin und einen noch angeheftenen Pin unterstützen. Dies bedeutet, dass es möglicherweise drei Instanzen von MFT0 gibt. Dieses Diagramm zeigt diese Architektur mit drei Kopien des IHV-Plug-InS MFT, eines für jeden Datenstrom.

Aufnahmeerweiterungs-Plug-In-Modell in mf.

Typische Szenarien für MFT0 können Herausforderungen darstellen. Zwei beliebte Funktionen für MFT0 sind:

  • Analysieren des Videostreams, um Der Kamera Feedback für eine verbesserte Aufnahme zu geben (z. B. hostbasierter Autofokus und automatische Belichtung)

  • Hinzufügen von Videoeffekten

One-pin webcam

In der Vergangenheit wurden Kameras windows als einzelne Aufnahmenadel ausgesetzt. Dieses Diagramm stellt dar, wie eine Ein-Pin-Webcam funktioniert:

one-pin webcam.

In diesem Fall funktionieren sowohl Kamerasteuerung als auch Videoeffekte so konzipiert, dass die Vorschau und die Stille aus dem Aufnahme-Pin stammen, nachdem Kamerasteuerung und Videoeffekte angewendet wurden. Das Ergebnis ist, dass die gespeicherte Datei oder der Chatkollege des Benutzers dieselben Videoeffekte sehen, die der Benutzer in der Vorschau sieht, und dass es nur eine Instanz der Kamerasteuerungsfunktion gibt. Wenn eine zugeordnete UWP-Geräte-App vorhanden ist, ist die App mit dem MFT0 auf dem Aufnahme-Pin verbunden, sodass MFT0 die Steuermeldungen aus der App abruft (d. h. der Benutzer).

Three-pin webcam

Je nach Anwendungsanforderungen kann eine Drei-Pin-Kamera bis zu drei Instanzen von MFT0 aufweisen. Dieses Diagramm stellt dar, wie eine Drei-Pin-Kamera funktioniert:

three-pin webcam.

Diese Situation stellt mehrere Herausforderungen dar. Im Falle einer hostbasierten Autoexposure-Lösung, die eine direkte Steuerung des Kamerasensors und der ISP-Einstellungen erfordert, versuchen drei MFT0s möglicherweise gleichzeitig, die Kamera zu steuern. Dadurch wird das Steuerungssystem unterbrochen.

Zweitens gibt es potenziell drei Instanzen von Videoeffekten. Abgesehen davon, dass die Kosten von dreimal den Berechnungen anfallen, müssen die drei Instanzen des MFT0 jetzt auf eine Weise kommunizieren, die sicherstellt, dass jeder Videoframe immer den gleichen Effekt im exakt gleichen Zustand hat. Andernfalls wird dem Benutzer nicht angezeigt, was gespeichert oder freigegeben wird.

Darüber hinaus gibt es zwei abschließende Verbundfaktoren:

  • Jede Instanz des MFT0 kann jederzeit erstellt oder heruntergefahren werden.

  • Die UWP-Geräte-App ist nur mit einer Instanz von MFT0 verbunden.

Compressed video

Eine Webcam oder ein System-OEM kann sich entscheiden, das Video zu komprimieren, bevor es auf dem Aufnahme-Pin angezeigt wird (d. s. auf der Webcam selbst). Durch das Deaktivieren der Komprimierung auf eine Webcam können PCs mit niedrigerer Leistung HD-Videos speichern und freigeben. Dieser komprimierte Videodatenstrom kann im Allgemeinen nicht analysiert werden, um die Kamerasteuerung zu unterstützen, oder Videoeffekte können angewendet werden. Dieses Szenario stellt die Herausforderung dar, alle Instanzen von MFT0 (und der Microsoft Store-Geräte-App, falls vorhanden) darauf aufmerksam zu machen, dass keine Effekte auf den Aufnahmedatenstrom angewendet werden. Dieses Diagramm stellt komprimiertes Video dar:

compressed video.

Wenn ein Benutzer einen Videoeffekt auf den Vorschaudatenstrom anwendet, kann er nicht auf den Aufnahmedatenstrom angewendet werden oder die trotzdem anheften. Daher sieht der Benutzer einen Videoeffekt, der nicht auf das gespeicherte oder gestreamte Video angewendet wird. Wenn der Vorschaudatenstrom angehalten wird, versucht die Microsoft Store-Geräte-App dann, eine Verbindung mit dem Aufnahmedatenstrom herzustellen. Wenn ein Benutzer komprimiertes Video streamt, ist dies für viele Features nicht zulässig.

Kommunikation zwischen MFT0-Instanzen

Wenn die drei Instanzen von MFT0 miteinander kommunizieren können, kann dies die meisten Probleme lösen. Wie diese Instanzen einander erkennen, liegt bei der IHV. Sobald alle MFT0s kommunizieren können, kann die Instanz der MFT0, die mit der Microsoft Store-Geräte-App verbunden ist, andere Instanzen darüber informieren, welcher Effekt angewendet wird, und ihren aktuellen Zustand. Außerdem können die drei Instanzen bestimmen, welche Instanz kamerasteuerung anwendet. Schließlich kann der Vorschau-Pin bestimmen, ob der Aufnahme-Pin codiertes Video streamt. Die Vorschau-Pin kann dann Videoeffekte deaktivieren.

Obwohl die Kommunikation zwischen Instanzen von MFT0 die wichtigsten Probleme mit der Benutzererfahrung löst, müssen drei Instanzen von Videoeffekten weiterhin gleichzeitig ausgeführt werden. Einige Videoeffekte können die meisten verfügbaren CPU-Ressourcen verwenden, insbesondere, wenn Video im Vollbildmodus gleichzeitig in der Vorschau angezeigt und aufgenommen wird. Dies sind ernste Probleme. Aus Leistungsgründen sollte jeder ISV überlegen, welche Verarbeitung einmal ausgeführt und für alle Instanzen von MFT0 freigegeben werden kann, z. B. gesichtserkennung.