camera3_stream Strukturreferenz
#include < camera3.h >
Datenfelder | |
int | stream_type |
uint32_t | Breite |
uint32_t | Höhe |
int | Format |
uint32_t | Verwendungszweck |
uint32_t | max_buffers |
Leere * | priv |
android_dataspace_t | Datenraum |
int | Drehung |
Leere * | reserviert [7] |
detaillierte Beschreibung
camera3_stream_t:
Ein Handle für einen einzelnen Kameraeingangs- oder -ausgangsstream. Ein Stream wird durch das Framework durch seine Pufferauflösung und sein Format und zusätzlich durch die HAL mit den Gralloc-Nutzungs-Flags und der maximalen In-Flight-Pufferanzahl definiert.
Die Stream-Strukturen gehören dem Framework, aber Zeiger auf einen camera3_stream , der von configure_streams() an die HAL übergeben wird, sind bis zum Ende des ersten nachfolgenden configure_streams()-Aufrufs gültig, der diesen camera3_stream nicht als Argument enthält, oder bis zum Ende von der close()-Aufruf.
Alle vom camera3_stream -Framework gesteuerten Mitglieder sind unveränderlich, sobald camera3_stream an configure_streams() übergeben wird. Die HAL darf nur die HAL-gesteuerten Parameter während eines Aufrufs von configure_streams() ändern, mit Ausnahme des Inhalts des privaten Zeigers.
Wenn ein Aufruf von configure_streams() einen nicht schwerwiegenden Fehler zurückgibt, bleiben alle aktiven Streams gültig, als ob configure_streams() nicht aufgerufen worden wäre.
Der Endpunkt des Streams ist für das Kamera-HAL-Gerät nicht sichtbar. In DEVICE_API_VERSION_3_1 wurde dies geändert, um Consumer-Nutzungs-Flags für Streams zu teilen, bei denen die Kamera ein Produzent ist (Stream-Typen OUTPUT und BIDIRECTIONAL), siehe das Nutzungsfeld unten.
Felddokumentation
android_dataspace_t data_space |
Ein Feld, das den Inhalt des Puffers beschreibt. Das Format und die Pufferdimensionen definieren das Speicherlayout und die Struktur der Stream-Puffer, während dataSpace die Bedeutung der Daten innerhalb des Puffers definiert.
Bei den meisten Formaten definiert dataSpace den Farbraum der Bilddaten. Darüber hinaus gibt dataSpace für einige Formate an, ob bild- oder tiefenbasierte Daten angefordert werden. Einzelheiten zu Formaten und gültigen dataSpace-Werten für jedes Format finden Sie unter system/core/include/system/graphics.h.
Versionsinformation:
< CAMERA_DEVICE_API_VERSION_3_3:
Nicht definiert und sollte nicht aufgerufen werden. dataSpace sollte als HAL_DATASPACE_UNKNOWN angenommen werden, und der geeignete Farbraum usw. sollte aus den Verwendungs-Flags und dem Format bestimmt werden.
= CAMERA_DEVICE_API_VERSION_3_3:
Wird immer vom Kameradienst eingestellt. HAL muss diesen dataSpace verwenden, um den Stream für den richtigen Farbraum zu konfigurieren oder um zwischen Farb- und Tiefenausgaben auszuwählen, falls unterstützt. Die Datenraumwerte sind die Legacy-Definitionen in graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
Wird immer vom Kameradienst eingestellt. HAL muss diesen dataSpace verwenden, um den Stream für den richtigen Farbraum zu konfigurieren oder um zwischen Farb- und Tiefenausgaben auszuwählen, falls unterstützt. Die Datenraumwerte werden mithilfe der V0-Datenraumdefinitionen in graphics.h festgelegt
int-Format |
Das Pixelformat für die Puffer in diesem Stream. Format ist ein Wert aus der Liste HAL_PIXEL_FORMAT_* in system/core/include/system/graphics.h oder aus gerätespezifischen Headern.
Wenn HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED verwendet wird, wählt das Gralloc-Modul der Plattform ein Format basierend auf den Verwendungs-Flags aus, die von der Kameravorrichtung und dem anderen Endpunkt des Streams bereitgestellt werden.
<= CAMERA_DEVICE_API_VERSION_3_1:
Das Kamera-HAL-Gerät muss die Puffer überprüfen, die ihm im nachfolgenden Aufruf von register_stream_buffers() übergeben werden, um gegebenenfalls die implementierungsspezifischen Formatdetails zu erhalten.
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() wird nicht vom Framework aufgerufen, daher sollte die HAL den ISP und die Sensorpipeline nur basierend auf den Größen, Verwendungsflags und Formaten für die konfigurierten Streams konfigurieren.
uint32_t Höhe |
uint32_t max_buffers |
ungültig* priv |
int-Rotation |
Die erforderliche Ausgangsrotation des Streams, einer der camera3_stream_rotation_t-Werte. Dies muss von HAL zusammen mit der Strombreite und -höhe überprüft werden. Wenn die Drehung beispielsweise 90 Grad beträgt und die Stream-Breite und -Höhe 720 bzw. 1280 betragen, liefert der Kameradienst Puffer der Größe 720 x 1280, und HAL sollte ein 1280 x 720-Bild aufnehmen und das Bild um 90 Grad gegen den Uhrzeigersinn drehen. Das Rotationsfeld ist no-op, wenn der Stream-Typ eingegeben wird. Die Kamera HAL muss das Rotationsfeld für einen Eingangsstrom ignorieren.
<= CAMERA_DEVICE_API_VERSION_3_2:
Nicht definiert und darf nicht aufgerufen werden. HAL darf keine Drehung auf Ausgabebilder anwenden.
>= CAMERA_DEVICE_API_VERSION_3_3:
Wird immer vom Kameradienst eingestellt. HAL muss dieses Feld während der Stream-Konfiguration überprüfen und gibt -EINVAL zurück, wenn HAL eine solche Rotation nicht durchführen kann. HAL muss immer CAMERA3_STREAM_ROTATION_0 unterstützen, daher darf ein configure_streams()-Aufruf nicht wegen nicht unterstützter Rotation fehlschlagen, wenn das Rotationsfeld aller Streams CAMERA3_STREAM_ROTATION_0 ist.
int stream_type |
uint32_t-Nutzung |
Die Gralloc-Verwendungs-Flags für diesen Stream, wie von der HAL benötigt. Die Verwendungsflags sind in gralloc.h (GRALLOC_USAGE_*) oder in gerätespezifischen Headern definiert.
Für Ausgabeströme sind dies die HAL-Producer-Usage-Flags. Für Eingabeströme sind dies die Consumer Usage Flags von HAL. Die Verwendungs-Flags von dem Erzeuger und dem Verbraucher werden miteinander kombiniert und dann an das gralloc-HAL-Modul der Plattform weitergegeben, um die gralloc-Puffer für jeden Strom zuzuweisen.
Versionsinformation:
== CAMERA_DEVICE_API_VERSION_3_0:
Kein garantierter Anfangswert bei Übergabe über configure_streams(). HAL darf dieses Feld nicht als Eingabe verwenden und muss dieses Feld mit seinen Verwendungs-Flags überschreiben.
>= CAMERA_DEVICE_API_VERSION_3_1:
Für stream_type OUTPUT und BIDIRECTIONAL, wenn sie über configure_streams() übergeben werden, ist der Anfangswert davon die Verwendungs-Flags des Verbrauchers. Die HAL kann diese Verbraucher-Flags verwenden, um über die Stream-Konfiguration zu entscheiden. Für stream_type INPUT, wenn es über configure_streams() übergeben wird, ist der Anfangswert davon 0. Für alle Streams, die über configure_streams() übergeben werden, muss die HAL dieses Feld mit seinen Verwendungs-Flags überschreiben.
uint32_t Breite |
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
- hardware/libhardware/include/hardware/ camera3.h