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

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

#include < camera_common.h >

Поля данных

int облицовка
int ориентация
uint32_t device_version
const camera_metadata_t * static_camera_characteristics
int resource_cost
символ ** конфликтующие_устройства
size_t конфликтующие_устройства_длина

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

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

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

char ** конфликтующие_устройства

Массив идентификаторов устройств камеры, представленных в виде строк с завершающим NULL, указывающих на другие устройства, которые не могут быть одновременно открыты во время использования этого устройства камеры.

Это поле предназначено для использования, чтобы указать, что это устройство камеры является составной частью нескольких других устройств камеры или иным образом имеет зависимости оборудования, которые запрещают одновременное использование. Если нет зависимостей, в этом поле может быть возвращено 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 Conflict_devices_length

Длина массива, указанная в поле Conflict_devices.

Информация о версии (на основе 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 device_version

Значение 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. Если верхняя сторона сенсора фронтальной камеры совмещена с правой частью экрана, значение должно быть 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 resource_cost

Общая «стоимость» ресурсов при использовании этой камеры, представленная целым числом в диапазоне [0, 100], где 100 представляет общее использование общего ресурса, которое является ограничивающим узким местом подсистемы камеры. Это может быть очень приблизительная оценка, и она используется в качестве подсказки для службы камеры, чтобы определить, когда запретить нескольким приложениям одновременно открывать разные камеры, объявленные службой камеры.

Служба камеры должна иметь возможность одновременно открывать и использовать любую комбинацию устройств камеры, выставленных HAL, где сумма затрат ресурсов этих камер составляет <= 100. Для определения стоимости необходимо предположить, что каждое устройство камеры настроено и работает при максимально ресурсоемких настройках частоты кадров и размера потока, доступных в настройках конфигурации, доступных для этого устройства через метаданные камеры.

Служба камеры по-прежнему может пытаться одновременно открыть комбинации устройств камеры с общей стоимостью ресурсов> 100. Это может быть успешным или неудачным. В случае успеха комбинации конфигураций, которые не поддерживаются из-за ограничений ресурсов из-за наличия нескольких открытых устройств, должны завершиться ошибкой во время вызовов configure. Если общая стоимость ресурсов <= 100, открытие и настройка никогда не должны завершаться ошибкой для каких-либо параметров конфигурации потока или других возможностей устройства, которые обычно успешно выполняются для устройства, когда это единственное открытое устройство камеры.

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

Примеры использования:

Бывший. 1: Устройство камеры 0 = Устройство камеры задней камеры 1 = Передняя камера

  • Использование обеих камер приводит к значительному снижению частоты кадров из-за ограниченной пропускной способности интернет-провайдера.

Конфигурация:

Устройство камеры 0 - resource_cost = 51 Conflict_devices = null Устройство камеры 1 - resource_cost = 51 Conflicting_devices = null

Результат:

Поскольку сумма затрат на ресурсы> 100, если у приложения с более высоким приоритетом открыто какое-либо устройство, служба камеры не разрешит приложениям с более низким приоритетом открывать какое-либо устройство. Если приложение с более низким приоритетом использует устройство, которое впоследствии пытается открыть приложение с более высоким приоритетом, приложение с более низким приоритетом будет вынуждено отключить устройство.

Если выберет приложение с наивысшим приоритетом, оно все равно может попытаться открыть оба устройства (поскольку эти устройства не указаны как конфликтующие в полях конфликтующих_устройств), но использование этих устройств может завершиться ошибкой при вызове открытия или настройки.

Бывший. 2: Устройство камеры 0 = Устройство камеры левой задней камеры 1 = Устройство камеры правой задней камеры 2 = Комбинированная стереокамера, использующая датчики правой и левой задней камеры, используемые устройствами 0 и 1 камерой 3 = Передняя камера

  • Из-за аппаратных ограничений одновременно могут быть открыты до двух камер. Комбинированная стереокамера никогда не может использоваться одновременно с любым из двух устройств задней камеры (устройство 0, 1) и обычно требует слишком большой полосы пропускания для использования одновременно с передней камерой (устройство 3).

Конфигурация:

Устройство камеры 0 - resource_cost = 50 конфликтующих_devices = {2} Устройство камеры 1 - resource_cost = 50 Conflict_devices = {2} Устройство камеры 2 - resource_cost = 100 Conflict_devices = {0, 1} Устройство камеры 3 - resource_cost = 50 конфликтующих_devices = null

Результат:

На основе полей конфликтующих_устройств служба камеры гарантирует, что следующие наборы открытых устройств никогда не будут разрешены: {1, 2}, {0, 2}.

На основе полей resource_cost, если высокоприоритетное приложение переднего плана использует устройство камеры 0, фоновое приложение может открыть устройство камеры 1 или 3 (но будет вынуждено снова отключить его, если приложение переднего плана откроет другое устройство).

Приложение с наивысшим приоритетом все еще может пытаться одновременно открыть устройства 0, 2 и 3, но HAL может дать сбой при открытии или настройке вызовов для этой комбинации.

Бывший. 3: Устройство камеры 0 = Устройство камеры задней камеры 1 = Устройство камеры передней камеры 2 = Передняя камера с низким энергопотреблением, которая использует тот же датчик, что и устройство 1, но предоставляет только те разрешения потока изображений, которые можно использовать в режиме низкого энергопотребления

  • Одновременное использование обеих фронтальных камер (устройства 1, 2) невозможно из-за общего физического датчика. Использование задней и «мощной» фронтальной камеры (устройство 1) может быть невозможно для некоторых потоковых конфигураций из-за аппаратных ограничений, но всегда можно использовать опцию «маломощной» передней камеры, поскольку для нее предусмотрено специальное оборудование.

    Конфигурация:

    Устройство камеры 0 - resource_cost = 100 конфликтующих_устройств = null Устройство камеры 1 - resource_cost = 100 Conflicting_devices = {2} Устройство камеры 2 - resource_cost = 0 конфликтующих_devices = {1} Результат:

    На основе полей конфликтующих_устройств служба камеры гарантирует, что следующие наборы открытых устройств никогда не будут разрешены: {1, 2}.

    На основании полей resource_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 .

Фиксированные характеристики камеры, которые включают все метаданные статической камеры, указанные в 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 / включают / оборудование / camera_common.h