Kamera-Begleit-Apps
In diesem Artikel werden Begleit-Apps beschrieben, eine Erweiterungsfunktion für Kamerahersteller zum Erstellen benutzerdefinierter Anwendungen, mit denen die Kamera konfiguriert und Standardbildeinstellungen angepasst werden können.
Einführung
Windows 11 bietet ein Begleit-App-Framework für Kameras, das es Herstellern ermöglicht, Anwendungen mit den folgenden Funktionen zu entwickeln:
Möglichkeit zum Anzeigen und/oder Ändern der gleichen Standardwerteinstellungen, die die Seite „Kameraeinstellungen“ unterstützt (z. B. Helligkeit, Kontrast, Hintergrundeffekte usw.).
Möglichkeit zum Registrieren, Aktualisieren oder Löschen von Standardwerteinstellungen für andere Kamerasteuerelemente, die Windows bekannt sind, aber nicht über die Seite „Kameraeinstellungen“ verfügbar gemacht werden (z. B. das Hue-Steuerelement).
Möglichkeit zum Registrieren, Aktualisieren oder Löschen von Standardwerteinstellungen für herstellereigene Kamerasteuerelemente (z. B. das Ein-/Aus-Steuerelement für den benutzerdefinierten Beleuchtungsanpassungseffekt eines Kameraherstellers).
Wenn eine Kamera eine zugehörige Begleit-App registriert, wird ein Eintrag zur Seite „Kameraeinstellungen“ hinzugefügt. Wenn die App installiert ist, kann sie über die Seite „Kameraeinstellungen“ gestartet werden. Andernfalls wird ein Link zum Microsoft Store zum Herunterladen angezeigt.
Begleit-Apps haben speziellen Zugriff auf eine API, mit der sie Standardwerte wie die Seite „Kameraeinstellungen“ registrieren, aktualisieren oder löschen können.
Terminologie und Voraussetzungen
Begriff | Definition |
---|---|
Begleit-App | Eine vom Kamerahersteller entwickelte benutzerdefinierte Anwendung, die zusätzlich zur Seite „Kameraeinstellungen“ die Konfiguration und Verwaltung einer Kamera ermöglicht. |
Aktueller Wert | Der Wert eines Kamerasteuerelements, das derzeit im ISP der Kamera aktiv ist und im temporären Speicher der Kamera gehalten wird. |
Standardwert | Ein Anfangswert eines Kamerasteuerelements, das auf der Festplatte gespeichert und für eine bestimmte Kamera, für ein bestimmtes Benutzerkonto und auf einem bestimmten PC gespeichert wird. |
HSA | Hardware Support App, ein von Microsoft unterstütztes Framework zum automatischen Herunterladen und Installieren von Hardware-bezogenen Apps aus dem Microsoft Store, wenn das Gerät angeschlossen ist. |
NPU | Neural Processing Unit, dedizierte Hardware, die für die Verarbeitung von Arbeitslasten künstlicher Intelligenz mit hohem Durchsatz und Effizienz entwickelt wurde. |
Windows Studio-Effekte | Eine Sammlung von Videoeffekten, die auf ausgewählten Windows-PCs mit NPUs verfügbar sind. |
UVC | USB-Videoklasse, die standardisierte Schnittstelle zur Steuerung und zum Streaming von über USB angeschlossenen Kameras. |
Anforderungen für Begleit-Apps
Begleit-Apps müssen paketierte Anwendungen mit einer Paketidentität sein. Die Begleit-App muss auch im Microsoft Store veröffentlicht werden, sodass Kunden über die Seite „Kameraeinstellungen“ zum Store weitergeleitet werden können, um die App zu installieren, falls diese noch nicht installiert ist.
Herkömmliche Desktopanwendungen ohne Paketidentität können nicht als Begleit-App verwendet werden.
Begleit-Apps als HSAs
Begleit-Apps müssen nicht auch als Hardware Support App konfiguriert werden, es wird jedoch dringend empfohlen. HSAs sind spezielle Apps im Microsoft Store, die einem bestimmten Hardwaregerät zugeordnet sind. Wenn dieses Gerät mit einem PC verbunden ist, wird die HSA bei Verfügbarkeit automatisch aus dem Microsoft Store heruntergeladen und installiert.
Zuordnen einer Begleit-App zu einer Kamera
Der Hersteller einer Kamera kann eine Begleit-App zuordnen, indem ein bestimmter Geräteeigenschaftsschlüssel mit dem Paketfamiliennamen (PFN) der Begleit-App aufgefüllt wird:
Name | Typ | Daten |
---|---|---|
SCSVCamPfn | REG_SZ | <PFN> |
Um den PFN der Begleit-App zu identifizieren, führen Sie Get-AppxPackage über PowerShell aus, z. B.:
Get-AppxPackage -Name CompanionAppName
Um die Begleit-App einer Kamera zuzuordnen, verwenden Sie einen MSOS-Deskriptor in einer UVC-Kamera oder die AddReg-Direktive in der INF des Kameratreibers. Verwenden der INF-Datei als Beispiel:
[SocCaptureSim.RearCamera.AddReg]
HKR,,SCSVCamPfn,,%AppPFN%
...
[Strings]
AppPFN="Contoso.CameraCompanion_xxxxxxxx00000"
Wenn eine Begleit-App einer Kamera zugeordnet ist, enthält die Seite „Kameraeinstellungen“ einen Link zur Begleit-App unter der Überschrift „Verwandte Einstellungen“ der Seite mit den spezifischen Einstellungen der Kamera.
Wenn die Begleit-App bereits installiert ist, wird ein Link „{companion app name} öffnen“ angezeigt. Beim Anklicken wird die App gestartet.
Wenn die Begleit-App noch nicht installiert ist, wird ein Link zum Starten des Microsoft Store zum Herunterladen und Installieren der App angezeigt.
Einer Kamera kann nur eine Begleit-App zugeordnet sein.
Starten einer Begleit-App über die Seite „Kameraeinstellungen“
Wenn die Seite „Kameraeinstellungen“ die Begleit-App startet, wird die symbolische Verknüpfung der Kamera über die Argumente Application.OnLaunched als Kontext übergeben.
Argument | type | Daten |
---|---|---|
cameraId | String | Symbolischer Link |
Mit dieser Funktion kann die Begleit-App die Einstellungen der richtigen Kamera in den folgenden Szenarien anzeigen:
Eine einzelne Begleit-App unterstützt mehrere Kameras auf einem einzigen System (z. B. unterstützt eine vom OEM bereitgestellte Anwendung die Vorder- und Rückkameras auf einem Tablet).
Ein Kunde verfügt über zwei der gleichen Kameras (oder dieselbe Marke), die mit seinem System verbunden sind und die von derselben Begleit-App verwaltet werden.
Starten der Seite „Kameraeinstellungen“ über eine Begleit-App
Eine Begleit-App kann die Windows-Kameraeinstellungsseite mit einem Deeplink-URI starten. Weitere Informationen finden Sie auf der Seite mit den Kameraeinstellungen.
Konfigurieren von Standardwerten aus Begleit-Apps
Eine Begleit-App kann die IMFCameraConfigurationManager-API verwenden, um die Standardwertkonfiguration des aktuellen Benutzers zu konfigurieren. Mit dieser API kann die Begleit-App alle konfigurierten Standardwerte lesen (z. B. die vom Benutzer auf der Seite „Kameraeinstellungen“ festgelegten Standardwerte), alle Standardwerte ändern, neue Standardwerte registrieren oder gespeicherte Standardwerte entfernen.
Standardwerte werden in der Datenbank des Systems als Paar aus einer KS-Eigenschafts-GUID und einem entsprechenden Wert registriert. Dadurch kann die Architektur unabhängig von der Definition der KS-Eigenschaft sein. Diese Flexibilität ermöglicht es einer Begleit-App, Standardwerte für jede der folgenden Einstellungen festzulegen, zu bearbeiten oder zu löschen:
Einstellungen, die auch über die Seite „Kameraeinstellungen“ konfiguriert werden können (z. B. Helligkeit, Kontrast, Hintergrundeffekte usw.)
Einstellungen für andere Kamerasteuerelemente, die Windows bekannt sind, aber nicht über die Seite „Kameraeinstellungen“ angezeigt werden (z. B. das Hue-Steuerelement).
Einstellungen für herstellereigene Kamerasteuerungen (z. B. die Ein-/Aus-Steuerung für den benutzerdefinierten Beleuchtungsanpassungseffekt eines Kameraherstellers)
Konfigurieren der Helligkeit aus einer Begleit-App
Es gibt einige Möglichkeiten, wie eine Kamera die effektive Helligkeit des aufgenommenen Bilds steuern kann. Beispielsweise kann die Helligkeit erhöht werden, indem eine einfache Verstärkung auf das Bild angewendet wird, oder sie kann erhöht werden, indem man die Belichtungszeit der Kamera erhöht.
Windows unterstützt ein älteres Helligkeitssteuerelement (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS), das mit einfachen Verstärkungssteuerelementen entworfen wurde. Windows unterstützt auch ein Belichtungskorrektur-Steuerelement (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION), das dazu dient, dem automatischen Belichtungsalgorithmus einer Kamera einen positiven oder negativen Belichtungswert vorzugeben.
Unabhängig davon, welche Helligkeitssteuerung von einer Kamera verwendet wird, sollte sie in der Kamera so implementiert werden, dass die Helligkeit im „zentrierten“ Zustand neutral ist und der Kunde durch Erhöhen oder Verringern des Werts einen Offset anwenden kann. Um die beste Bildqualität zu erzielen, wird dringend empfohlen, dass Kameras die Belichtungskorrektursteuerung unterstützen, sodass die Kamera angewiesen wird, eine feste positive oder negative Verzerrung unabhängig von den Lichtverhältnissen anzuwenden, wenn ein Kunde die Helligkeitssteuerung auf der Seite „Kameraeinstellungen“ oder in einer Begleit-App anpasst.
Weitere Informationen für das Verhalten der Helligkeitssteuerung auf der Seite „Kameraeinstellungen“, basierend darauf, welche Steuerung die Kamera implementiert, finden Sie auf der Seite Kameraeinstellungen. Wenn eine Begleit-App auch einen Helligkeitsschieberegler bietet, ist es wichtig, die Logik zu replizieren, um die Synchronisierung zwischen dem Helligkeitsschieberegler auf der Seite „Kameraeinstellungen“ und der Begleit-App sicherzustellen.
Das unten verknüpfte Begleit-App-Beispiel enthält eine Referenzimplementierung dieser Logik.
Überwachung auf Änderungen des aktuellen Echtzeitwerts
Wenn eine Begleit-App gleichzeitig mit der Seite „Kameraeinstellungen“ ausgeführt wird, ist es möglich, dass der Kunde einen Standardwert über die Seite „Kameraeinstellungen“ ändert, während die Begleit-App gleichzeitig im freigegebenen Modus ausgeführt wird, um eine Vorschau anzuzeigen. In diesem Fall ist es wünschenswert, dass die Begleit-App Änderungen am Standardwert der Steuerelemente überwacht, damit sie synchron bleiben kann.
Dazu kann die Begleit-App den IMFCameraControlMonitor verwenden, um Änderungen des aktuellen Werts von Steuerelementen (KS-Eigenschaften) zu überwachen. Diese Änderungen können aufgrund folgender Aktivitäten auftreten:
Eine Kameraanwendung (z. B. Microsoft Teams) verwendet die Kamera und ändert den aktuellen Wert eines Steuerelements.
Die Seite „Kameraeinstellungen“ verwendet die Kamera und ändert den Standardwert eines Steuerelements (wodurch auch der aktuelle Wert aktualisiert wird).
Diese API kann als Trigger verwendet werden, um den Standardwert für ein Steuerelement von Interesse mithilfe der IMFCameraConfigurationManager-API neu zu lesen und die Benutzeroberfläche zu aktualisieren, wenn sich Standardwerte geändert haben.
Beispiele für Begleit-Apps
Eine Beispiel-Begleit-App ist auf GitHub verfügbar: CameraSettingsExternalSettingsApp sample. In diesem Beispiel wird die Verwendung der IMFCameraConfigurationManager-API zum Ändern des Standardwerts für Kontrast, Helligkeit und Hintergrundsegmentierung veranschaulicht.
Eine weitere Beispielanwendung, die veranschaulicht, wie die IMFCameraControlMonitor-API zum Überwachen von Änderungen an Steuerelementen von Interesse verwendet werden kann, ist in GitHub:ControlMonitorApp-Beispiel verfügbar.
Siehe auch
CameraSettingsExternalSettingsApp-Beispiel
KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS
KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION