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

Windows 8.1 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 können diese Treiber-MFTs von UWP-Geräte-Apps verwendet werden, um spezielle Videoeffekte zu aktivieren. Einige Kameras bieten separate Pins für Vorschau, Aufnahme und Standbilder. Diese Multi-Pin-Kameras stellen Entwickler vor einzigartige Herausforderungen. In diesem Thema werden einige Punkte behandelt, die Sie beim Entwickeln eines Kameratreiber-MFT auf einer Multi-Pin-Kamera berücksichtigen sollten. Weitere Informationen zum Erstellen eines Treiber-MFT finden Sie unter Erstellen eines Kameratreiber-MFT.

Einführung

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 drei Instanzen von MFT0 geben kann. Dieses Diagramm zeigt diese Architektur mit drei Kopien des IHV-Plug-InS MFT, eines für jeden Datenstrom.

capture extension plug-in model 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

Webcam mit einem Pin

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 die Kamerasteuerung als auch die Videoeffekte wie geplant, da die Vorschau und die Standbilder nach der Anwendung der Kamerasteuerung und der Videoeffekte vom Aufnahmestift abgerufen werden. Das Ergebnis ist, dass die gespeicherte Datei oder der Chatkollege des Benutzers dieselben Videoeffekte sehen, die der Benutzer in der Vorschau sieht und dass nur eine Instanz der Kamerasteuerungsfunktion vorhanden ist. Wenn eine zugeordnete UWP-Geräte-App vorhanden ist, wird die App über den Erfassungspin mit dem MFT0 verbunden, sodass der MFT0 die Steuernachrichten von der App (d. h. dem Benutzer) erhält.

Webcam mit drei Pins

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. Erstens versuchen im Fall einer hostbasierten automatischen Belichtungslösung, die eine direkte Steuerung des Kamerasensors und der ISP-Einstellungen erfordert, möglicherweise drei MFT0s 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.

Komprimiertes Video

Eine Webcam oder ein System-OEM kann sich entscheiden, das Video zu komprimieren, bevor es auf dem Aufnahme-Pin (also auf der Webcam selbst) präsentiert wird. Durch das Deaktivieren der Komprimierung auf eine Webcam können PCs mit niedrigerer Leistung HD-Videos speichern und freigeben. Dieser komprimierte Videostream kann im Allgemeinen nicht zur Unterstützung der Kamerasteuerung analysiert werden, noch können Videoeffekte angewendet werden. Dies 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 mit der Microsoft Store-Geräte-App verbundene Instanz des MFT0 anderen Instanzen mitteilen, welcher Effekt angewendet wird und welchen aktuellen Status sie hat. Außerdem können die drei Instanzen bestimmen, welche Instanz die Kamerasteuerung übernimmt. 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 beanspruchen, insbesondere wenn Vollbildvideos gleichzeitig in der Vorschau angezeigt und aufgenommen werden. Dies sind ernste Probleme. Aus Leistungsgründen sollte jeder ISV überlegen, welche Verarbeitung einmal durchgeführt werden darf, beispielsweise die Gesichtserkennung, und mit allen Instanzen von MFT0 geteilt werden darf.