Sitzungsparameter

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:

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