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
Empfohlene Streamkonfigurationen
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
:
constructDefaultRequestSettings
: Erstellt die Standardeinstellungen für einen angegebenenCaptureRequest
-Typ. Der HAL kann dasICameraDeviceSession::constructDefaultRequestSettings
Implementierung.isStreamCombinationWithSettingsSupported
: Prüft, ob eine bestimmte Kombination aus Kamerastreams unterstützt wird mit Sitzungsparametern und zusätzlichenCaptureRequest
-Schlüsseln. Musstrue
für unterstützte Kombinationen undfalse
für nicht unterstützte Kombinationen zurückgeben Funktionskombinationen. Der HAL kann den ParameterisStreamCombinationSupported
Implementierung und Support hinzufügen, um dieCaptureRequest
-Einstellungen zu prüfen wird insessionParams
übergeben.getSessionCharacteristics
: verwendet einen unterstützten mit Sitzungsparametern kombinieren und den Messwert sitzungsspezifischen Eigenschaften.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Listet alle häufig verwendeten Sitzungskonfigurationen auf. Diese Konfigurationen werden durch Compliance-Tests verifiziert.
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 vonCameraDevice
, die zum Abfragen des Features verwendet werden kann -Kombinationen, ohne dass eineCameraDevice
-Instanz erforderlich ist.getCameraDeviceSetup
: Erhält einCameraDeviceSetup
-Objekt für eine bestimmte Kamera-ID, wennisCameraDeviceSetupSupported
gibttrue
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
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
Kamera ITS
- cts/apps/CameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py