Strukturreferenz für camera2_device_ops

Strukturreferenz für camera2_device_ops

#include < camera2.h >

Datenfelder

int(*  set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
 
int(*  notify_request_queue_not_empty )(const struct camera2_device *)
 
int(*  set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
 
int(*  get_in_progress_count )(const struct camera2_device *)
 
int(*  flush_captures_in_progress )(const struct camera2_device *)
 
int(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
int(*  allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
 
int(*  register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
 
int(*  release_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
 
int(*  allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
 
int(*  release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)
 

Detaillierte Beschreibung

Definition in Zeile 527 der Datei camera2.h .

Felddokumentation

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

Weisen Sie einen neuen Eingabestream zu, der durch die Breite, Höhe und das Pixelformat des Ausgabepuffers definiert ist. Gibt bei Erfolg die ID des neuen Streams, die Gralloc-Nutzungsflags und die erforderliche Anzahl der gleichzeitig abrufbaren Puffer zurück. Fehlerbedingungen:

  • Anforderung einer Kombination aus Breite, Höhe und Format, die nicht in den statischen Eigenschaften des Sensors als unterstützt aufgeführt ist
  • Es werden zu viele Streams für die erneute Verarbeitung gleichzeitig konfiguriert.

Eingabeparameter:

  • width, height, format: Spezifikation für die Puffer, die über diesen Stream gesendet werden. „Format“ muss ein Wert aus der Liste „HAL_PIXEL_FORMAT_*“ sein.
  • reprocess_stream_ops: Eine Struktur von Funktionszeigern zum Abrufen und Freigeben von Puffern für diesen Stream. Der zugrunde liegende Stream wird anhand der Ausgaben „usage“ und „max_buffers“ konfiguriert.

Ausgabeparameter:

  • stream_id: Eine unge signede Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird in eingehenden Anfragen verwendet, um den Stream zu identifizieren und freizugeben. Diese IDs werden separat von den IDs der Eingabestreams nummeriert.
  • consumer_usage: Die Gralloc-Nutzungsmaske, die vom HAL-Gerät zum Verbrauch des angeforderten Datentyps benötigt wird. Dieser Wert wird zum Zuweisen neuer gralloc-Buffer für die Stream-Pufferwarteschlange verwendet.
  • max_buffers: Die maximale Anzahl von Puffern, die das HAL-Gerät möglicherweise gleichzeitig benötigt. Auf dem Gerät können nicht mehr Buffers gleichzeitig erfasst werden als dieser Wert.

Definition in Zeile 708 der Datei camera2.h .

int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream:

Einen neuen Eingabestream für die Verwendung zuweisen, der die für einen vorhandenen Ausgabestream zugewiesenen Puffer verwendet. Das heißt, nachdem die HAL einen Puffer in den Ausgabestream gestellt hat, wird ihr möglicherweise derselbe Puffer von diesem Eingabestream zur erneuten Verarbeitung übergeben. Nachdem der HAL den Puffer wieder für den Stream zur erneuten Verarbeitung freigegeben hat, wird er zur Wiederverwendung an die Ausgabewarteschlange zurückgegeben.

Fehlerbedingungen:

  • Verwendung eines Ausgabestreams mit unzulässiger Größe oder unzulässigem Format als Grundlage für den Stream zur erneuten Verarbeitung
  • Es wird versucht, zu viele Streams für die erneute Verarbeitung gleichzeitig zuzuweisen.

Eingabeparameter:

  • output_stream_id: Die ID eines vorhandenen Ausgabestreams, der eine Größe und ein Format hat, das für die erneute Verarbeitung geeignet ist.
  • reprocess_stream_ops: Eine Struktur von Funktionszeigern zum Abrufen und Freigeben von Puffern für diesen Stream. Der zugrunde liegende Stream verwendet dieselben Grafikbuffer-Handle wie der Ausgabestream.

Ausgabeparameter:

  • stream_id: Eine ungeschriebne Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird in eingehenden Anfragen verwendet, um den Stream zu identifizieren und freizugeben. Diese IDs werden separat von den IDs der Eingabestreams nummeriert.

Der HAL-Client muss den Stream für die erneute Verarbeitung immer freigeben, bevor er den Ausgabestream freigibt, auf dem er basiert.

Definition in Zeile 754 der Datei camera2.h .

int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allocate_stream:

Weisen Sie einen neuen Ausgabestream zu, der durch die Breite, Höhe, das Ziel und gegebenenfalls das Pixelformat des Ausgabepuffers definiert wird. Gibt bei Erfolg die ID des neuen Streams, die Gralloc-Nutzungsflags, die minimale Anzahl von Puffern in der Warteschlange und gegebenenfalls das Pixelformat zurück. Fehlerbedingungen:

  • Anforderung einer Kombination aus Breite, Höhe und Format, die nicht in den statischen Eigenschaften des Sensors als unterstützt aufgeführt ist
  • Es werden zu viele Streams eines bestimmten Formattyps angefordert (z. B. 2 Bayer-Raw-Streams).

Eingabeparameter:

  • width, height, format: Spezifikation für die Puffer, die über diesen Stream gesendet werden. „Format“ ist ein Wert aus der Liste HAL_PIXEL_FORMAT_*. Wenn HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED verwendet wird, wählt das gralloc-Modul der Plattform ein Format basierend auf den Nutzungsflags aus, die von der HAL der Kamera und dem Verbraucher des Streams bereitgestellt werden. Die Kamera-HAL sollte die Buffers prüfen, die ihr im Aufruf von register_stream_buffers übergeben werden, um bei Bedarf das implementierungsspezifische Format zu erhalten.
  • stream_ops: Eine Struktur von Funktionszeigern zum Abrufen und Einreihen von Puffern für diesen Stream. Der zugrunde liegende Stream wird anhand der Ausgaben „usage“ und „max_buffers“ konfiguriert. Die Methoden in dieser Struktur dürfen erst nach dem Rückgabewert von allocate_stream aufgerufen werden.

Ausgabeparameter:

  • stream_id: Eine unge signede Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird in eingehenden Anfragen verwendet, um den Stream zu identifizieren und freizugeben.
  • usage: Die Gralloc-Nutzungsmaske, die vom HAL-Gerät zum Erzeugen der angeforderten Daten erforderlich ist. Dieser Wert wird zum Zuweisen neuer gralloc-Buffer für die Stream-Pufferwarteschlange verwendet.
  • max_buffers: Die maximale Anzahl von Puffern, die das HAL-Gerät gleichzeitig aus der Warteschlange entfernen muss. Das Gerät kann nicht mehr als diesen Wert gleichzeitig aus der Warteschlange entfernen.

Definition in Zeile 632 der Datei camera2.h .

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

Erstellen Sie eine ausgefüllte Standardanfrage für Standard-Kameraanwendungsfälle.

Das Gerät muss eine vollständige Anfrage zurückgeben, die für den angeforderten Anwendungsfall konfiguriert ist. Dieser muss einer der CAMERA2_TEMPLATE_*-Enumtypen sein. Alle Felder zur Anfragesteuerung müssen enthalten sein, mit Ausnahme von android.request.outputStreams.

Der zurückgegebene Metadaten-Puffer muss mit allocate_camera_metadata zugewiesen werden. Das Framework übernimmt die Inhaberschaft des Buffers.

Definition in Zeile 580 der Datei camera2.h .

int(* dump)(const struct camera2_device *, int fd)

Dump-Status der Kamerahardware

Definition in Zeile 801 der Datei camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Alle laufenden Aufnahmen werden gelöscht. Dazu gehören alle aus der Warteschlange entfernten Anfragen (normale oder wiederholte Verarbeitung), für die noch keine Ausgabe in einen Stream oder die Frame-Warteschlange platziert wurde. Teilweise abgeschlossene Aufnahmen müssen wie gewohnt abgeschlossen werden. Bis zum Abschluss des Vorgangs können keine neuen Anfragen aus der Warteschlange entfernt werden.

Definition in Zeile 567 der Datei camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

Anzahl der Kameraanfragen, die derzeit vom Gerät verarbeitet werden (Aufzeichnungen/Wiederverarbeitungen, deren Anfrage aus der Warteschlange entfernt, aber noch nicht in die Ausgabepipeline(s) gestellt wurde). Es können keine Streams vom Framework freigegeben werden, bis die Anzahl der laufenden Anfragen 0 ist.

Definition in Zeile 558 der Datei camera2.h .

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

Geräteinstanzspezifische Metadaten abrufen Diese Metadaten müssen für eine einzelne Instanz des Kamerageräts konstant sein, können aber zwischen open()-Aufrufen variieren. Der zurückgegebene camera_metadata-Zeiger muss gültig sein, bis die Methode „device.close()“ aufgerufen wird.

Versionsinformationen:

CAMERA_DEVICE_API_VERSION_2_0:

Nicht verfügbar. Das Framework kann möglicherweise nicht auf diesen Funktionszeiger zugreifen.

CAMERA_DEVICE_API_VERSION_2_1:

Gültig. Kann vom Framework aufgerufen werden.

Definition in Zeile 820 der Datei camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

Methoden zum Abrufen von Informationen zu Metadaten-Tags von Anbietererweiterungen Wird möglicherweise auf NULL gesetzt, wenn keine Anbietererweiterungs-Tags definiert sind.

Definition in Zeile 795 der Datei camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Gerät benachrichtigen, dass die Anfragewarteschlange nicht mehr leer ist Muss nur aufgerufen werden, wenn dem ersten Puffer eine neue Warteschlange hinzugefügt wird oder nachdem die Quelle NULL als Antwort auf einen Dequeue-Aufruf zurückgegeben hat.

Definition in Zeile 544 der Datei camera2.h .

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)

Registriert Puffer für einen bestimmten Stream. Diese Funktion wird nach einem erfolgreichen Aufruf von „allocate_stream“ und bevor die erste Anfrage, die auf den Stream verweist, in die Warteschlange gestellt wird, aufgerufen. Mit dieser Methode kann das HAL-Gerät die Buffers für die spätere Verwendung zuordnen oder anderweitig vorbereiten. „num_buffers“ ist garantiert mindestens „max_buffers“ (aus „allocate_stream“), kann aber auch größer sein. Die Puffer sind bereits für die Verwendung gesperrt. Am Ende des Aufrufs müssen alle Puffer bereit sein, an die Warteschlange zurückgegeben zu werden. Wenn das Streamformat auf HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED festgelegt wurde, sollte die HAL der Kamera hier die übergebenen Puffer prüfen, um plattformspezifische Informationen zum Pixelformat zu ermitteln.

Definition in Zeile 657 der Datei camera2.h .

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

Einen Stream für die erneute Verarbeitung veröffentlichen Gibt einen Fehler zurück, wenn die Funktion aufgerufen wird, während „get_in_progress_count“ ungleich null ist, oder wenn die Stream-ID ungültig ist.

Definition in Zeile 765 der Datei camera2.h .

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

einen Stream veröffentlichen. Gibt einen Fehler zurück, wenn die Funktion aufgerufen wird, während „get_in_progress_count“ ungleich null ist, oder wenn die Stream-ID ungültig ist.

Definition in Zeile 667 der Datei camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

Methoden der Ausgabeframe-Warteschlangenoberfläche übergeben

Definition in Zeile 549 der Datei camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

Rückruf für Benachrichtigungen einrichten

Definition in Zeile 787 der Datei camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

Übergeben Sie Methoden der Eingabeanfrage-Warteschlangenoberfläche.

Definition in Zeile 536 der Datei camera2.h .

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

Asynchrone Aktivitäten auslösen Damit können Sie spezielle Verhaltensweisen der 3A-Routinen der Kamera auslösen, wenn sie verwendet werden. Weitere Informationen zu den Trigger-IDs und ihren Argumenten finden Sie in der Dokumentation zu CAMERA2_TRIGGER_* oben.

Definition in Zeile 779 der Datei camera2.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert: