Camera2_request_queue_src_ops Odniesienie do struktury
#include < camera2.h >
Pola danych | |
int(* | request_count )(stała struktura kamery2_request_queue_src_ops *q) |
int(* | dequeue_request )(stała struktura kamera2_request_queue_src_ops *q, kamera_metadata_t **bufor) |
int(* | free_request )(stała struktura kamera2_request_queue_src_ops *q, kamera_metadata_t *old_buffer) |
szczegółowy opis
Żądaj protokołu kolejki wejściowej:
Framework przechowuje kolejkę i jej zawartość. Na początku kolejka jest pusta.
- Kiedy pierwszy bufor metadanych zostanie umieszczony w kolejce, struktura sygnalizuje urządzeniu, wywołując funkcję notify_request_queue_not_empty().
- Po otrzymaniu notify_request_queue_not_empty urządzenie musi wywołać dequeue(), gdy będzie gotowe do obsługi następnego bufora.
- Gdy urządzenie przetworzy bufor i będzie gotowe na następny bufor, musi ponownie wywołać metodę dequeue() zamiast czekać na powiadomienie. Jeśli nie ma już dostępnych buforów, dequeue() zwróci NULL. Po tym momencie, gdy bufor stanie się dostępny, framework musi ponownie wywołać funkcję notify_request_queue_not_empty(). Jeśli urządzenie otrzyma z kolejki zwrot NULL, nie musi ponownie wysyłać zapytań do kolejki, dopóki ze źródła nie zostanie odebrane wywołanie notify_request_queue_not_empty().
- Jeśli urządzenie wywołuje bufor_count() i otrzymuje 0, nie oznacza to, że framework zapewni wywołanie notify_request_queue_not_empty(). Struktura zapewni takie powiadomienie dopiero po otrzymaniu przez urządzenie wartości NULL z kolejki lub przy pierwszym uruchomieniu.
- Wywołanie dequeue() w odpowiedzi na notify_request_queue_not_empty() może znajdować się w tym samym wątku co wywołanie notify_request_queue_not_empty() i może być wykonane z poziomu wywołania notify.
- Wszystkie usunięte z kolejki bufory żądań muszą zostać zwrócone do platformy poprzez wywołanie free_request, także w przypadku wystąpienia błędów, zażądania opróżnienia urządzenia lub wyłączenia urządzenia.
Dokumentacja terenowa
int(* dequeue_request)(const struktura kamera2_request_queue_src_ops *q, kamera_metadata_t **bufor) |
Pobierz bufor metadanych z platformy. Zwraca OK, jeśli nie ma błędu. Jeśli kolejka jest pusta, zwraca NULL w buforze. W takim przypadku urządzenie musi poczekać na komunikat notify_request_queue_not_empty() przed ponowną próbą usunięcia z kolejki. Uzyskane w ten sposób bufory należy zwrócić do frameworka za pomocą metody free_request() .
int(* free_request)(const struktura Camera2_request_queue_src_ops *q, Camera_metadata_t *old_buffer) |
int(* request_count)(stała struktura kamery2_request_queue_src_ops *q) |
Uzyskaj liczbę buforów żądań oczekujących w kolejce. Może zwrócić CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS, jeśli aktualnie skonfigurowane jest żądanie powtarzające się (żądanie strumienia). Wywołanie tej metody nie ma wpływu na to, czy metoda notify_request_queue_not_empty() zostanie wywołana przez platformę.
Dokumentacja tej struktury została wygenerowana z następującego pliku:
- hardware/libhardware/include/hardware/ camera2.h