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

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

#include < camera2.h >

Поля данных

интервал(* set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
интервал(* notify_request_queue_not_empty )(const struct camera2_device *)
интервал(* set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
интервал(* get_in_progress_count )(const struct camera2_device *)
интервал(* flash_captures_in_progress )(const struct camera2_device *)
интервал(* struct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
интервал(* allocate_stream )(const struct camera2_device *, uint32_t ширина, uint32_t высота, формат int, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
интервал(* Register_stream_buffers )(const struct camera2_device *, uint32_tstream_id, int num_buffers, buffer_handle_t *buffers)
интервал(* Release_stream )(const struct camera2_device *, uint32_tstream_id)
интервал(* allocate_reprocess_stream )(const struct camera2_device *, uint32_t ширина, uint32_t высота, формат uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
интервал(* allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
интервал(* Release_reprocess_stream )(const struct camera2_device *, uint32_tstream_id)
интервал(* триггер_действие )(const struct camera2_device *, uint32_t ignore_id, int32_t ext1, int32_t ext2)
интервал(* set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
интервал(* get_metadata_vendor_tag_ops )(const struct camera2_device *,vendor_tag_query_ops_t **ops)
интервал(* дамп )(const struct camera2_device *, int fd)
интервал(* get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)

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

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

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

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t ширина, uint32_t высота, формат uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

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

  • Запрос комбинации ширины/высоты/формата, которая не поддерживается статическими характеристиками датчика.
  • Запрашивается одновременная настройка слишком большого количества потоков повторной обработки.

Входные параметры:

  • ширина, высота, формат: спецификация буферов, которые будут отправлены через этот поток. Формат должен быть значением из списка HAL_PIXEL_FORMAT_*.
  • reprocess_stream_ops: структура указателей функций для получения и освобождения буферов для этого потока. Базовый поток будет настроен на основе выходных данных использования и max_buffers.

Выходные параметры:

  • stream_id: целое число без знака, идентифицирующее этот поток. Это значение используется во входящих запросах для идентификации потока и при освобождении потока. Эти идентификаторы нумеруются отдельно от идентификаторов входного потока.
  • Consumer_usage: маска использования gralloc, необходимая устройству HAL для потребления запрошенного типа данных. Это используется при выделении новых буферов gralloc для очереди буферов потока.
  • max_buffers: максимальное количество буферов, которые устройству HAL может потребоваться одновременно. Устройство не может иметь больше буферов, полученных одновременно, чем это значение.

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

int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream:

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

Условия ошибки:

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

Входные параметры:

  • output_stream_id: идентификатор существующего выходного потока, размер и формат которого подходят для повторной обработки.
  • reprocess_stream_ops: структура указателей функций для получения и освобождения буферов для этого потока. Базовый поток будет использовать те же дескрипторы графического буфера, что и выходной поток.

Выходные параметры:

  • stream_id: целое число без знака, идентифицирующее этот поток. Это значение используется во входящих запросах для идентификации потока и при освобождении потока. Эти идентификаторы нумеруются отдельно от идентификаторов входного потока.

Клиент HAL всегда должен освобождать поток повторной обработки до того, как он выпустит выходной поток, на котором он основан.

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

int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

выделить_поток:

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

  • Запрос комбинации ширины/высоты/формата, которая не поддерживается статическими характеристиками датчика.
  • Запрос слишком большого количества потоков данного типа формата (например, 2 необработанных потока Bayer).

Входные параметры:

  • ширина, высота, формат: спецификация буферов, которые будут отправлены через этот поток. Формат — это значение из списка HAL_PIXEL_FORMAT_*. Если используется HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, то модуль gralloc платформы выберет формат на основе флагов использования, предоставленных HAL камеры и потребителем потока. HAL камеры должен проверять буферы, переданные ему при вызове Register_stream_buffers, чтобы при необходимости получить формат, специфичный для реализации.
  • stream_ops: структура указателей функций для получения и постановки в очередь буферов для этого потока. Базовый поток будет настроен на основе выходных данных использования и max_buffers. Методы в этой структуре не могут быть вызваны до тех пор, пока не вернется результат allocate_stream.

Выходные параметры:

  • stream_id: целое число без знака, идентифицирующее этот поток. Это значение используется во входящих запросах для идентификации потока и при освобождении потока.
  • использование: маска использования gralloc, необходимая устройству HAL для создания запрошенного типа данных. Это используется при выделении новых буферов gralloc для очереди буферов потока.
  • max_buffers: максимальное количество буферов, которые устройству HAL может потребоваться вывести из очереди одновременно. Устройство не может одновременно извлечь из очереди больше буферов, чем это значение.

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

int(*struct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

Создайте заполненный запрос по умолчанию для стандартных случаев использования камеры.

Устройство должно вернуть полный запрос, настроенный для соответствия запрошенному варианту использования, который должен быть одним из перечислений CAMERA2_TEMPLATE_*. Все поля управления запросами должны быть включены, за исключением android.request.outputStreams.

Возвращаемый буфер метаданных должен быть выделен с помощью allocate_camera_metadata. Фреймворк берет на себя ответственность за буфер.

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

int(* dump)(const struct camera2_device *, int fd)

Дамп состояния оборудования камеры

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

int(*lush_captures_in_progress)(const struct camera2_device *)

Очистите все выполняемые захваты. Сюда входят все запросы, выведенные из очереди (обычные или повторной обработки), которые еще не поместили выходные данные в поток или очередь кадров. Частично завершенные захваты должны быть завершены в обычном режиме. Никакие новые запросы не могут быть исключены из очереди запросов до завершения очистки.

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

int(* get_in_progress_count)(const struct camera2_device *)

Количество запросов камеры, обрабатываемых устройством в данный момент (захваты/повторные обработки, запросы которых были исключены из очереди, но еще не поставлены в очередь на выходной конвейер(ы)). Платформа не может выпускать потоки, пока счетчик выполнения не станет равным 0.

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

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

Получите метаданные, относящиеся к экземпляру устройства. Эти метаданные должны быть постоянными для одного экземпляра устройства камеры, но могут различаться в зависимости от вызова open(). Возвращенный указатель camera_metadata должен быть действительным до тех пор, пока не будет вызван метод close() устройства.

Информация о версии:

CAMERA_DEVICE_API_VERSION_2_0:

Нет в наличии. Платформа может не получить доступ к этому указателю функции.

CAMERA_DEVICE_API_VERSION_2_1:

Действительный. Может быть вызван фреймворком.

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

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *,vendor_tag_query_ops_t **ops)

Получите методы для запроса информации тега метаданных расширения поставщика. Может установить для ops значение NULL, если теги расширения поставщика не определены.

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

int(* notify_request_queue_not_empty)(const struct camera2_device *)

Сообщите устройству, что очередь запросов больше не пуста. Должен вызываться только тогда, когда первый буфер добавляется в новую очередь или после того, как источник вернул NULL в ответ на вызов удаления из очереди.

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

int(* Register_stream_buffers)(const struct camera2_device *, uint32_tstream_id, int num_buffers, buffer_handle_t *buffers)

Зарегистрируйте буферы для данного потока. Он вызывается после успешного вызова allocate_stream и до того, как первый запрос, ссылающийся на поток, будет поставлен в очередь. Этот метод предназначен для того, чтобы позволить устройству HAL отображать или иным образом готовить буферы для последующего использования. num_buffers гарантированно будет не меньше max_buffers (из allocate_stream), но может быть и больше. Буферы уже будут заблокированы для использования. В конце вызова все буферы должны быть готовы к возврату в очередь. Если формат потока был установлен на HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, HAL камеры должен проверить переданные здесь буферы, чтобы определить любую информацию о формате пикселей, частную для платформы.

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

int(* Release_reprocess_stream)(const struct camera2_device *, uint32_tstream_id)

Освободите поток обработки. Возвращает ошибку, если вызывается, когда get_in_progress_count не равно нулю или если идентификатор потока недействителен.

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

int(* Release_stream)(const struct camera2_device *, uint32_tstream_id)

Освободите поток. Возвращает ошибку, если вызывается, когда get_in_progress_count не равно нулю или если идентификатор потока недействителен.

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

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

Передача методов интерфейса очереди выходных кадров

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

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

Настройка обратного звонка для уведомлений

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

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

Передайте методы интерфейса очереди входных запросов.

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

int(* триггер_действие)(const struct camera2_device *, uint32_t ignore_id, int32_t ext1, int32_t ext2)

Запуск асинхронной активности. Это используется для запуска специального поведения процедур камеры 3A, когда они используются. Подробную информацию об идентификаторах триггеров и их аргументах см. в документации по CAMERA2_TRIGGER_* выше.

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


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