Informacje o strukturze camera2_request_queue_src_ops

Informacje o strukturze camera2_request_queue_src_ops

#include < camera2.h >

Pola danych

int(*  request_count )(const struct camera2_request_queue_src_ops *q)
 
int(*  dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
 
int(*  free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)
 

Szczegółowy opis

Protokół kolejki żądań wejściowych:

Platforma zawiera kolejkę i jej zawartość. Na początku kolejka jest pusta.

  1. Gdy pierwszy bufor metadanych zostanie umieszczony w kole, framework sygnalizuje urządzeniu, że tak się stało, wywołując notify_request_queue_not_empty().
  2. Po otrzymaniu komunikatu notify_request_queue_not_empty urządzenie musi wywołać dequeue() po tym, jak będzie gotowe do obsługi następnego bufora.
  3. Gdy urządzenie przetworzy bufor i będzie gotowe do przetworzenia kolejnego, musi ponownie wywołać dequeue(), zamiast czekać na powiadomienie. Jeśli nie ma już dostępnych buforów, dequeue() zwróci NULL. Gdy bufor stanie się dostępny, framework musi ponownie wywołać funkcję notify_request_queue_not_empty(). Jeśli urządzenie otrzyma wartość NULL z dequeue, nie musi ponownie wysyłać zapytania do kolejki, dopóki nie otrzyma wywołania notify_request_queue_not_empty() od źródła.
  4. Jeśli urządzenie wywoła funkcję buffer_count() i otrzyma wartość 0, nie oznacza to, że framework wywoła funkcję notify_request_queue_not_empty(). Takie powiadomienie zostanie wysłane tylko wtedy, gdy urządzenie otrzyma NULL z kolejki lub podczas uruchamiania.
  5. 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ć wykonywane z poziomu wywołania notify.
  6. Wszystkie bufory żądań usunięte z kolejki muszą zostać zwrócone do frameworku przez wywołanie funkcji free_request, w tym w przypadku wystąpienia błędów, żądania wyczyszczenia urządzenia lub gdy urządzenie jest wyłączane.

Definicja w wierszu 220 pliku camera2.h .

Dokumentacja pola

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

Pobierz bufor metadanych z ramy. Zwraca wartość OK, jeśli nie ma błędów. Jeśli kolejka jest pusta, zwraca NULL w buforze. W takim przypadku urządzenie musi poczekać na wiadomość notify_request_queue_not_empty(), zanim spróbuje ponownie usunąć element z kolejki. Zdobyte w ten sposób bufory muszą zostać zwrócone do frameworku za pomocą funkcji free_request() .

Definicja w wierszu 237 pliku camera2.h .

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

zwracanie bufora metadanych do frameworku po jego użyciu lub w przypadku błędu lub wyłączenia;

Definicja w wierszu 243 w pliku camera2.h .

int(* request_count)(const struct camera2_request_queue_src_ops *q)

Pobierz liczbę oczekujących buforów żądań w kolejce. Jeśli jest skonfigurowane powtarzające się żądanie (żądanie strumienia), może zwrócić CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS. Wywołanie tej metody nie ma wpływu na to, czy framework wywoła metodę notify_request_queue_not_empty().

Definicja w wierszu 228 pliku camera2.h .


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