Mit der Funktion für Sitzungsparameter werden Verzögerungen reduziert, da Kamera-Clients Folgendes ermöglichen: die Teilmenge der kostspieligen Anfrageparameter aktiv konfigurieren, d. h. -Parameter als Teil der Initialisierungsphase der Erfassungssitzung. Damit empfangen Ihre HAL-Implementierungen die Client-Parameter während der der Streamkonfigurationsphase statt der ersten Erfassungsanfrage und kann je nach Werten, bereiten Sie die interne Pipeline vor effizient kommunizieren können.
In Android 10 können Sie die Leistung verbessern, indem Sie die optionale Abfragefunktion zur Neukonfiguration der Sitzung, um mehr Kontrolle über den Neukonfigurationslogik für interne Sitzungsparameter. Weitere Informationen finden Sie unter Abfrage zur Neukonfiguration der Sitzung:
Beispiele und Quelle
Eine Referenzsitzungsparameter-Implementierung ist bereits Teil des CameraHal Dieser HAL verwendet die alte Hal API. Die eingebettete CameraHal, die die Camera HIDL API implementiert, muss die entsprechende HIDL verwenden sessionParams (Sitzungsparameter) um während der Streamkonfiguration auf neue eingehende Sitzungsparameter zuzugreifen.
Kameraclients können die Schlüssel aller unterstützten Sitzungsparameter abfragen, indem sie Folgendes aufrufen:
getAvailableSessionKeys()
und schließlich ihre Anfangswerte
setSessionParameters()
Implementierung
Ihre CameraHal-Implementierung muss
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
in den entsprechenden Metadaten der statischen Kamera und stellen eine Teilmenge von Daten bereit,
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
Sie enthält eine Liste von Schlüsseln, die sich nur schwer auf einzelne Frames anwenden lassen
kann es bei Änderungen während der Aufnahmesitzung zu unerwarteten Verzögerungen kommen.
Typische Beispiele sind Parameter, die eine zeitaufwendige Hardware erfordern. Neukonfiguration oder Änderung der internen Kamera-Pipeline. Kontrolle über Sitzung In Erfassungsanfragen können weiterhin Parameter angewendet werden, aber die Clients sollten sich bewusst sein, und können mit Verzögerungen in der App rechnen.
Das Framework überwacht alle eingehenden Anfragen und ob es eine Änderung im eines Sitzungsparameters enthält, wird die Kamera intern neu konfiguriert. Das neue Die an CameraHal übergebene Streamkonfiguration enthält dann die aktualisierte Sitzung Parameterwerte festlegen, mit denen die Kamera-Pipeline effizient kommunizieren können.
Personalisierung
Sie können Tags in der Liste der verfügbaren Sitzungsparameter definieren. Diese wird auf der CameraHal-Seite. Diese Funktion ist nicht aktiv, wenn CameraHal die Die Liste der verfügbaren Sitzungsparameter ist leer.
Zertifizierungsstufe
CTS umfasst die folgenden neuen Fälle für das Testen von Sitzungsparametern:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
Nachdem ein bestimmter Parameter in der Liste der Sitzungsschlüssel aufgeführt ist, Der aktuelle Wert ist als Teil der Sitzungsparameter enthalten, die während des Streams übergeben werden Konfiguration auf der HAL-Ebene.
Die Sitzungsparameter müssen sorgfältig ausgewählt werden. Die Werte sollten sich nicht ändern zwischen Streamkonfigurationen häufig zu verwenden. Parameter, die sich ändern wie z. B. zur Erfassung der Absichten, nicht geeignet sind. Liste der Sitzungsparameter kann CTS-Fehler aufgrund übermäßiger interner die Neukonfiguration.
Abfrage zur Neukonfiguration der Sitzung
Android 10 führt eine optionale Sitzung ein
Funktion zur Neukonfiguration der Abfrage
die Leistung verbessern, da Neukonfigurationen interner Streams aufgrund von Sitzungen
Änderungen an den Parameterwerten können die Leistung beeinträchtigen. Um dieses Problem zu beheben,
HIDL
ICameraDeviceSession
Version 3.5 und höher unterstützt den
isReconfigurationRequired
-Methode, die eine differenzierte Steuerung des internen Sitzungsparameters ermöglicht.
Neukonfigurationslogik. Mit dieser Methode kann es zu einer Neukonfiguration des Streams kommen
wenn nötig.
Die Argumente für isReconfigurationRequired
die erforderlichen Informationen zu jedem Parameter für ausstehende Sitzungen angeben
Modifizierung, wodurch verschiedene gerätespezifische Anpassungen möglich sind.
Diese Funktion ist nur im Kameradienst und im Kamera-HAL implementiert. Es sind keine öffentlich zugänglichen APIs. Wenn diese Funktion implementiert ist, sollten Kameraclients Leistungsverbesserungen bei der Arbeit mit Sitzungsparametern.
Implementierung
Um Abfragen zur Neukonfiguration von Sitzungen zu unterstützen, müssen Sie die Methode
isReconfigurationRequired
um zu prüfen, ob eine vollständige Neukonfiguration des Streams für neue
Sitzungsparameterwerten.
Ändert der Client den Wert eines beworbenen Sitzungsparameters,
Framework die isReconfigurationRequired
. Abhängig von den spezifischen Werten entscheidet der HAL, ob eine vollständige
Eine Neukonfiguration des Streams ist erforderlich. Wenn der HAL false
zurückgibt,
überspringt das Framework die interne Neukonfiguration. Wenn der HAL true
zurückgibt,
konfiguriert die Streams neu und übergibt die neuen Sitzungsparameterwerte.
entsprechend anpassen.
Die Methode isReconfigurationRequired
kann vom Framework später aufgerufen werden.
bevor eine Anfrage mit neuen Parametern an den HAL gesendet wird und die Anfrage
kann vor dem Senden abgebrochen werden. Daher darf der HAL diese Methode nicht verwenden
, um ihr Verhalten irgendwie zu ändern.
Die HAL-Implementierung muss die folgenden Anforderungen erfüllen:
- Das Framework muss in der Lage sein, die Methode
isReconfigurationRequired
aufzurufen nach der Konfiguration einer aktiven Sitzung. - Dies darf keine Auswirkungen auf die Leistung ausstehender Kameraanfragen haben. In dürfen während der normalen Kamera Streaming.
Das Gerät und die HAL-Implementierung müssen die folgenden Leistungsmerkmale erfüllen Anforderungen:
- Die Kameraeinstellungen für Hardware und Software dürfen nicht geändert werden.
- Die Kameraleistung darf für Nutzer nicht sichtbar sein.
Das isReconfigurationRequired
-Methode verwendet die folgenden Argumente:
oldSessionParams
: Sitzungsparameter aus der vorherigen Sitzung. In der Regel die vorhandenen Sitzungsparameter.newSessionParams
: Neue Sitzungsparameter, die vom Client festgelegt werden.
Die erwarteten Rückgabestatuscodes sind:
OK
: Die erfolgreiche Neukonfiguration der Abfrage war erforderlich.METHOD_NOT_SUPPORTED
: Die Kamera unterstützt den Neukonfigurationsabfrage.INTERNAL_ERROR
: Die Neukonfigurationsabfrage kann aufgrund eines interner Fehler.
Folgende Werte werden zurückgegeben:
true
: Der Stream muss neu konfiguriert werden.false
: Eine Neukonfiguration des Streams ist nicht erforderlich.
Um eine Abfrage zur Neukonfiguration einer Sitzung zu ignorieren, gibt der HAL
METHOD_NOT_SUPPORTED
oder false
. Dadurch wird der Standard-Kameradienst
Verhalten, bei dem die Neukonfiguration des Streams für jeden Sitzungsparameter ausgelöst wird
ändern können.
Zertifizierungsstufe
Die Abfragefunktion für die Neukonfiguration der Sitzung kann mit dem VTS-Test validiert werden
Fall in
CameraHidlTest#configureStreamsWithSessionParameters