camera2_device_ops Strukturreferenz

camera2_device_ops Strukturreferenz

#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(* construction_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 *, seller_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 zur Verwendung zu, der durch die Breite, Höhe und das Pixelformat des Ausgabepuffers definiert wird. Gibt bei Erfolg die ID des neuen Streams, die Gralloc-Nutzungsflags und die erforderliche Anzahl gleichzeitig erwerbbarer Puffer zurück. Fehlerbedingungen:

  • Anforderung einer Breite/Höhe/Format-Kombination, die von den statischen Eigenschaften des Sensors nicht unterstützt wird
  • Es werden zu viele Wiederverarbeitungsströme gleichzeitig konfiguriert.

Eingabeparameter:

  • Breite, Höhe, Format: Angabe für die Puffer, die über diesen Stream gesendet werden sollen. Das Format muss ein Wert aus der Liste HAL_PIXEL_FORMAT_* sein.
  • reprocess_stream_ops: Eine Struktur von Funktionszeigern zum Erfassen und Freigeben von Puffern für diesen Stream. Der zugrunde liegende Stream wird basierend auf der Nutzung und den max_buffers-Ausgaben konfiguriert.

Ausgabeparameter:

  • stream_id: Eine vorzeichenlose Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird bei eingehenden Anfragen zur Identifizierung des Streams und bei der Freigabe des Streams verwendet. Diese IDs werden getrennt von den Eingabestream-IDs nummeriert.
  • Consumer_usage: Die Gralloc-Nutzungsmaske, die das HAL-Gerät zum Konsumieren des angeforderten Datentyps benötigt. Dies wird bei der Zuweisung neuer Gralloc-Puffer für die Stream-Pufferwarteschlange verwendet.
  • max_buffers: Die maximale Anzahl an Puffern, die das HAL-Gerät möglicherweise gleichzeitig erhalten muss. Das Gerät darf nicht mehr Puffer als diesen Wert gleichzeitig erhalten haben.

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:

Weisen Sie einen neuen Eingabestream zur Verwendung zu, der die für einen vorhandenen Ausgabestream zugewiesenen Puffer verwendet. Das heißt, nachdem die HAL einen Puffer in den Ausgabestream eingereiht hat, sieht sie möglicherweise, dass derselbe Puffer von diesem Eingabe-Neuverarbeitungsstream an sie übergeben wird. Nachdem die HAL den Puffer wieder an den Wiederverarbeitungsstream freigegeben hat, wird er zur Wiederverwendung an die Ausgabewarteschlange zurückgegeben.

Fehlerbedingungen:

  • Verwendung eines Ausgabestreams mit ungeeigneter Größe/ungeeignetem Format als Grundlage für den Wiederverarbeitungsstream.
  • Es wird versucht, zu viele Wiederverarbeitungsströme gleichzeitig zuzuweisen.

Eingabeparameter:

  • Output_stream_id: Die ID eines vorhandenen Ausgabestreams, dessen Größe und Format für die erneute Verarbeitung geeignet sind.
  • reprocess_stream_ops: Eine Struktur von Funktionszeigern zum Erfassen und Freigeben von Puffern für diesen Stream. Der zugrunde liegende Stream verwendet dieselben Grafikpuffer-Handles wie der Ausgabestream.

Ausgabeparameter:

  • stream_id: Eine vorzeichenlose Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird bei eingehenden Anfragen zur Identifizierung des Streams und bei der Freigabe des Streams verwendet. Diese IDs werden getrennt von den Eingabestream-IDs nummeriert.

Der HAL-Client muss immer den Wiederverarbeitungsstream 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 zur Verwendung zu, der durch die Breite, Höhe, das Ziel und möglicherweise das Pixelformat des Ausgabepuffers definiert wird. Gibt bei Erfolg die ID des neuen Streams, die Gralloc-Nutzungsflags, die Mindestanzahl des Warteschlangenpuffers und möglicherweise das Pixelformat zurück. Fehlerbedingungen:

  • Anforderung einer Breite/Höhe/Format-Kombination, die von den statischen Eigenschaften des Sensors nicht unterstützt wird
  • Es werden zu viele Streams eines bestimmten Formattyps angefordert (z. B. 2 Bayer-Rohstreams).

Eingabeparameter:

  • Breite, Höhe, Format: Angabe für die Puffer, die über diesen Stream gesendet werden sollen. Format ist ein Wert aus der Liste HAL_PIXEL_FORMAT_*. Wenn HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED verwendet wird, wählt das Plattform-Gralloc-Modul ein Format basierend auf den Verwendungsflags aus, die von der Kamera-HAL und dem Verbraucher des Streams bereitgestellt werden. Der Kamera-HAL sollte die ihm im Aufruf von register_stream_buffers übergebenen Puffer überprüfen, um bei Bedarf das implementierte spezifische Format zu erhalten.
  • stream_ops: Eine Struktur von Funktionszeigern zum Abrufen und Einreihen von Puffern für diesen Stream. Der zugrunde liegende Stream wird basierend auf der Nutzung und den max_buffers-Ausgaben konfiguriert. Die Methoden in dieser Struktur dürfen erst nach der Rückkehr von allocate_stream aufgerufen werden.

Ausgabeparameter:

  • stream_id: Eine vorzeichenlose Ganzzahl, die diesen Stream identifiziert. Dieser Wert wird bei eingehenden Anfragen zur Identifizierung des Streams und bei der Freigabe des Streams verwendet.
  • Nutzung: Die Gralloc-Nutzungsmaske, die das HAL-Gerät zum Erzeugen des angeforderten Datentyps benötigt. Dies wird bei der Zuweisung neuer Gralloc-Puffer für die Stream-Pufferwarteschlange verwendet.
  • max_buffers: Die maximale Anzahl an Puffern, die das HAL-Gerät gleichzeitig aus der Warteschlange entfernen muss. Das Gerät darf nicht mehr Puffer als diesen Wert gleichzeitig aus der Warteschlange entfernen.

Definition in Zeile 632 der Datei camera2.h .

int(* construction_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. Dabei muss es sich um eine der Enumerationen CAMERA2_TEMPLATE_* handeln. Alle Anforderungssteuerungsfelder müssen enthalten sein, mit Ausnahme von android.request.outputStreams.

Der zurückgegebene Metadatenpuffer muss mit allocate_camera_metadata zugewiesen werden. Das Framework übernimmt den Besitz des Puffers.

Definition in Zeile 580 der Datei camera2.h .

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

Dump-Status der Kamera-Hardware

Definition in Zeile 801 der Datei camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Löschen Sie alle laufenden Erfassungen. Dazu gehören alle aus der Warteschlange entfernten Anforderungen (regulär oder erneut verarbeitet), die noch keine Ausgaben in einen Stream oder die Frame-Warteschlange gestellt haben. Teilweise abgeschlossene Aufnahmen müssen normal abgeschlossen werden. Es dürfen keine neuen Anforderungen aus der Anforderungswarteschlange entfernt werden, bis der Flush abgeschlossen ist.

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 (Aufnahmen/Neuverarbeitungen, deren Anfrage aus der Warteschlange entfernt wurde, die aber noch nicht in die Ausgabepipeline(n) eingereiht wurden). Vom Framework dürfen keine Streams freigegeben werden, bis der In-Progress-Zähler 0 beträgt.

Definition in Zeile 558 der Datei camera2.h .

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

Rufen Sie geräteinstanzspezifische Metadaten ab. Diese Metadaten müssen für eine einzelne Instanz des Kamerageräts konstant sein, können jedoch zwischen open()-Aufrufen unterschiedlich sein. Der zurückgegebene camera_metadata-Zeiger muss gültig sein, bis die Methode close() des Geräts aufgerufen wird.

Versionsinformation:

CAMERA_DEVICE_API_VERSION_2_0:

Nicht verfügbar. Das Framework greift möglicherweise nicht auf diesen Funktionszeiger zu.

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 *, seller_tag_query_ops_t **ops)

Rufen Sie Methoden ab, um Metadaten-Tag-Informationen zu Anbietererweiterungen abzufragen. Kann ops auf NULL setzen, wenn keine Anbietererweiterungs-Tags definiert sind.

Definition in Zeile 795 der Datei camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Benachrichtigen Sie das Gerät, dass die Anforderungswarteschlange nicht mehr leer ist. Darf nur aufgerufen werden, wenn dem ersten Puffer eine neue Warteschlange hinzugefügt wird oder nachdem die Quelle als Reaktion auf einen Aufruf aus der Warteschlange NULL 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)

Registrieren Sie Puffer für einen bestimmten Stream. Dies wird nach einem erfolgreichen allocate_stream-Aufruf aufgerufen und bevor die erste Anforderung, die auf den Stream verweist, in die Warteschlange gestellt wird. Diese Methode soll es dem HAL-Gerät ermöglichen, die Puffer zuzuordnen oder anderweitig für die spätere Verwendung vorzubereiten. num_buffers ist garantiert mindestens max_buffers (von 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, in die Warteschlange zurückgegeben zu werden. Wenn das Stream-Format auf HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED eingestellt wurde, sollte die Kamera-HAL die hier übergebenen Puffer überprüfen, um etwaige plattformprivate Pixelformatinformationen zu ermitteln.

Definition in Zeile 657 der Datei camera2.h .

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

Geben Sie einen Wiederverarbeitungsstream frei. Gibt einen Fehler zurück, wenn der Aufruf erfolgt, wenn 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)

Geben Sie einen Stream frei. Gibt einen Fehler zurück, wenn der Aufruf erfolgt, wenn 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)

Übergeben Sie Methoden der Ausgabe-Frame-Warteschlangenschnittstelle

Definition in Zeile 549 der Datei camera2.h .

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

Einrichtung eines Benachrichtigungsrückrufs

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 Schnittstellenmethoden für die Eingabeanforderungswarteschlange.

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ät auslösen. Dies wird verwendet, um spezielle Verhaltensweisen der Routinen der Kamera 3A auszulösen, wenn diese verwendet werden. Einzelheiten 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:
  • hardware/libhardware/include/hardware/ camera2.h