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

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

#include < camera3.h >

Поля данных

пустота(* process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
пустота(* notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

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

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

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

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

поставить в известность:

Асинхронный обратный вызов уведомления от HAL, запускаемый по разным причинам. Только для информации, не зависящей от захвата кадров или требующей определенного времени. Право собственности на структуру сообщения остается за HAL, и сообщение должно быть действительным только на время этого вызова.

Несколько потоков могут одновременно вызывать notify() .

<= CAMERA_DEVICE_API_VERSION_3_1:

Уведомление о начале раскрытия для данного запроса должно быть отправлено HAL до того, как будет выполнен первый вызов Process_capture_result() для этого запроса.

>= CAMERA_DEVICE_API_VERSION_3_2:

Буферы, доставленные в платформу, не будут отправляться на уровень приложения до тех пор, пока через вызов SHUTTER notify() не будет получено начало временной метки экспозиции (или начало временной метки входного изображения для запроса на повторную обработку). Настоятельно рекомендуется отправить этот звонок как можно раньше.


Требования к производительности:

Это неблокирующий вызов. Платформа вернет этот вызов через 5 мс.

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

void(*process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

процесс_capture_result:

Отправьте результаты завершенного захвата в платформу. Process_capture_result() может вызываться HAL несколько раз в ответ на один запрос захвата. Это позволяет, например, возвращать метаданные и буферы низкого разрешения за один вызов, а буферы JPEG с постобработкой — при более позднем вызове, как только они станут доступны. Каждый вызов должен включать номер кадра запроса, для которого он возвращает метаданные или буферы.

Компонент (буфер или метаданные) полного результата может быть включен только в один вызовprocess_capture_result. Буфер для каждого потока и метаданные результата должны быть возвращены HAL для каждого запроса в одном из вызововprocess_capture_result, даже в случае ошибок, создающих часть выходных данных. Вызов Process_capture_result() без выходных буферов или метаданных результата не допускается.

Порядок возврата метаданных и буферов для одного результата не имеет значения, но буферы для данного потока должны возвращаться в порядке FIFO. Таким образом, буфер для запроса 5 для потока A всегда должен возвращаться перед буфером для запроса 6 для потока A. Это также относится к метаданным результата; метаданные для запроса 5 должны быть возвращены раньше метаданных для запроса 6.

Однако разные потоки независимы друг от друга, поэтому допустимо и ожидается, что буфер для запроса 5 для потока A может быть возвращен после того, как буфер для запроса 6 для потока B будет возвращен. И допустимо, чтобы метаданные результата для запроса 6 для потока B возвращались раньше, чем буфер для запроса 5 для потока A.

HAL сохраняет право собственности на структуру результатов, которая должна быть действительной только для доступа во время этого вызова. Платформа скопирует все, что ей нужно, прежде чем этот вызов вернется.

Выходные буферы пока не нужно заполнять; платформа будет ожидать синхронизации освобождения буфера потока перед чтением данных буфера. Следовательно, этот метод должен быть вызван HAL как можно скорее, даже если некоторые или все выходные буферы все еще заполняются. HAL должен включать допустимые ограничения синхронизации выпуска в каждую запись буфера потока output_buffers или -1, если этот буфер потока уже заполнен.

Если буфер результатов не может быть создан для запроса, HAL должен вернуть пустой буфер метаданных, но при этом предоставить выходные буферы и их границы синхронизации. Кроме того, notify() должен вызываться с сообщением ERROR_RESULT.

Если выходной буфер не может быть заполнен, его поле состояния должно быть установлено в STATUS_ERROR. Кроме того, notify() должен вызываться с сообщением ERROR_BUFFER.

Если весь захват не удался, то этот метод все равно необходимо вызвать, чтобы вернуть выходные буферы в платформу. Все статусы буфера должны быть STATUS_ERROR, а метаданные результата должны быть пустым буфером. Кроме того, notify() должен вызываться с сообщением ERROR_REQUEST. В этом случае отдельные сообщения ERROR_RESULT/ERROR_BUFFER отправляться не должны.

Требования к производительности:

Это неблокирующий вызов. Платформа вернет этот вызов через 5 мс.

Задержка конвейера (определение см. в S7) должна быть меньше или равна 4 интервалам кадров и должна быть меньше или равна 8 интервалам кадров.

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


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