Справочник по структуре camera3_stream
#include < camera3.h >
Поля данных | |
интервал | тип потока |
uint32_t | ширина |
uint32_t | высота |
интервал | формат |
uint32_t | Применение |
uint32_t | max_buffers |
пустота * | приват |
android_dataspace_t | пространство_данных |
интервал | вращение |
пустота * | зарезервировано [7] |
Подробное описание
camera3_stream_t:
Дескриптор одного входного или выходного потока камеры. Поток определяется платформой по разрешению и формату буфера, а также по HAL с флагами использования gralloc и максимальным количеством текущих буферов.
Структуры потока принадлежат платформе, но указатели на camera3_stream , переданные в HAL с помощью configure_streams(), действительны до конца первого последующего вызова configure_streams(), который не включает этот camera3_stream в качестве аргумента, или до конца вызов close().
Все элементы camera3_stream , контролируемые платформой, становятся неизменяемыми после того, как camera3_stream передается в configure_streams(). HAL может изменять только параметры, контролируемые HAL, во время вызова configure_streams(), за исключением содержимого частного указателя.
Если вызов configure_streams() возвращает нефатальную ошибку, все активные потоки остаются действительными, как если бы configure_streams() не вызывался.
Конечная точка потока не видна устройству HAL камеры. В DEVICE_API_VERSION_3_1 это было изменено, чтобы совместно использовать флаги использования потребителя в потоках, где камера является производителем (типы потоков OUTPUT и BIDIRECTIONAL), см. поле использования ниже.
Полевая документация
android_dataspace_t data_space |
Поле, описывающее содержимое буфера. Размерности формата и буфера определяют расположение памяти и структуру буферов потока, а dataSpace определяет значение данных в буфере.
Для большинства форматов dataSpace определяет цветовое пространство данных изображения. Кроме того, для некоторых форматов dataSpace указывает, запрашиваются ли данные на основе изображения или глубины. См. system/core/include/system/graphics.h для получения подробной информации о форматах и допустимых значениях dataSpace для каждого формата.
Информация о версии:
< CAMERA_DEVICE_API_VERSION_3_3:
Не определено и не должно быть доступно. Предполагается, что dataSpace имеет значение HAL_DATASPACE_UNKNOWN, а соответствующее цветовое пространство и т. д. должно определяться на основе флагов использования и формата.
= CAMERA_DEVICE_API_VERSION_3_3:
Всегда устанавливается службой камеры. HAL должен использовать это пространство данных для настройки потока на правильное цветовое пространство или для выбора между выводами цвета и глубины, если они поддерживаются. Значения пространства данных — это устаревшие определения в Graphics.h.
>= CAMERA_DEVICE_API_VERSION_3_4:
Всегда устанавливается службой камеры. HAL должен использовать это пространство данных для настройки потока на правильное цветовое пространство или для выбора между выводами цвета и глубины, если они поддерживаются. Значения пространства данных задаются с использованием определений пространства данных V0 в файле Graphics.h.
формат int |
Формат пикселей для буферов в этом потоке. Формат — это значение из списка HAL_PIXEL_FORMAT_* в файле system/core/include/system/graphics.h или из заголовков, специфичных для устройства.
Если используется HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, то модуль gralloc платформы выберет формат на основе флагов использования, предоставленных устройством камеры и другой конечной точкой потока.
<= CAMERA_DEVICE_API_VERSION_3_1:
Устройство HAL камеры должно проверить буферы, переданные ему в последующем вызове Register_stream_buffers(), чтобы получить детали формата, специфичные для реализации, если это необходимо.
>= CAMERA_DEVICE_API_VERSION_3_2:
Register_stream_buffers() не будет вызываться платформой, поэтому HAL должен настроить конвейер ISP и датчиков исключительно на основе размеров, флагов использования и форматов настроенных потоков.
uint32_t max_buffers |
пустота* приват |
внутреннее вращение |
Требуемый выходной поворот потока, одно из значений camera3_stream_rotation_t. Это должно быть проверено HAL вместе с шириной и высотой потока. Например, если поворот составляет 90 градусов, а ширина и высота потока — 720 и 1280 соответственно, служба камеры предоставит буферы размером 720x1280, а HAL должен захватить изображение размером 1280x720 и повернуть изображение на 90 градусов против часовой стрелки. Поле вращения неактивно, когда вводится тип потока. HAL камеры должен игнорировать поле вращения для входного потока.
<= CAMERA_DEVICE_API_VERSION_3_2:
Не определен и не должен быть доступен. HAL не должен применять поворот к выходным изображениям.
>= CAMERA_DEVICE_API_VERSION_3_3:
Всегда устанавливается службой камеры. HAL должен проверять это поле во время настройки потока и возвращает -EINVAL, если HAL не может выполнить такую ротацию. HAL должен всегда поддерживать CAMERA3_STREAM_ROTATION_0, поэтому вызов configure_streams() не должен завершаться ошибкой из-за неподдерживаемого вращения, если поле вращения всех потоков равно CAMERA3_STREAM_ROTATION_0.
intstream_type |
использование uint32_t |
Флаги использования gralloc для этого потока, необходимые HAL. Флаги использования определяются в gralloc.h (GRALLOC_USAGE_*) или в заголовках, специфичных для устройства.
Для выходных потоков это флаги использования производителя HAL. Для входных потоков это флаги потребительского использования HAL. Флаги использования от производителя и потребителя будут объединены вместе, а затем переданы в модуль HAL платформы gralloc для выделения буферов graloc для каждого потока.
Информация о версии:
== CAMERA_DEVICE_API_VERSION_3_0:
Никакое начальное значение не гарантируется при передаче через configure_streams(). HAL не может использовать это поле в качестве входных данных и должен записывать в него свои флаги использования.
>= CAMERA_DEVICE_API_VERSION_3_1:
Для потоковstream_type OUTPUT и BIDIRECTIONAL при передаче через configure_streams() начальным значением этого параметра являются флаги использования потребителя. HAL может использовать эти потребительские флаги для принятия решения о конфигурации потока. Для ввода типаstream_type при передаче через configure_streams() начальное значение этого параметра равно 0. Для всех потоков, передаваемых через configure_streams(), HAL должен записать в это поле свои флаги использования.
Документация для этой структуры была создана из следующего файла:
- Аппаратное обеспечение/libhardware/include/hardware/ camera3.h