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
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ść.
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.
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ść.
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.
int(* dump)(const struct camera2_device *, int fd) |
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.
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.
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ę.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
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.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
Dokumentacja tego typu danych została wygenerowana z tego pliku:
- hardware/libhardware/include/hardware/ camera2.h