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

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

#include < camera_common.h >

Поля данных

hw_module_t общий
интервал(* get_number_of_cameras ) (недействительно)
интервал(* get_camera_info )(int camera_id, struct camera_info *info)
интервал(* set_callbacks )(const camera_module_callbacks_t *callbacks)
пустота(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
интервал(* open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
интервал(* set_torch_mode )(const char *camera_id, bool включен)
интервал(* в этом )()
пустота * зарезервировано [5]

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

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

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

hw_module_t общий

Общие методы модуля камеры. Это должен быть первый член camera_module , поскольку пользователи этой структуры будут приводить hw_module_t к указателю camera_module в контекстах, где известно, что hw_module_t ссылается на camera_module .

Возвращаемые значения для common.methods->open для camera_module :

0: При успешном открытии камеры.

-ENODEV: устройство камеры невозможно открыть из-за внутренней ошибки.

-EINVAL: входные аргументы недействительны, т. е. недействителен идентификатор и/или недействителен модуль.

-EBUSY: устройство камеры уже было открыто для этого идентификатора камеры (с помощью этого метода или open_legacy), независимо от версии HAL устройства, под которой оно было открыто.

-EUSERS: максимальное количество устройств камеры, которые можно открыть одновременно, уже открыто либо этим методом, либо методом open_legacy.

Все остальные возвращаемые значения из common.methods->open будут обрабатываться как -ENODEV.

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

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

Возвращает статическую информацию о камере для данного устройства камеры. Эта информация может не измениться для устройства камеры.

Возвращаемые значения:

0: При успешной операции

-ENODEV: информация не может быть предоставлена ​​из-за внутренней ошибки.

-EINVAL: входные аргументы недействительны, т. е. недействителен идентификатор и/или недействителен модуль.

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 или выше:

Когда камера отключена, ее идентификатор становится недействительным. Вызов этого метода с этим недопустимым идентификатором камеры приведет к получению статических метаданных камеры -EINVAL и NULL ( camera_info.static_camera_characteristics ).

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

int(* get_number_of_cameras)(void)

get_number_of_cameras:

Возвращает количество устройств камеры, доступных через модуль камеры. Устройствам камеры присвоены номера от 0 до N-1, где N — значение, возвращаемое этим вызовом. Имя устройства камеры для open() — это просто число, преобразованное в строку. То есть «0» для идентификатора камеры 0, «1» для идентификатора камеры 1.

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:

Значение здесь должно быть статическим и не может измениться после первого вызова этого метода.

CAMERA_MODULE_API_VERSION_2_4 или выше:

Значение здесь должно быть статическим и должно учитывать только встроенные камеры, у которых есть значения CAMERA_FACING_BACK или CAMERA_FACING_FRONT ( camera_info.facing ). HAL не должен включать внешние камеры ( camera_info.facing == CAMERA_FACING_EXTERNAL) в возвращаемое значение этого вызова. Платформы будут использовать обратный вызов camera_device_status_change для управления количеством внешних камер.

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

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

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

Используемая здесь структураvendor_tag_ops определена в: system/media/camera/include/system/vendor_tags.h.

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: не предоставляется модулем HAL. Framework может не вызывать эту функцию.

CAMERA_MODULE_API_VERSION_2_2: допустимо для вызова платформой.

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

интервал(* инициализация)()

в этом:

Этот метод вызывается службой камеры до вызова других методов, сразу после успешной загрузки библиотеки HAL камеры. Модуль HAL может оставить его равным NULL, если инициализация не требуется.

Он может использоваться реализациями HAL для выполнения инициализации и других одноразовых операций.

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: не предоставляется модулем HAL. Framework не будет вызывать эту функцию.

CAMERA_MODULE_API_VERSION_2_4: если не NULL, всегда будет вызываться платформой один раз после загрузки модуля HAL, перед вызовом любого другого метода модуля HAL.

Возвращаемые значения:

0: При успешной операции.

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

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

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:

Откройте определенное устаревшее устройство HAL камеры, если этот модуль HAL камеры поддерживает несколько версий API HAL устройства. Например, если модуль камеры поддерживает API устройства CAMERA_DEVICE_API_VERSION_1_0 и CAMERA_DEVICE_API_VERSION_3_2 для одного и того же идентификатора камеры, платформа может вызвать эту функцию, чтобы открыть устройство камеры как устройство CAMERA_DEVICE_API_VERSION_1_0.

Это необязательный метод. Модуль HAL камеры не обязан поддерживать более одной версии HAL устройства на одно устройство, и такие модули могут возвращать -ENOSYS для всех вызовов этого метода. Для всех старых версий API устройств HAL, которые не поддерживаются, он может возвращать -EOPNOTSUPP. При возникновении вышеуказанных случаев вместо этого платформа будет использовать обычный метод open() (common.methods->open).

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: не предоставляется модулем HAL. Framework не будет вызывать эту функцию.

CAMERA_MODULE_API_VERSION_2_3: допустимо для вызова платформой.

Возвращаемые значения:

0: При успешном открытии камеры.

-ENOSYS Этот метод не поддерживается.

-EOPNOTSUPP: запрошенная версия HAL не поддерживается этим методом.

-EINVAL: входные аргументы недействительны, т. е. недействителен идентификатор и/или недействителен модуль.

-EBUSY: устройство камеры уже было открыто для этого идентификатора камеры (с помощью этого метода или метода common.methods->open), независимо от версии HAL устройства, под которой оно было открыто.

-EUSERS: максимальное количество устройств камеры, которые можно открыть одновременно, уже открыто либо этим методом, либо методом common.methods->open.

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

аннулирование* зарезервировано[5]

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

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

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

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

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

CAMERA_MODULE_API_VERSION_2_1:

Допустимо для вызова платформой.

Возвращаемые значения:

0: При успешной операции

-ENODEV: операцию невозможно завершить из-за внутренней ошибки.

-EINVAL: входные аргументы недействительны, т.е. обратные вызовы имеют значение NULL.

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

int(* set_torch_mode)(const char *camera_id, bool включен)

set_torch_mode:

Включите или выключите режим фонарика вспышки, связанной с данным идентификатором камеры. Если операция прошла успешно, HAL должен уведомить состояние факела платформы, вызвав camera_module_callbacks.torch_mode_status_change() с новым состоянием.

Устройство камеры имеет более высокий приоритет доступа к вспышке. При возникновении каких-либо конфликтов ресурсов, например, при вызове open() для открытия устройства камеры, модуль HAL должен уведомить платформу через camera_module_callbacks.torch_mode_status_change() о том, что режим фонарика выключен и состояние режима фонарика стало TORCH_MODE_STATUS_NOT_AVAILABLE. Когда ресурсы для включения режима факела снова становятся доступными, модуль HAL должен уведомить платформу через camera_module_callbacks.torch_mode_status_change() о том, что состояние режима факела стало TORCH_MODE_STATUS_AVAILABLE_OFF для вызова set_torch_mode() .

Когда платформа вызывает set_torch_mode() для включения режима фонарика вспышки, если HAL не может поддерживать несколько режимов фонаря одновременно, HAL должен отключить режим фонарика, который был включен предыдущим вызовом set_torch_mode() , и уведомить об этом платформу что состояние режима фонарика этой вспышки стало TORCH_MODE_STATUS_AVAILABLE_OFF.

Информация о версии (на основе camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: не предоставляется модулем HAL. Framework не будет вызывать эту функцию.

CAMERA_MODULE_API_VERSION_2_4: допустимо для вызова платформой.

Возвращаемые значения:

0: При успешной операции.

-ENOSYS: камера не поддерживает эту операцию. Он возвращается тогда и только тогда, когда android.flash.info.available имеет значение false.

-EBUSY: камера уже используется.

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

-EINVAL: camera_id недействителен.

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


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