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

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

#include < camera2.h >

Поля данных

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 **)
int (* 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 **)

Получите буфер метаданных из фреймворка. Возвращает ОК, если ошибок нет. Если очередь пуста, в буфере возвращается 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 / включают / оборудование / camera2.h