Informacje o strukturze camera2_device_ops

Informacje o strukturze camera2_device_ops

#include < camera2.h >

Pola danych

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)
 

Szczegółowy opis

Definicja w wierszu 527 pliku camera2.h .

Dokumentacja pola

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:

Przydzielić nowy strumień danych wejściowych do użycia, zdefiniowany przez szerokość, wysokość i format pikseli bufora wyjściowego. W przypadku powodzenia zwraca identyfikator nowego strumienia, flagi użycia gralloc i wymaganą liczbę buforów do jednoczesnego pobierania. Warunki błędu:

  • żądanie kombinacji szerokości/wysokości/formatu, która nie jest wymieniona jako obsługiwana przez statyczne właściwości czujnika;
  • Prośba o skonfigurowanie zbyt wielu strumieni przetwarzania naraz.

Parametry wejściowe:

  • width, height, format: specyfikacja buforów do wysłania za pomocą tego strumienia. Format musi być wartością z listy HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: struktura wskaźników funkcji służących do pozyskiwania i zwalniania buforów dla tego strumienia. Podstawowy strumień zostanie skonfigurowany na podstawie wartości z wyjść usage i max_buffers.

Parametry wyjściowe:

  • stream_id: bez znaku, identyfikator strumienia. Ta wartość jest używana w przychodzących żądaniach do identyfikowania strumienia i w przypadku jego zwalniania. Te identyfikatory są numerowane oddzielnie od identyfikatorów strumienia danych wejściowych.
  • consumer_usage: maska użycia gralloc potrzebna urządzeniu HAL do użycia żądanego typu danych. Służy on do przydzielania nowych buforów gralloc do kolejki bufora strumienia.
  • max_buffers: maksymalna liczba buforów, które urządzenie HAL może uzyskać jednocześnie. Urządzenie nie może mieć więcej buforów uzyskanych w tym samym czasie niż ta wartość.

Definicja w wierszu 708 pliku 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:

Przydzielić nowy strumień wejściowy, który będzie używać buforów przypisanych do istniejącego strumienia wyjściowego. Oznacza to, że po umieszczeniu bufora w kolejce na strumieniu wyjściowym HAL może zobaczyć ten sam bufor przekazany mu z tego strumienia przetwarzania danych wejściowych. Gdy HAL zwolni bufor i przekaże go z powrotem do strumienia ponownego przetwarzania, zostanie on zwrócony do kolejki wyjściowej w celu ponownego użycia.

Warunki błędu:

  • Używanie strumienia wyjściowego o nieodpowiednim rozmiarze lub formacie jako podstawy strumienia do ponownego przetwarzania.
  • Próbuje przydzielić zbyt wiele strumieni do ponownego przetwarzania jednocześnie.

Parametry wejściowe:

  • output_stream_id: identyfikator istniejącego strumienia wyjściowego o odpowiednim rozmiarze i formacie do ponownego przetwarzania.
  • reprocess_stream_ops: struktura wskaźników funkcji służących do pozyskiwania i zwalniania buforów dla tego strumienia. Podstawowy strumień będzie używać tych samych uchwytów bufora graficznego co strumień wyjściowy.

Parametry wyjściowe:

  • stream_id: bez znaku, identyfikator strumienia. Ta wartość jest używana w przychodzących żądaniach do identyfikowania strumienia i w przypadku jego zwalniania. Te identyfikatory są numerowane oddzielnie od identyfikatorów strumienia danych wejściowych.

Klient HAL musi zawsze zwolnić strumień do ponownego przetwarzania, zanim zwolni strumień wyjściowy, na którym się on opiera.

Definicja w wierszu 754 pliku 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:

Przydzielić nowy strumień danych wyjściowych do użycia, zdefiniowany przez szerokość, wysokość i cel bufora wyjściowego oraz ewentualnie format pikseli. W przypadku powodzenia zwraca identyfikator nowego strumienia, flagi użycia gralloc, minimalną liczbę buforów kolejki i ewentualnie format pikseli. Warunki błędu:

  • żądanie kombinacji szerokości/wysokości/formatu, która nie jest wymieniona jako obsługiwana przez statyczne właściwości czujnika;
  • Przesyłanie zbyt wielu strumieni danego typu formatu (np. 2 strumienie Bayera w formacie RAW).

Parametry wejściowe:

  • width, height, format: specyfikacja buforów do wysłania za pomocą tego strumienia. Format to wartość z listy HAL_PIXEL_FORMAT_. Jeśli używana jest flaga HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, moduł gralloc platformy wybierze format na podstawie flag użycia dostarczonych przez interfejs HAL aparatu i konsumenta strumienia. Interfejs HAL aparatu powinien sprawdzić bufory przekazane mu w wywołaniu register_stream_buffers, aby w razie potrzeby uzyskać format specyficzny dla implementacji.
  • stream_ops: struktura wskaźników funkcji służących do uzyskiwania i umieszczania w kolejce buforów dla tego strumienia. Podstawowy strumień zostanie skonfigurowany na podstawie wartości z wyjść usage i max_buffers. Metody w tej strukturze mogą być wywoływane dopiero po zwróceniu wartości przez funkcję allocate_stream.

Parametry wyjściowe:

  • stream_id: bez znaku, identyfikator strumienia. Ta wartość jest używana w przychodzących żądaniach do identyfikowania strumienia i w przypadku jego zwalniania.
  • usage: maska użycia gralloc potrzebna urządzeniu HAL do wygenerowania żądanego typu danych. Służy on do przydzielania nowych buforów gralloc do kolejki buforów strumienia.
  • max_buffers: maksymalna liczba buforów, które urządzenie HAL może usunąć z kolejki jednocześnie. Urządzenie nie może jednocześnie usuwać z kolejki więcej buforów niż ta wartość.

Definicja w wierszu 632 pliku camera2.h .

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

Utwórz wypełnione domyślne żądanie w przypadku standardowych zastosowań aparatu.

Urządzenie musi zwrócić pełne żądanie skonfigurowane pod kątem wymaganego przypadku użycia, który musi być jednym z wyliczeń CAMERA2_TEMPLATE_. Należy uwzględnić wszystkie pola sterujące żądaniem, z wyjątkiem android.request.outputStreams.

Zwrócony bufor metadanych musi zostać przypisany za pomocą funkcji allocate_camera_metadata. Ramka przejmie własność bufora.

Definicja w wierszu 580 w pliku camera2.h .

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

stan sprzętu aparatu;

Definicja w wierszu 801 pliku camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

Wyczyść wszystkie trwające przechwytywania. Obejmuje to wszystkie żądania wyjęte z kolejki (zwykłe lub poddane ponownemu przetwarzaniu), które nie zostały jeszcze umieszczone w strumieniu lub kolejce klatek. Częściowo ukończone przechwytywania muszą zostać ukończone normalnie. Dopóki nie zostanie zakończone czyszczenie, z kolejki nie będą mogły być usuwane żadne nowe żądania.

Definicja w wierszu 567 w pliku camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

Liczba żądań dotyczących kamery przetwarzanych obecnie przez urządzenie (przechwycenia/ponowne przetworzenia, których żądanie zostało usunięte z kolejki, ale nie zostały jeszcze umieszczone w kolejkach na wyjściowych kanałach przetwarzania). Framework nie może uwolnić żadnych strumieni, dopóki liczba żądań w toku nie osiągnie wartości 0.

Definicja w wierszu 558 w pliku camera2.h .

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

Pobieranie metadanych dotyczących konkretnej instancji urządzenia. Te metadane muszą być stałe dla pojedynczego wystąpienia urządzenia z aparatem, ale mogą się różnić między wywołaniami open(). Zwrócony wskaźnik camera_metadata musi być prawidłowy do momentu wywołania metody close() urządzenia.

Informacje o wersji:

CAMERA_DEVICE_API_VERSION_2_0:

Niedostępne. Framework może nie mieć dostępu do tego wskaźnika funkcji.

CAMERA_DEVICE_API_VERSION_2_1:

Prawidłowe. Może być wywoływany przez platformę.

Definicja w wierszu 820 w pliku camera2.h .

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

Poznaj metody przesyłania zapytań o informacje o metadanych tagów rozszerzeń dostawcy. Jeśli nie są zdefiniowane żadne tagi rozszerzenia dostawcy, wartość ops może być ustawiona na NULL.

Definicja w wierszu 795 w pliku camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Powiadomienie urządzenia, że kolejka żądań nie jest już pusta. Musi być wywoływany tylko wtedy, gdy pierwszy bufor jest dodawany do nowej kolejki lub gdy źródło zwróciło NULL w odpowiedzi na wywołanie dequeue.

Definicja w wierszu 544 pliku camera2.h .

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

Rejestrowanie buforów dla danego strumienia. Ta metoda jest wywoływana po wywołaniu funkcji allocate_stream, które zakończyło się powodzeniem, ale zanim pierwsze żądanie odwołujące się do strumienia zostanie umieszczone w kolejce. Ta metoda ma umożliwić urządzeniu HAL mapowanie lub przygotowanie buforów na potrzeby późniejszego użycia. Wartość num_buffers jest co najmniej równa max_buffers (z allocate_stream), ale może być większa. Bufory będą już zablokowane. Na koniec połączenia wszystkie bufory muszą być gotowe do zwrócenia do kolejki. Jeśli format strumienia został ustawiony na HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, interfejs HAL aparatu powinien sprawdzić przekazane bufory, aby określić informacje o formatach pikseli prywatnych dla danej platformy.

Definicja w wierszu 657 pliku camera2.h .

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

Opublikuj ponownie przetworzony strumień. Zwraca błąd, jeśli jest wywoływany, gdy wartość get_in_progress_count jest niezerową liczbą lub jeśli identyfikator strumienia jest nieprawidłowy.

Definicja w wierszu 765 w pliku camera2.h .

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

Opublikuj strumień. Zwraca błąd, jeśli jest wywoływany, gdy wartość get_in_progress_count jest niezerową liczbą lub jeśli identyfikator strumienia jest nieprawidłowy.

Definicja w wierszu 667 pliku camera2.h .

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

Przekazywanie metod interfejsu kolejki klatek wyjściowych

Definicja w wierszu 549 pliku camera2.h .

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

Konfiguracja wywołania zwrotnego powiadomienia

Definicja w wierszu 787 pliku camera2.h .

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

Przekazywanie metod interfejsu kolejki żądań wejściowych.

Definicja w wierszu 536 pliku camera2.h .

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

uruchamiać działania asynchroniczne; Służy to do wywoływania specjalnych zachowań rutyn 3A aparatu podczas ich używania. Szczegółowe informacje o identyfikatorach wyzwalaczy i ich argumentach znajdziesz w dokumentacji CAMERA2_TRIGGER_* powyżej.

Definicja w wierszu 779 pliku camera2.h .


Dokumentacja tego typu danych została wygenerowana z tego pliku: