Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

camera2_request_queue_src_ops Odniesienie do struktury

camera2_request_queue_src_ops Odniesienie do struktury

#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

Żądaj protokołu kolejki wejściowej:

Framework przechowuje kolejkę i jej zawartość. Na początku kolejka jest pusta.

  1. Gdy pierwszy bufor metadanych zostanie umieszczony w kolejce, struktura sygnalizuje urządzeniu, wywołując notify_request_queue_not_empty ().
  2. Po otrzymaniu notify_request_queue_not_empty, urządzenie musi wywołać dequeue (), gdy będzie gotowe do obsługi następnego bufora.
  3. Gdy urządzenie przetworzy bufor i jest gotowe na następny bufor, musi ponownie wywołać funkcję dequeue () zamiast czekać na powiadomienie. Jeśli nie ma już dostępnych buforów, funkcja dequeue () zwróci NULL. Po tym momencie, gdy bufor stanie się dostępny, struktura musi ponownie wywołać notify_request_queue_not_empty (). Jeśli urządzenie otrzyma zwrot NULL z usunięcia z kolejki, nie musi ponownie wysyłać zapytania do kolejki, dopóki nie zostanie odebrane wywołanie notify_request_queue_not_empty () ze źródła.
  4. Jeśli urządzenie wywołuje funkcję buffer_count () i odbiera 0, nie oznacza to, że struktura zapewni wywołanie notify_request_queue_not_empty (). Struktura dostarczy takie powiadomienie dopiero po tym, jak urządzenie otrzyma wartość NULL po usunięciu z kolejki lub przy pierwszym uruchomieniu.
  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 powiadomienia.
  6. Wszystkie usunięte z kolejki bufory żądań muszą zostać zwrócone do struktury przez wywołanie free_request, w tym w przypadku wystąpienia błędów, żądania opróżnienia urządzenia lub zamykania urządzenia.

Definicja w wierszu 220 pliku camera2.h .

Dokumentacja terenowa

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

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 czekać 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ą 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)

Zwróć bufor metadanych do struktury po jego użyciu lub jeśli wystąpi błąd lub zamknięcie.

Definicja w linii 243 pliku camera2.h .

int (* request_count) (const struct camera2_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 powtarzające się żądanie (żądanie strumienia) jest obecnie skonfigurowane. Wywołanie tej metody nie ma wpływu na to, czy metoda notify_request_queue_not_empty () będzie wywoływana przez platformę.

Definicja w linii 228 pliku camera2.h .


Dokumentacja dla tej struktury została wygenerowana z następującego pliku:
  • sprzęt / libhardware / include / hardware / camera2.h