Ссылка на структуру camera_info
#include < camera_common.h >
Поля данных | |
интервал | лицом к лицу |
интервал | ориентация |
uint32_t | версия_устройства |
const camera_metadata_t * | static_camera_characteristics |
интервал | ресурс_стоимость |
символ ** | конфликтующие_устройства |
size_t | конфликтующая_длина_устройств |
Подробное описание
Определение в строке 161 файла camera_common.h .
Полевая документация
символ ** конфликтующие_устройства |
Массив идентификаторов устройств камеры, представленный в виде строк с нулевым завершением, обозначающих другие устройства, которые нельзя открыть одновременно, пока используется это устройство камеры.
Это поле предназначено для указания того, что это устройство камеры является составной частью нескольких других устройств камеры или иным образом имеет аппаратные зависимости, которые запрещают одновременное использование. Если зависимостей нет, в этом поле может быть возвращено значение NULL, указывающее на это.
Служба камеры никогда не будет одновременно открывать ни одно из устройств в этом списке, пока открыто это устройство камеры.
Строки, указанные в этом поле, не будут очищены службой камеры и должны оставаться, пока устройство подключено.
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:
Недействительно. Можно предположить, что оно равно NULL. Не читайте это поле.
CAMERA_MODULE_API_VERSION_2_4 или выше:
Всегда действителен.
Определение в строке 404 файла camera_common.h .
size_t конфликтующие_устройства_длина |
Длина массива, указанная в поле конфликтующих_устройств.
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:
Недействительно. Можно принять за 0. Не читайте это поле.
CAMERA_MODULE_API_VERSION_2_4 или выше:
Всегда действителен.
Определение в строке 419 файла camera_common.h .
uint32_t версия_устройства |
Значение camera_device_t.common.version.
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
Недействительно. Можно предположить, что это CAMERA_DEVICE_API_VERSION_1_0. Не читайте это поле.
CAMERA_MODULE_API_VERSION_2_0 или выше:
Всегда действителен
Определение в строке 219 файла camera_common.h .
Интер-облицовка |
Направление, в котором смотрит камера. См. system/core/include/system/camera.h для определения направления камеры.
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:
Это должно быть CAMERA_FACING_BACK или CAMERA_FACING_FRONT.
CAMERA_MODULE_API_VERSION_2_4 или выше:
Это должно быть CAMERA_FACING_BACK, CAMERA_FACING_FRONT или CAMERA_FACING_EXTERNAL.
Определение в строке 177 файла camera_common.h .
внутренняя ориентация |
Ориентация изображения камеры. Значение представляет собой угол, на который изображение с камеры необходимо повернуть по часовой стрелке, чтобы оно правильно отображалось на дисплее в своей естественной ориентации. Оно должно быть 0, 90, 180 или 270.
Например, предположим, что устройство имеет естественный высокий экран. Датчик задней камеры установлен в альбомной ориентации. Вы смотрите на экран. Если верхняя часть датчика камеры совмещена с правым краем экрана в естественной ориентации, значение должно быть 90. Если верхняя часть датчика фронтальной камеры совмещена с правым краем экрана, значение должно быть равно 90. быть 270.
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:
Действует во всех версиях camera_module .
CAMERA_MODULE_API_VERSION_2_4 или выше:
Допустимо, если направление камеры — CAMERA_FACING_BACK или CAMERA_FACING_FRONT, недействительно, если направление камеры — CAMERA_FACING_EXTERNAL.
Определение в строке 202 файла camera_common.h .
int resources_cost |
Общая «стоимость» ресурса при использовании этой камеры, представленная в виде целочисленного значения в диапазоне [0, 100], где 100 представляет собой общее использование общего ресурса, который является ограничивающим узким местом подсистемы камеры. Это может быть очень приблизительная оценка, и она используется как подсказка для службы камеры, чтобы определить, когда запретить нескольким приложениям одновременно открывать разные камеры, объявленные службой камеры.
Служба камеры должна иметь возможность одновременно открывать и использовать любую комбинацию устройств камеры, предоставляемую HAL, где сумма затрат ресурсов этих камер <= 100. Для определения стоимости необходимо предположить, что каждое устройство камеры настроено и работает. с максимально ресурсоемкими настройками частоты кадров и размера потока, доступными в настройках конфигурации, представленных для этого устройства через метаданные камеры.
Служба камеры по-прежнему может пытаться одновременно открыть комбинации устройств камеры с общей стоимостью ресурсов > 100. Это может быть успешным или неудачным. Если это удастся, комбинации конфигураций, которые не поддерживаются из-за ограничений ресурсов из-за наличия нескольких открытых устройств, должны завершиться ошибкой во время вызовов настройки. Если общая стоимость ресурсов <= 100, открытие и настройка никогда не должны завершаться сбоем для любых параметров конфигурации потока или других возможностей устройства, которые обычно выполняются для устройства, когда оно является единственным открытым устройством камеры.
Это поле будет использоваться для определения того, разрешено ли фоновым приложениям использовать это устройство камеры, в то время как другие приложения используют другие устройства камеры. Примечание. Служба камеры никогда не позволит нескольким приложениям одновременно открывать одну и ту же камеру.
Примеры использования:
Бывший. 1: Устройство камеры 0 = Устройство камеры заднего вида 1 = Передняя камера
- Использование обоих камер приводит к значительному снижению частоты кадров из-за ограниченной пропускной способности интернет-провайдера.
Конфигурация:
Устройство камеры 0 — resources_cost = 51 конфликтующие_устройства = ноль Устройство камеры 1 — resources_cost = 51 конфликтующие_устройства = ноль
Результат:
Поскольку сумма затрат ресурсов > 100, если в приложении с более высоким приоритетом открыто одно из устройств, служба камеры не позволит приложениям с более низким приоритетом открывать какое-либо устройство. Если приложение с более низким приоритетом использует устройство, которое впоследствии пытается открыть приложение с более высоким приоритетом, приложение с более низким приоритетом будет вынуждено отключить устройство.
Если приложение с наивысшим приоритетом выберет это, оно все равно может попытаться открыть оба устройства (поскольку эти устройства не указаны как конфликтующие в полях конфликтующих_устройств), но использование этих устройств может привести к сбою в вызовах открытия или настройки.
Бывший. 2: Устройство камеры 0 = Левая задняя камера Устройство камеры 1 = Правая задняя камера Устройство камеры 2 = Комбинированная стереокамера, использующая датчики правой и левой задней камеры, используемые устройствами 0 и 1 Устройство камеры 3 = Передняя камера
- Из-за аппаратных ограничений одновременно может быть открыто до двух камер. Комбинированную стереокамеру никогда нельзя использовать одновременно с любым из двух устройств задней камеры (устройство 0, 1), и обычно для ее использования одновременно с передней камерой (устройство 3) требуется слишком большая полоса пропускания.
Конфигурация:
Устройство камеры 0 - resources_cost = 50 конфликтующих_устройств = { 2 } Устройство камеры 1 - resources_cost = 50 конфликтующих_устройств = { 2 } Устройство камеры 2 - resources_cost = 100 конфликтующих_устройств = { 0, 1 } Устройство камеры 3 - resources_cost = 50 конфликтующих_устройств = null
Результат:
На основе полей конфликтующих_устройств служба камеры гарантирует, что следующие наборы открытых устройств никогда не будут разрешены: { 1, 2 }, { 0, 2 }.
На основании полей resources_cost, если приложение переднего плана с высоким приоритетом использует устройство камеры 0, фоновому приложению будет разрешено открыть устройство камеры 1 или 3 (но оно будет вынуждено снова отключить его, если приложение переднего плана откроет другое устройство).
Приложение с наивысшим приоритетом все еще может пытаться одновременно открыть устройства 0, 2 и 3, но HAL может не выполнить вызовы открытия или настройки для этой комбинации.
Бывший. 3: Устройство камеры 0 = Задняя камера Устройство камеры 1 = Передняя камера Устройство камеры 2 = Передняя камера с низким энергопотреблением, которая использует тот же датчик, что и устройство 1, но отображает только те разрешения потока изображений, которые можно использовать в режиме низкого энергопотребления.
Одновременное использование обеих фронтальных камер (устройство 1, 2) невозможно из-за общего физического датчика. Использование задней и «мощной» передней камеры (устройство 1) может быть невозможным для некоторых конфигураций потока из-за аппаратных ограничений, но всегда можно использовать опцию «маломощной» передней камеры, поскольку она имеет специальное специальное оборудование.
Конфигурация:
Устройство камеры 0 — resources_cost = 100 конфликтующих_устройств = ноль Устройство камеры 1 — resources_cost = 100 конфликтующих_устройств = { 2 } Устройство камеры 2 — resources_cost = 0 конфликтующих_устройств = { 1 } Результат:
На основе полей конфликтующих_устройств служба камеры гарантирует, что следующие наборы открытых устройств никогда не будут разрешены: { 1, 2 }.
Судя по полям resources_cost, только приложение с наивысшим приоритетом может попытаться открыть устройства 0 и 1 одновременно. Если приложение с более высоким приоритетом не использует устройство 1 или 2, фоновое приложение с низким приоритетом может открыть устройство 2 (но будет вынуждено отключить его, если приложение с более высоким приоритетом впоследствии откроет устройство 1 или 2).
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 или более ранняя версия:
Недействительно. Можно принять за 100. Не читайте это поле.
CAMERA_MODULE_API_VERSION_2_4 или выше:
Всегда действителен.
Определение в строке 376 файла camera_common.h .
const camera_metadata_t * static_camera_characteristics |
Фиксированные характеристики камеры, включающие все статические метаданные камеры, указанные в system/media/camera/docs/docs.html. Это должен быть отсортированный буфер метаданных, который не может быть изменен или освобожден вызывающей стороной. Указатель должен оставаться действительным в течение всего срока службы модуля камеры, и значения в нем не могут меняться после того, как он будет возвращен функцией get_camera_info().
Информация о версии (на основе camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
Недействительно. Дополнительные характеристики отсутствуют. Не читайте это поле.
CAMERA_MODULE_API_VERSION_2_0 или выше:
Действительно, если версия_устройства >= CAMERA_DEVICE_API_VERSION_2_0. Не читайте иначе.
Определение в строке 241 файла camera_common.h .
Документация для этой структуры была создана из следующего файла:
- аппаратное обеспечение/libhardware/include/hardware/ camera_common.h