Справочник по структуре camera2_request_queue_src_ops

Справочник по структуре camera2_request_queue_src_ops

#include < camera2.h >

Поля данных

интервал(* request_count )(const struct camera2_request_queue_src_ops *q)
интервал(* dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
интервал(* free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

Подробное описание

Протокол входной очереди запроса:

Фреймворк хранит очередь и ее содержимое. В начале очередь пуста.

  1. Когда первый буфер метаданных помещается в очередь, платформа сигнализирует устройству, вызывая notify_request_queue_not_empty().
  2. После получения notify_request_queue_not_empty устройство должно вызвать dequeue(), как только оно будет готово обработать следующий буфер.
  3. Как только устройство обработало буфер и готово к следующему буферу, оно должно снова вызвать dequeue() вместо ожидания уведомления. Если доступных буферов больше нет, dequeue() вернет NULL. После этого момента, когда буфер становится доступным, платформа должна снова вызвать notify_request_queue_not_empty(). Если устройство получает NULL-возврат из очереди, ему не нужно снова запрашивать очередь, пока из источника не будет получен вызов notify_request_queue_not_empty().
  4. Если устройство вызывает buffer_count() и получает 0, это не означает, что платформа предоставит вызов notify_request_queue_not_empty(). Платформа предоставит такое уведомление только после того, как устройство получит NULL из очереди или при первом запуске.
  5. Вызов dequeue() в ответ на notify_request_queue_not_empty() может находиться в том же потоке, что и вызов notify_request_queue_not_empty(), и может выполняться внутри вызова notify.
  6. Все буферы запросов, исключенные из очереди, должны быть возвращены в платформу путем вызова free_request, в том числе при возникновении ошибок, запросе очистки устройства или при выключении устройства.

Определение в строке 220 файла camera2.h .

Полевая документация

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

Получите буфер метаданных из платформы. Возвращает ОК, если нет ошибок. Если очередь пуста, в буфере возвращается NULL. В этом случае устройство должно дождаться сообщения notify_request_queue_not_empty(), прежде чем пытаться снова выйти из очереди. Буферы, полученные таким образом, необходимо вернуть в фреймворк с помощью free_request() .

Определение в строке 237 файла camera2.h .

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

Возвращайте буфер метаданных в платформу после его использования или в случае возникновения ошибки или завершения работы.

Определение в строке 243 файла camera2.h .

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

Получите количество буферов запросов, ожидающих в очереди. Может возвращать CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS, если в данный момент настроен повторяющийся запрос (запрос потока). Вызов этого метода не влияет на то, будет ли метод notify_request_queue_not_empty() вызываться платформой.

Определение в строке 228 файла camera2.h .


Документация для этой структуры была создана из следующего файла:
  • Аппаратное обеспечение/libhardware/include/hardware/ camera2.h