referencia de estructura camera_info
#include < camera_common.h >
Campos de información | |
En t | frente a |
En t | orientación |
uint32_t | versión_dispositivo |
constante cámara_metadatos_t * | características_de_la_cámara_estática |
En t | costo_recurso |
carácter ** | dispositivos_en_conflicto |
tamaño_t | longitud_de_dispositivos_en_conflicto |
Descripción detallada
Definición en la línea 161 del archivo camera_common.h .
Documentación de campo
char** dispositivos_en conflicto |
Una matriz de ID de dispositivos de cámara representadas como cadenas terminadas en NULL que indican otros dispositivos que no se pueden abrir simultáneamente mientras este dispositivo de cámara está en uso.
Este campo está destinado a indicar que este dispositivo de cámara es una combinación de varios otros dispositivos de cámara o que tiene dependencias de hardware que prohíben el uso simultáneo. Si no hay dependencias, se puede devolver un NULL en este campo para indicarlo.
El servicio de cámara nunca abrirá simultáneamente ninguno de los dispositivos en esta lista mientras este dispositivo de cámara esté abierto.
El servicio de cámara no limpiará las cadenas señaladas en este campo y deben permanecer mientras este dispositivo esté enchufado.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o inferior:
No es válido. Se puede suponer que es NULL. No lea este campo.
CAMERA_MODULE_API_VERSION_2_4 o superior:
Siempre válido.
Definición en la línea 404 del archivo camera_common.h .
tamaño_t longitud_dispositivos_en conflicto |
La longitud de la matriz proporcionada en el campo conflicting_devices.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o inferior:
No es válido. Se puede suponer que es 0. No lea este campo.
CAMERA_MODULE_API_VERSION_2_4 o superior:
Siempre válido.
Definición en la línea 419 del archivo camera_common.h .
uint32_t versión_dispositivo |
El valor de camera_device_t.common.version.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
No es válido. Se puede suponer que es CAMERA_DEVICE_API_VERSION_1_0. No lea este campo.
CAMERA_MODULE_API_VERSION_2_0 o superior:
Siempre válido
Definición en la línea 219 del archivo camera_common.h .
frente a frente |
La dirección hacia la que mira la cámara. Consulte system/core/include/system/camera.h para ver las definiciones de orientación de la cámara.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o inferior:
Debería ser CAMERA_FACING_BACK o CAMERA_FACING_FRONT.
CAMERA_MODULE_API_VERSION_2_4 o superior:
Debería ser CAMERA_FACING_BACK, CAMERA_FACING_FRONT o CAMERA_FACING_EXTERNAL.
Definición en la línea 177 del archivo camera_common.h .
orientación interna |
La orientación de la imagen de la cámara. El valor es el ángulo en el que la imagen de la cámara debe girarse en el sentido de las agujas del reloj para que se muestre correctamente en la pantalla en su orientación natural. Debe ser 0, 90, 180 o 270.
Por ejemplo, supongamos que un dispositivo tiene una pantalla naturalmente alta. El sensor de la cámara trasera está montado en posición horizontal. Estás mirando la pantalla. Si el lado superior del sensor de la cámara está alineado con el borde derecho de la pantalla en orientación natural, el valor debe ser 90. Si el lado superior del sensor de la cámara frontal está alineado con el derecho de la pantalla, el valor debe ser 270.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o inferior:
Válido en todas las versiones de camera_module .
CAMERA_MODULE_API_VERSION_2_4 o superior:
Válido si la cámara está orientada hacia CAMERA_FACING_BACK o CAMERA_FACING_FRONT, no válida si la cámara está orientada hacia CAMERA_FACING_EXTERNAL.
Definición en la línea 202 del archivo camera_common.h .
int costo_recurso |
El "coste" total de recursos del uso de esta cámara, representado como un valor entero en el rango [0, 100] donde 100 representa el uso total del recurso compartido que es el cuello de botella limitante del subsistema de cámara. Esta puede ser una estimación muy aproximada y se utiliza como una pista para que el servicio de cámara determine cuándo no permitir que varias aplicaciones abran simultáneamente diferentes cámaras anunciadas por el servicio de cámara.
El servicio de cámara debe poder abrir y utilizar simultáneamente cualquier combinación de dispositivos de cámara expuestos por HAL donde la suma de los costos de recursos de estas cámaras sea <= 100. Para determinar el costo, se debe suponer que cada dispositivo de cámara está configurado y en funcionamiento. en las configuraciones de velocidad de fotogramas y tamaño de transmisión que consumen el máximo de recursos disponibles en los ajustes de configuración expuestos para ese dispositivo a través de los metadatos de la cámara.
El servicio de cámara aún puede intentar abrir simultáneamente combinaciones de dispositivos de cámara con un costo total de recursos > 100. Esto puede tener éxito o fallar. Si esto tiene éxito, las combinaciones de configuraciones que no son compatibles debido a limitaciones de recursos por tener varios dispositivos abiertos deberían fallar durante las llamadas de configuración. Si el costo total de recursos es <= 100, abrir y configurar nunca debería fallar para ninguna configuración de transmisión u otras capacidades del dispositivo que normalmente tendrían éxito para un dispositivo cuando es el único dispositivo con cámara abierta.
Este campo se utilizará para determinar si las aplicaciones en segundo plano pueden usar este dispositivo de cámara mientras otras aplicaciones usan otros dispositivos de cámara. Nota: el servicio de cámara nunca permitirá que varias aplicaciones abran simultáneamente el mismo dispositivo de cámara.
Casos de uso de ejemplo:
Ex. 1: Dispositivo de cámara 0 = Cámara trasera Dispositivo de cámara 1 = Cámara frontal
- El uso de ambos dispositivos de cámara provoca una gran desaceleración de la velocidad de fotogramas debido al ancho de banda limitado del ISP.
Configuración:
Dispositivo de cámara 0 - costo_recurso = 51 dispositivos_en conflicto = nulo Dispositivo de cámara 1 - costo_recurso = 51 dispositivos_en conflicto = nulo
Resultado:
Dado que la suma de los costos de recursos es > 100, si una aplicación de mayor prioridad tiene cualquiera de los dispositivos abiertos, el servicio de cámara no permitirá que ninguna aplicación de menor prioridad abra ninguno de los dispositivos. Si una aplicación de menor prioridad utiliza un dispositivo que una de mayor prioridad intenta abrir posteriormente, la aplicación de menor prioridad se verá obligada a desconectar el dispositivo.
Si la aplicación de mayor prioridad lo elige, aún puede intentar abrir ambos dispositivos (ya que estos dispositivos no aparecen como en conflicto en los campos conflicting_devices), pero el uso de estos dispositivos puede fallar en las llamadas de apertura o configuración.
Ex. 2: Dispositivo de cámara 0 = Cámara trasera izquierda Dispositivo de cámara 1 = Cámara trasera derecha Dispositivo de cámara 2 = Cámara estéreo combinada que utiliza los sensores de la cámara trasera derecha e izquierda utilizados por los dispositivos 0 y 1 Dispositivo de cámara 3 = Cámara frontal
- Debido a limitaciones de hardware, se pueden abrir hasta dos cámaras a la vez. Es posible que la cámara estéreo combinada nunca se use al mismo tiempo que cualquiera de los dos dispositivos de cámara trasera (dispositivo 0, 1) y, por lo general, requiere demasiado ancho de banda para usarla al mismo tiempo que la cámara frontal (dispositivo 3).
Configuración:
Dispositivo de cámara 0 - costo_recurso = 50 dispositivos_en conflicto = { 2 } Dispositivo de cámara 1 - costo_recurso = 50 dispositivos_en conflicto = { 2 } Dispositivo de cámara 2 - costo_recurso = 100 dispositivos_en conflicto = { 0, 1 } Dispositivo de cámara 3 - costo_recurso = 50 dispositivos_en conflicto = nulo
Resultado:
Según los campos conflicting_devices, el servicio de cámara garantiza que nunca se permitirán los siguientes conjuntos de dispositivos abiertos: { 1, 2 }, { 0, 2 }.
Según los campos de costo_recurso, si una aplicación de primer plano de alta prioridad usa el dispositivo de cámara 0, una aplicación en segundo plano podría abrir el dispositivo de cámara 1 o 3 (pero se vería obligada a desconectarlo nuevamente si la aplicación de primer plano abriera otro dispositivo).
La aplicación de mayor prioridad aún puede intentar abrir simultáneamente los dispositivos 0, 2 y 3, pero HAL puede fallar al abrir o configurar llamadas para esta combinación.
Ex. 3: Dispositivo de cámara 0 = Cámara trasera Dispositivo de cámara 1 = Cámara frontal Dispositivo de cámara 2 = Cámara frontal de bajo consumo de energía que usa el mismo sensor que el dispositivo 1, pero solo expone resoluciones de flujo de imágenes que se pueden usar en modo de bajo consumo de energía
Usar ambas cámaras frontales (dispositivo 1, 2) al mismo tiempo es imposible debido a un sensor físico compartido. Usar la cámara trasera y la cámara frontal de "alta potencia" (dispositivo 1) puede ser imposible para algunas configuraciones de transmisión debido a limitaciones de hardware, pero siempre se puede usar la opción de cámara frontal de "baja potencia", ya que tiene un hardware dedicado especial.
Configuración:
Dispositivo de cámara 0 - costo_recurso = 100 dispositivos_en conflicto = nulo Dispositivo de cámara 1 - costo_recurso = 100 dispositivos_en conflicto = { 2 } Dispositivo de cámara 2 - costo_recurso = 0 dispositivos_en conflicto = { 1 } Resultado:
Según los campos conflicting_devices, el servicio de cámara garantiza que nunca se permitirán los siguientes conjuntos de dispositivos abiertos: { 1, 2 }.
Según los campos de costo_recurso, solo la aplicación de mayor prioridad puede intentar abrir los dispositivos 0 y 1 al mismo tiempo. Si una aplicación de mayor prioridad no utiliza el dispositivo 1 o 2, una aplicación en segundo plano de baja prioridad puede abrir el dispositivo 2 (pero se verá obligada a desconectarlo si una aplicación de mayor prioridad abre posteriormente el dispositivo 1 o 2).
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 o inferior:
No es válido. Se puede suponer que es 100. No lea este campo.
CAMERA_MODULE_API_VERSION_2_4 o superior:
Siempre válido.
Definición en la línea 376 del archivo camera_common.h .
const cámara_metadatos_t * características_cámara_estáticas |
Las características fijas de la cámara, que incluyen todos los metadatos estáticos de la cámara especificados en system/media/camera/docs/docs.html. Debe ser un búfer de metadatos ordenado y la persona que llama no puede modificarlo ni liberarlo. El puntero debe seguir siendo válido durante la vida útil del módulo de la cámara y los valores que contiene no pueden cambiar después de que get_camera_info() lo devuelva.
Información de versión (basada en camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
No es válido. Las características adicionales no están disponibles. No lea este campo.
CAMERA_MODULE_API_VERSION_2_0 o superior:
Válido si versión_dispositivo >= CAMERA_DEVICE_API_VERSION_2_0. No leas lo contrario.
Definición en la línea 241 del archivo camera_common.h .
La documentación para esta estructura se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera_common.h