Camera2_device_ops Odniesienie do struktury
#include < camera2.h >
Pola danych | |
int(* | set_request_queue_src_ops )(const struktura kamera2_device *, const kamera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(stała struktura kamera2_device *) |
int(* | set_frame_queue_dst_ops )(stała struktura kamera2_device *, const kamera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(stała struktura kamera2_device *) |
int(* | Flush_captures_in_progress )(stała struktura kamera2_device *) |
int(* | const struct_default_request )(const struct kamera2_device *, int request_template, kamera_metadata_t **żądanie) |
int(* | allocate_stream )(const struktura kamera2_device *, uint32_t szerokość, uint32_t wysokość, int format, const kamera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *użycie, uint32_t *max_buffers) |
int(* | Register_stream_buffers )(const struktura kamera2_device *, uint32_t stream_id, int num_buffers, bufor_handle_t *bufory) |
int(* | release_stream )(stała struktura kamera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struktura kamera2_device *, uint32_t szerokość, uint32_t wysokość, uint32_t format, const kamera2_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 struktura kamera2_device *, uint32_t Output_stream_id, const kamera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(stała struktura kamera2_device *, uint32_t stream_id) |
int(* | wyzwalacz_akcja )(stała struktura kamera2_urządzenie *, uint32_t wyzwalacz_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(stała struktura kamera2_device *, kamera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(stała struktura kamera2_device *, sprzedawca_tag_query_ops_t **ops) |
int(* | zrzut )(const struct kamera2_device *, int fd) |
int(* | get_instance_metadata )(stała struktura kamera2_device *, kamera_metadata **instance_metadata) |
szczegółowy opis
Dokumentacja terenowa
int(* allocate_reprocess_stream)(const struktura kamera2_device *, uint32_t szerokość, uint32_t wysokość, uint32_t format, const kamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Przydziel do użycia nowy strumień wejściowy, zdefiniowany przez szerokość bufora wyjściowego, wysokość i format pikseli. W przypadku powodzenia zwraca identyfikator nowego strumienia, flagi użycia gralloc i wymaganą liczbę buforów, które można jednocześnie uzyskać. Warunki błędu:
- Żądanie kombinacji szerokości/wysokości/formatu, która nie jest wymieniona jako obsługiwana przez charakterystykę statyczną czujnika
- Prośba o jednoczesną konfigurację zbyt wielu strumieni ponownego przetwarzania.
Parametry wejściowe:
- szerokość, wysokość, format: Specyfikacja buforów przesyłanych przez ten strumień. Format musi być wartością z listy HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: Struktura wskaźników funkcji do pobierania i zwalniania buforów dla tego strumienia. Podstawowy strumień zostanie skonfigurowany na podstawie danych wyjściowych użycia i max_buffers.
Parametry wyjściowe:
- stream_id: Liczba całkowita bez znaku identyfikująca ten strumień. Ta wartość jest używana w przychodzących żądaniach w celu identyfikacji strumienia i podczas zwalniania strumienia. Identyfikatory te są numerowane oddzielnie od identyfikatorów strumieni wejściowych.
- Consumer_usage: Maska użycia gralloc potrzebna urządzeniu HAL do wykorzystania żądanego typu danych. Służy do alokacji nowych buforów graloc dla kolejki buforów strumieniowych.
- max_buffers: Maksymalna liczba buforów, które urządzenie HAL może potrzebować w tym samym czasie. Urządzenie nie może posiadać jednocześnie większej liczby buforów niż ta wartość.
int(* allocate_reprocess_stream_from_stream)(const struktura kamera2_device *, uint32_t Output_stream_id, const kamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
Przydziel do użycia nowy strumień wejściowy, który będzie korzystał z buforów przydzielonych dla istniejącego strumienia wyjściowego. Oznacza to, że po tym, jak warstwa HAL umieści bufor w strumieniu wyjściowym, może zobaczyć ten sam bufor przekazany jej z tego wejściowego strumienia ponownego przetwarzania. Gdy warstwa HAL zwolni bufor z powrotem do strumienia ponownego przetwarzania, zostanie on zwrócony do kolejki wyjściowej w celu ponownego użycia.
Warunki błędu:
- Wykorzystanie strumienia wyjściowego o nieodpowiednim rozmiarze/formacie jako podstawy strumienia ponownego przetwarzania.
- Próba przydzielenia zbyt wielu strumieni ponownego przetwarzania na raz.
Parametry wejściowe:
- Output_stream_id: Identyfikator istniejącego strumienia wyjściowego, który ma rozmiar i format odpowiedni do ponownego przetworzenia.
- reprocess_stream_ops: Struktura wskaźników funkcji do pobierania i zwalniania buforów dla tego strumienia. Strumień bazowy będzie korzystał z tych samych uchwytów buforów graficznych, co strumień wyjściowy.
Parametry wyjściowe:
- stream_id: Liczba całkowita bez znaku identyfikująca ten strumień. Ta wartość jest używana w przychodzących żądaniach w celu identyfikacji strumienia i podczas zwalniania strumienia. Identyfikatory te są numerowane oddzielnie od identyfikatorów strumieni wejściowych.
Klient HAL musi zawsze zwolnić strumień ponownego przetwarzania, zanim zwolni strumień wyjściowy, na którym jest oparty.
int(* allocate_stream)(const struktura kamera2_device *,uint32_t szerokość, uint32_t wysokość, int format, const kamera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *użycie, uint32_t *max_buffers) |
przydziel_strumień:
Przydziel do użycia nowy strumień wyjściowy, zdefiniowany przez szerokość bufora wyjściowego, wysokość, cel i ewentualnie format pikseli. Jeśli operacja się powiedzie, 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 charakterystykę statyczną czujnika
- Pytanie o zbyt wiele strumieni danego typu formatu (na przykład 2 strumienie Bayer).
Parametry wejściowe:
- szerokość, wysokość, format: Specyfikacja buforów przesyłanych przez ten strumień. Format to wartość z listy HAL_PIXEL_FORMAT_*. Jeśli używany jest HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, wówczas moduł gralloc platformy wybierze format w oparciu o flagi użycia dostarczone przez kamerę HAL i konsumenta strumienia. Kamera HAL powinna sprawdzić bufory przekazane jej w wywołaniu Register_stream_buffers, aby w razie potrzeby uzyskać format specyficzny dla implementacji.
- stream_ops: Struktura wskaźników funkcji do uzyskiwania i kolejkowania buforów dla tego strumienia. Podstawowy strumień zostanie skonfigurowany na podstawie danych wyjściowych użycia i max_buffers. Metody w tej strukturze nie mogą być wywoływane, dopóki nie zwróci wartości allocate_stream.
Parametry wyjściowe:
- stream_id: Liczba całkowita bez znaku identyfikująca ten strumień. Ta wartość jest używana w przychodzących żądaniach w celu identyfikacji strumienia i podczas zwalniania strumienia.
- użycie: maska użycia gralloc potrzebna urządzeniu HAL do wygenerowania żądanego typu danych. Służy do alokacji nowych buforów graloc dla kolejki buforów strumieniowych.
- max_buffers: Maksymalna liczba buforów, które urządzenie HAL może potrzebować usunąć z kolejki w tym samym czasie. Urządzenie nie może jednocześnie usuwać z kolejki większej liczby buforów niż ta wartość.
int(* conststruct_default_request)(const struct kamera2_device *, int request_template, kamera_metadata_t **request) |
Utwórz wypełnione żądanie domyślne dla standardowych przypadków użycia aparatu.
Urządzenie musi zwrócić pełne żądanie skonfigurowane tak, aby spełniało żądany przypadek użycia, który musi być jednym z wyliczeń CAMERA2_TEMPLATE_*. Muszą zostać uwzględnione wszystkie pola kontroli żądań, z wyjątkiem android.request.outputStreams.
Zwrócony bufor metadanych musi zostać przydzielony za pomocą allocate_camera_metadata. Struktura przejmuje własność bufora.
int(* dump)(const struct kamera2_device *, int fd) |
int(* Flush_captures_in_progress)(stała struktura kamera2_device *) |
Opróżnij wszystkie trwające przechwytywania. Obejmuje to wszystkie żądania usunięte z kolejki (zwykłe lub przetwarzane ponownie), które nie umieściły jeszcze żadnych wyników w strumieniu lub kolejce ramek. Częściowo ukończone przechwytywanie należy zakończyć normalnie. Żadne nowe żądania nie mogą być usuwane z kolejki żądań do czasu zakończenia opróżniania.
int(* get_in_progress_count)(stała struktura kamera2_device *) |
Liczba żądań kamery przetwarzanych w tej chwili przez urządzenie (przechwytywania/ponowne przetwarzanie, których żądania zostały usunięte z kolejki, ale nie zostały jeszcze umieszczone w kolejce potoków wyjściowych). Struktura nie może zwolnić żadnych strumieni, dopóki liczba postępów nie wyniesie 0.
int(* get_instance_metadata)(const struct kamera2_device *, kamera_metadata **instance_metadata) |
Uzyskaj metadane specyficzne dla instancji urządzenia. Te metadane muszą być stałe dla pojedynczej instancji urządzenia z kamerą, ale mogą się różnić w przypadku wywołań open(). Zwrócony wskaźnik Camera_metadata musi być ważny do czasu wywołania metody urządzenia Close().
Informacje o wersji:
CAMERA_DEVICE_API_VERSION_2_0:
Niedostępne. Framework może nie uzyskać dostępu do tego wskaźnika funkcji.
CAMERA_DEVICE_API_VERSION_2_1:
Ważny. Można wywołać przez framework.
int(* get_metadata_vendor_tag_ops)(stała struktura kamera2_device *, sprzedawca_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(stała struktura kamera2_urządzenie *) |
int(* Register_stream_buffers)(const struct kamera2_device *, uint32_t stream_id, int num_buffers, bufor_handle_t *bufory) |
Zarejestruj bufory dla danego strumienia. Jest to wywoływane po pomyślnym wywołaniu allocate_stream i przed umieszczeniem w kolejce pierwszego żądania odwołującego się do strumienia. Ta metoda ma na celu umożliwienie urządzeniu HAL mapowania lub innego przygotowania buforów do późniejszego użycia. Gwarantowana wartość num_buffers wynosi co najmniej max_buffers (z allocate_stream), ale może być większa. Bufory będą już zablokowane do użycia. Po zakończeniu wywołania wszystkie bufory muszą być gotowe do powrotu do kolejki. Jeśli format strumienia ustawiono na HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, warstwa HAL kamery powinna sprawdzić przekazane tutaj bufory, aby określić wszelkie informacje o formacie pikseli prywatnych platformy.
int(* release_reprocess_stream)(stała struktura kamera2_device *, uint32_t stream_id) |
int(* release_stream)(stała struktura kamera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struktura kamera2_device *, const kamera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(stała struktura kamera2_device *, kamera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struktura kamera2_device *, const kamera2_request_queue_src_ops_t *request_src_ops) |
int(* wyzwalacz_akcja)(stała struktura kamera2_urządzenie *, uint32_t wyzwalacz_id, int32_t ext1, int32_t ext2) |
Dokumentacja tej struktury została wygenerowana z następującego pliku:
- hardware/libhardware/include/hardware/ camera2.h