Streamkonfigurationen

Android bietet Funktionen, mit denen Kameraclients die optimalen Kamerastreams für bestimmte Anwendungsfälle auswählen und dafür sorgen können, dass bestimmte Streamkombinationen vom Kameragerät unterstützt werden. Eine Streamkonfiguration bezieht sich Der im Kameragerät konfigurierte Kamerastream und eine Streamkombination verweist darauf. auf einen oder mehrere im Kameragerät konfigurierte Streams. Weitere Informationen zu diesen Funktionen finden Sie unter Empfohlene Streamkonfigurationen und API zum Abfragen von Kombinationen von Funktionen.

Referenzimplementierung

Es gibt eine anbieterseitige Referenzimplementierung der empfohlenen Konfigurationsstreams und die API zum Abfragen von Funktionen zur Streamkombination. Hier finden Sie Implementierung auf QCamera3HWI.cpp

Kameraanbieter können für bestimmte Anwendungsfälle empfohlene Streamkonfigurationen bewerben Schutzhüllen an Kamerakunden. Diese empfohlenen Streamkonfigurationen sind Teilmengen von StreamConfigurationMap und können Kameraclients bei der Auswahl optimaler Konfigurationen helfen.

Die StreamConfigurationMap enthält zwar umfassende Informationen zur Streamkonfiguration für Kameraclients, aber keine Informationen zu den Auswirkungen auf Effizienz, Stromverbrauch oder Leistung, die sich aus der Auswahl eines Streams ergeben. Kameraclients können frei zwischen allen möglichen Streamkonfigurationen wählen. In vielen Fällen führt dies jedoch dazu, dass Clients suboptimale Kamerakonfigurationen verwenden und Apps zeitaufwendige, umfassende Suchanfragen durchführen.

Auch wenn einige verarbeitete YUV-Formate erforderlich sind und unterstützt werden müssen, unterstützt das Kameragerät diese Formate möglicherweise nicht nativ. Dies führt zu einem zusätzlichen Verarbeitungsdurchlauf für die Formatkonvertierung und verringert die Effizienz. Die Größe und das entsprechende Seitenverhältnis können Auswirkungen, wodurch bestimmte Dimensionen in Bezug auf Macht und Leistung die Leistung.

Ihre empfohlenen Streamkonfigurationszuordnungen müssen im Vergleich zur StreamConfigurationMap nicht vollständig sein. Die vorgeschlagenen Konfigurationskarten müssen den Anforderungen im Abschnitt Implementierung entsprechen und können alle verfügbaren Formate, Größen oder anderen Werte aus StreamConfigurationMap enthalten. Ausgeblendete Formate, Größen oder andere Werte, die in StreamConfigurationMap nicht gefunden wurden können nicht in die empfohlenen Streamkonfigurationskarten aufgenommen werden.

Alle Tests bleiben unverändert und werden gemäß den empfohlenen Tests nicht gelockert. Streamkonfigurationen zu erstellen.

Die von der Kameraimplementierung empfohlenen Streamkonfigurationen sind optional und können vom Kameraclient ignoriert werden.

Implementierung

Führen Sie die folgenden Schritte aus, um diese Funktion zu implementieren.

Metadateneinträge

Um diese Funktion zu aktivieren, müssen die folgenden statischen Metadateneinträge in der HAL der Kamera vorhanden sein:

  • android.scaler.availableRecommendedStreamConfigurations: Die empfohlene Teilmenge von Streamkonfigurationen für bestimmte Anwendungsfälle. In der Erklärung werden Bitmaps verwendet, die die vorgeschlagenen Anwendungsfälle in Form von [1 << PREVIEW | 1 << RECORD..] angeben. Die Anwendungsfälle erweitern Reguläres Tupel (Format, Breite, Höhe, Eingabe) mit einem zusätzlichen Eintrag. Nicht vorhandene öffentliche Anwendungsfälle oder andere Bits, die im Bereich festgelegt sind [PUBLIC_END, VENDOR_START] sind unzulässig.

    Diese Informationen werden im Metadaten-Tag availableRecommendedStreamConfigurations gespeichert.

    Das folgende Beispiel zeigt ein Array für eine empfohlene Streamkonfiguration für ein Kameragerät, das nur 4K und 1080p unterstützt. Dabei werden beide Auflösungen für die Videoaufzeichnung bevorzugt, für die Vorschau wird jedoch nur 1080p empfohlen.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (nur verfügbar, wenn vom Gerät unterstützt): Die empfohlenen Streamkonfigurationen für den Tiefendatenraum für dieses Kameragerät. Ähnlich wie beim Metadateneintrag oben werden die vorgeschlagenen Anwendungsfälle in einer zusätzlichen Anwendungsfall-Bitmap angezeigt.

    Diese Informationen werden im Metadaten-Tag availableRecommendedInputOutputFormatsMap gespeichert.

  • android.scaler.availableRecommendedInputOutputFormatsMap (nur verfügbar, wenn vom Gerät unterstützt): Die Zuordnung der empfohlenen Bildformate, die für dieses Kameragerät für Eingabestreams vorgeschlagen werden, zu den entsprechenden Ausgabeformaten.

    Diese Informationen werden in den availableRecommendedDepthStreamConfigurations Metadaten-Tag.

Diese Informationen stehen Kameraclients über die recommendedStreamConfigurationMap der API erstellen.

Erforderliche Anwendungsfälle

Für die folgenden Anwendungsfälle müssen empfohlene Streamkonfigurationen bereitgestellt werden, die den entsprechenden Anforderungen entsprechen:

Anwendungsbeispiel Anforderung
PREVIEW Eine Vorschau darf nur verarbeitete Streamkonfigurationen ohne Aussetzer mit Ausgabeformaten wie YUV_420_888 und IMPLEMENTATION_DEFINED enthalten.
RECORD Ein Videoeintrag muss Streamkonfigurationen enthalten, die mit den angegebenen unterstützten Medien-Profilen mit dem IMPLEMENTATION_DEFINED-Format übereinstimmen.
VIDEO_SNAPSHOT Ein Video-Snapshot muss Streamkonfigurationen mit mindestens der maximalen RECORD-Auflösungen und nur mit der BLOB + DATASPACE_JFIF-Format/Datenraum-Kombination (JPEG). Die Konfigurationen sollten keine Vorschaufehler verursachen und mit 30 fps laufen können.
SNAPSHOT Snapshot-Stream-Konfigurationen müssen mindestens eine Konfiguration mit einer ähnlichen Größe enthalten android.sensor.info.activeArraySize mit dem BLOB + DATASPACE_JFIF-Format/Datenraum-Kombination (JPEG). Unter Berücksichtigung von Einschränkungen hinsichtlich Seitenverhältnis, Ausrichtung und anderer anbieterspezifischer Einschränkungen darf die Fläche der maximal empfohlenen Größe nicht weniger als 97 % der Sensorarrayfläche betragen.
ZSL (falls unterstützt) Empfohlene Konfigurationen von Eingabestreams müssen, sofern vom Kameragerät unterstützt, nur zusammen mit anderen verarbeiteten oder verzögerten Ausgabeformaten beworben werden.
RAW (falls unterstützt) Empfohlene Konfigurationen für Raw-Streams müssen nur RAW-basierte Ausgabeformate enthalten, sofern diese vom Kameragerät unterstützt werden.

Weitere Anwendungsfälle

Sie können zusätzliche empfohlene Konfigurationsstreams für Anwendungsfälle bereitstellen, die für Ihre Implementierung spezifisch sind.

Zertifizierungsstufe

Um die Implementierung der empfohlenen Konfigurationsstreams zu testen, führen Sie den folgenden CTS- und VTS-Tests:

API zum Abfragen von Funktionskombinationen

Ab Android 15 bietet die Android-Plattform um Funktionskombinationen abzufragen. Mit dieser API können Kamera-Clients abfragen, ob eine bestimmte Kombination von Funktionen vom Gerät unterstützt werden kann. Diese API ist notwendig, da die camera2 API verschiedene Funktionen wie 4K, 60 fps, HDR-Video, Ultra HDR, Ultraweitwinkel-Zoom und Stabilisierung als orthogonale Steuerelemente.

Voraussetzungen

Um die API zur Abfrage von Funktionskombinationen zu unterstützen, muss der Kamera-HAL Version 3 der ICameraDevice-Oberfläche. Weitere Informationen finden Sie im Abschnitt Implementierung.

Wenn die API unterstützt wird, muss die Vorschaustabilisierung unabhängig von anderen Funktionen erfolgen. Das bedeutet, dass für ein Kameragerät, das die Bildstabilisierung in der Vorschau unterstützt, der Rückgabewert von isStreamCombinationWithSettingsSupported für eine bestimmte Kombination derselbe Wert sein muss, wenn die Bildstabilisierung in der Vorschau aktiviert oder deaktiviert ist. Dadurch wird der Suchraum für Suchanfragen nach Kombinationen von Funktionen reduziert.

Bei Medienleistungsklasse 15 muss die primäre Rückkamera außerdem Unterstützung der Stabilisierung der Vorschau mit 10-Bit-HLG10-Vorschau für 1080p und 720p Vorschau und maximaler JPEG-Größe. Weitere Informationen zu diesen Anforderungen finden Sie im Abschnitt 2.2.7.2. Kamera der CDD.

Implementierung

Implementieren Sie Folgendes, um die API zum Abfragen von Funktionskombinationen zu unterstützen: APIs für Funktionskombinationsabfragen in Version 3 von ICameraDevice:

Bei Versionen vor Version 3 der ICameraDevice-Schnittstelle hat der HAL sollte die isStreamCombinationSupported .

Weitere Informationen zu den von der API abgefragten Funktionskombinationen finden Sie in der Dokumentation zu sessionConfigurationQueryVersion in system/media/camera/docs/metadata_definitions.xml

Eine Referenzimplementierung dieser Funktion finden Sie unter hardware/google/camera/devices/EmulatedCamera/hwl/

Öffentliche APIs

Apps können die folgenden öffentlichen APIs verwenden, um unterstützte Funktionskombinationen abzufragen für das Gerät:

  • CameraDevice.CameraDeviceSetup: Eine eingeschränkte Darstellung von CameraDevice, die zum Abfragen des Features verwendet werden kann -Kombinationen, ohne dass eine CameraDevice-Instanz erforderlich ist.

  • getCameraDeviceSetup: Erwirbt ein CameraDeviceSetup-Objekt für eine bestimmte Kamera-ID, wenn isCameraDeviceSetupSupported true zurückgibt.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Unterstützt Funktionskombinationsabfragen, wenn dieser Wert folgender Wert ist: VANILLA_ICE_CREAM oder höher.

  • OutputConfiguration: Eine Klasse, die die Kameraausgabe beschreibt, die eine verzögerte Oberfläche für Merkmalskombinationsabfragen mit niedriger Latenz.

  • SessionConfiguration: Eine Dienstklasse, die die Sitzungskonfiguration einschließlich Streamkombinationen und Sitzungsparameter beschreibt, die für Abfragen mit Kombinationen von Funktionen verwendet werden können.

Zertifizierungsstufe

Verwenden Sie die folgenden VTS-, CTS- und Camera ITS (CTS Verifier)-Tests, um die Implementierung dieser Funktion zu validieren:

VTS

CTS

Kamera-ITS