camera3_stream-Strukturreferenz
#include <
camera3.h
>
Datenfelder |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | format |
uint32_t | Nutzung |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | Drehung |
void * | reserved [7] |
Detaillierte Beschreibung
camera3_stream_t:
Ein Handle für einen einzelnen Kamera-Eingabe- oder -Ausgabestream. Ein Stream wird vom Framework durch seine Pufferauflösung und sein Format definiert. Zusätzlich wird er von der HAL mit den Gralloc-Nutzungsflags und der maximalen Anzahl von In-Flight-Puffern definiert.
Die Streamstrukturen gehören dem Framework, aber Verweise auf einen camera3_stream , der über „configure_streams()“ an die HAL übergeben wird, sind bis zum Ende des ersten nachfolgenden „configure_streams()“-Aufrufs gültig, der nicht diesen camera3_stream als Argument enthält, oder bis zum Ende des Aufrufs von „close()“.
Alle vom Framework gesteuerten Mitglieder von camera3_stream sind unveränderlich, sobald camera3_stream an configure_streams() übergeben wurde. Die HAL darf nur die von der 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 kritischen Fehler zurückgibt, bleiben alle aktiven Streams gültig, als wäre „configure_streams()“ nicht aufgerufen worden.
Der Endpunkt des Streams ist für das HAL-Gerät der Kamera nicht sichtbar. In DEVICE_API_VERSION_3_1 wurde dies geändert, um Nutzungsflags für Verbraucher in Streams zu teilen, in denen die Kamera ein Producer ist (OUTPUT- und BIDIRECTIONAL-Streamtypen). Weitere Informationen finden Sie unten im Feld „Nutzung“.
Felddokumentation
android_dataspace_t data_space |
Ein Feld, das den Inhalt des Buffers beschreibt. Die Format- und Pufferdimensionen definieren das Speicherlayout und die Struktur der Stream-Puffer, während „dataSpace“ die Bedeutung der Daten im Puffer definiert.
Bei den meisten Formaten definiert „dataSpace“ den Farbraum der Bilddaten. Bei einigen Formaten gibt dataSpace außerdem an, ob bild- oder tiefenbasierte Daten angefordert werden. Details zu den Formaten und gültigen dataSpace-Werten für jedes Format finden Sie unter system/core/include/system/graphics.h.
Versionsinformationen:
< CAMERA_DEVICE_API_VERSION_3_3:
Nicht definiert und sollte nicht darauf zugegriffen werden. Es wird davon ausgegangen, dass dataSpace HAL_DATASPACE_UNKNOWN ist und der entsprechende Farbraum usw. anhand der Nutzungsflags und des Formats bestimmt werden sollte.
= CAMERA_DEVICE_API_VERSION_3_3:
Wird immer vom Kameradienst festgelegt. HAL muss diesen Datenbereich verwenden, um den Stream für den richtigen Farbraum zu konfigurieren oder zwischen Farb- und Tiefenausgaben auszuwählen, sofern unterstützt. Die Datenraumwerte sind die alten Definitionen in graphics.h.
>= CAMERA_DEVICE_API_VERSION_3_4:
Wird immer vom Kameradienst festgelegt. HAL muss diesen Datenbereich verwenden, um den Stream für den richtigen Farbraum zu konfigurieren oder zwischen Farb- und Tiefenausgaben auszuwählen, sofern 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 Nutzungsflags aus, die vom Kameragerät und dem anderen Endpunkt des Streams bereitgestellt werden.
<= CAMERA_DEVICE_API_VERSION_3_1:
Das HAL-Gerät der Kamera muss die Puffer prüfen, die ihm im nachfolgenden Aufruf von register_stream_buffers() übergeben werden, um bei Bedarf die implementierungsspezifischen Formatdetails abzurufen.
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() wird vom Framework nicht aufgerufen. Daher sollte die HAL die ISP- und Sensorpipeline ausschließlich anhand der Größen, Nutzungsflags und Formate für die konfigurierten Streams konfigurieren.
uint32_t height |
uint32_t max_buffers |
void* priv |
int-Rotation |
Die erforderliche Ausgabedrehung des Streams, einer der Werte „camera3_stream_rotation_t“. Dieser Wert muss von HAL zusammen mit der Streambreite und -höhe geprüft werden. Wenn die Drehung beispielsweise 90 Grad beträgt und die Streambreite und -höhe jeweils 720 und 1.280 Pixel betragen, stellt der Kameradienst Puffer mit einer Größe von 720 × 1.280 bereit. HAL sollte dann ein Bild mit einer Größe von 1.280 × 720 aufnehmen und das Bild um 90 Grad gegen den Uhrzeigersinn drehen. Das Rotationsfeld hat keine Funktion, wenn der Streamtyp „input“ ist. Die HAL der Kamera muss das Rotationsfeld für einen Eingabestream 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 festgelegt. HAL muss dieses Feld während der Streamkonfiguration prüfen und gibt -EINVAL zurück, wenn HAL diese Drehung nicht ausführen kann. HAL muss immer CAMERA3_STREAM_ROTATION_0 unterstützen. Ein Aufruf von „configure_streams()“ darf also nicht bei nicht unterstützter Drehung fehlschlagen, wenn das Drehfeld aller Streams CAMERA3_STREAM_ROTATION_0 ist.
int stream_type |
uint32_t-Nutzung |
Die Gralloc-Nutzungsflags für diesen Stream, wie von der HAL benötigt. Die Nutzungsflags sind in gralloc.h (GRALLOC_USAGE_*) oder in gerätespezifischen Headern definiert.
Bei Ausgabestreams sind dies die Flags für die Verwendung des Erzeugers durch die HAL. Bei Eingabestreams sind dies die Flags für die Nutzernutzung der HAL. Die Nutzungsflags des Erzeugers und des Verbrauchers werden kombiniert und dann an das HAL-Modul „gralloc“ der Plattform übergeben, um die Gralloc-Buffer für jeden Stream zuzuweisen.
Versionsinformationen:
== CAMERA_DEVICE_API_VERSION_3_0:
Wenn das Feld über „configure_streams()“ übergeben wird, ist kein Anfangswert garantiert. HAL darf dieses Feld nicht als Eingabe verwenden und muss es mit seinen Nutzungsflags überschreiben.
>= CAMERA_DEVICE_API_VERSION_3_1:
Bei „stream_type“ OUTPUT und BIDIRECTIONAL ist der Anfangswert für diese Variable, wenn sie über „configure_streams()“ übergeben wird, die Nutzungsflags des Verbrauchers. Die HAL kann diese Flags verwenden, um die Streamkonfiguration zu bestimmen. Wenn „INPUT“ als stream_type über „configure_streams()“ übergeben wird, ist der Anfangswert 0. Für alle Streams, die über „configure_streams()“ übergeben werden, muss die HAL dieses Feld mit ihren Nutzungsflags überschreiben.
uint32_t width |
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
- hardware/libhardware/include/hardware/ camera3.h