Streamkonfigurationen

Android bietet Funktionen für Kameraclients zur Auswahl der optimalen Kamera Streams für bestimmte Anwendungsfälle werden von der Kamera unterstützt. Eine Streamkonfiguration bezieht sich auf eine einzelne Der im Kameragerät konfigurierte Kamerastream und eine Streamkombination verweist darauf. auf einen oder mehrere im Kameragerät konfigurierte Streams. Weitere Informationen finden Sie unter empfohlenen Streamkonfigurationen und API zum Abfragen von Featurekombinationen

Referenzimplementierung

Es gibt eine anbieterseitige Referenzimplementierung der empfohlenen Konfiguration Streams und die API zur Abfrage von Streamkombinationen. Hier finden Sie Implementierung unter QCamera3HWI.cpp

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

Obwohl StreamConfigurationMap ausführliche Informationen zur Streamkonfiguration für Kameraclients, keine Informationen über Effizienz, Leistung oder Leistung liefert. die sich durch die Auswahl eines Streams gegenüber einem anderen ergeben. Kunden, die die Kamera App verwenden, können frei wählen Streamkonfigurationen zu optimieren. In vielen Fällen führt dies jedoch mit suboptimalen Kamerakonfigurationen und Apps, zeitaufwendige vollständige Suchen.

Obwohl einige verarbeitete YUV-Formate erforderlich sind und unterstützt, bietet die Kamera möglicherweise keine native Unterstützung für die Formate. Dieses führt zu einem zusätzlichen Verarbeitungsdurchgang für die Formatkonvertierung und reduziert Effizienz. Die Größe und das entsprechende Seitenverhältnis können Auswirkungen, wodurch bestimmte Dimensionen in Bezug auf Macht und Leistung die Leistung.

Die empfohlenen Streamkonfigurationskarten müssen nicht vollständig sein im Vergleich zu den StreamConfigurationMap erstellen. Die vorgeschlagenen Konfigurationszuordnungen müssen den Anforderungen im Implementierung und kann beliebige der verfügbaren Formaten, Größen oder anderen Werten StreamConfigurationMap übergeben. 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.

Für die Kameraimplementierung werden folgende Streamkonfigurationen empfohlen: optional sind und der Kameraclient sie ignorieren kann.

Implementierung

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

Metadateneinträge

Um diese Funktion zu aktivieren, muss der Kamera-HAL folgende statische Metadateneinträge:

  • android.scaler.availableRecommendedStreamConfigurations: Die empfohlene Teilmenge von Streamkonfigurationen für bestimmte Anwendungsfälle. Die -Deklaration Bitmaps verwendet, die die vorgeschlagenen Anwendungsfälle in Format [1 << PREVIEW | 1 << RECORD..]. 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 in den availableRecommendedStreamConfigurations Metadaten-Tag.

    Das folgende Beispiel zeigt ein Array für einen empfohlenen Stream. für eine Kamera konfigurieren, die nur 4K und 1080p unterstützt, wobei Beide Auflösungen werden für Videoaufnahmen bevorzugt, aber nur 1080p Vorschau vorgeschlagen.

    [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): der empfohlene Tiefendatenraum Vorgeschlagene Streamkonfigurationen für dieses Kameragerät. Ähnlich wie die über dem Metadateneintrag befindet, zeigt eine zusätzliche Bitmap für den Anwendungsfall die vorgeschlagene Anwendungsfälle.

    Diese Informationen werden in den availableRecommendedInputOutputFormatsMap Metadaten-Tag.

  • android.scaler.availableRecommendedInputOutputFormatsMap (verfügbar) nur wenn vom Gerät unterstützt): die Zuordnung empfohlener Bildformate, die werden für dieses Kameragerät für Eingabestreams vorgeschlagen, 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 folgende Anwendungsfälle müssen empfohlene Streamkonfigurationen angegeben werden und die entsprechenden Anforderungen erfüllen:

Anwendungsbeispiel Anforderung
PREVIEW Eine Vorschau darf nur nicht verzögerte verarbeitete Streamkonfigurationen enthalten mit Ausgabeformaten wie YUV_420_888 und IMPLEMENTATION_DEFINED.
RECORD Ein Videoeintrag muss Streamkonfigurationen enthalten, die den beworbenen Unterstützte Medienprofile mit dem Format IMPLEMENTATION_DEFINED.
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 bei 30 fps funktionieren.
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 Einschränkungen in Bezug auf das Seitenverhältnis, die Ausrichtung und andere anbieterspezifische Einschränkungen, Der Bereich der vorgeschlagenen maximalen Größe sollte nicht weniger als 97% des Sensors betragen Array-Größenbereich.
ZSL (falls unterstützt) Empfohlene Konfigurationen für Eingabestreams, sofern dies vom Kameragerät unterstützt wird darf nur zusammen mit anderen verarbeiteten oder verzögerten Outputs beworben werden. Formaten.
RAW (falls unterstützt) Empfohlene Raw-Stream-Konfigurationen, sofern vom Kameragerät unterstützt dürfen nur RAW-basierte Ausgabeformate enthalten.

Weitere Anwendungsfälle

Sie können zusätzliche empfohlene Konfigurationsstreams für Anwendungsfälle angeben 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 in der Implementierung.

Wenn die API unterstützt wird, muss die Vorschaustabilisierung orthogonal zu andere Funktionen. Bei einer Kamera, die die Vorschaufunktion Stabilisierung, der Rückgabewert von isStreamCombinationWithSettingsSupported für eine bestimmte Kombination muss bei der Vorschau-Stabilisierung derselbe Wert sein. aktiviert oder deaktiviert ist. Dadurch wird der Platz für die Suche nach Funktionskombinationen 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 maximale JPEG-Größe. Weitere Informationen zu diesen Anforderungen finden Sie unter 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: Erhält ein CameraDeviceSetup-Objekt für eine bestimmte Kamera-ID, wenn isCameraDeviceSetupSupported gibt true zurück.

  • 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: Dienstprogrammklasse, die die Sitzungskonfiguration einschließlich des Streams beschreibt und Sitzungsparametern, die für Feature- kombinierten Abfragen.

Zertifizierungsstufe

Verwenden Sie zur Validierung der Implementierung dieser Funktion die folgenden VTS, CTS und Kamera-ITS-Tests (CTS Verifier)

VTS

Logo: CTS

Kamera ITS