Referencia de la estructura camera_module

Referencia de la estructura camera_module

#include < camera_common.h >

Campos de datos

hw_module_t   común
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reservado [5]
 

Descripción detallada

Definición en la línea 646 del archivo camera_common.h .

Documentación de campos

Métodos comunes del módulo de la cámara. Este debe ser el primer miembro de camera_module , ya que los usuarios de esta estructura transmitirán un hw_module_t a un puntero camera_module en contextos en los que se sabe que hw_module_t hace referencia a un camera_module .

Los valores que se muestran para common.methods->open for camera_module son los siguientes:

0: Cuando se abre correctamente el dispositivo de la cámara.

-ENODEV: No se puede abrir el dispositivo de la cámara debido a un error interno.

-EINVAL: Los argumentos de entrada no son válidos, es decir, el ID o el módulo no son válidos.

-EBUSY: El dispositivo de la cámara ya se abrió para este ID de cámara (con este método o open_legacy), independientemente de la versión de HAL del dispositivo con la que se abrió.

-EUSERS: La cantidad máxima de dispositivos de cámara que se pueden abrir de forma simultánea ya se abrió, ya sea con este método o con el método open_legacy.

Todos los demás valores que se devuelvan de common.methods->open se tratarán como -ENODEV.

Definición en la línea 674 del archivo camera_common.h .

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

get_camera_info:

Muestra la información estática de la cámara de un dispositivo de cámara determinado. Es posible que esta información no cambie para un dispositivo de cámara.

Valores de retorno:

0: En una operación correcta

-ENODEV: No se puede proporcionar la información debido a un error interno.

-EINVAL: Los argumentos de entrada no son válidos, es decir, el ID o el módulo no son válidos.

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 o una versión posterior:

Cuando se desconecta una cámara, su ID deja de ser válido. Si llamas a este método con este ID de cámara no válido, se obtendrá -EINVAL y metadatos estáticos de la cámara NULL ( camera_info.static_camera_characteristics ).

Definición en la línea 727 del archivo camera_common.h .

int(* get_number_of_cameras)(void)

get_number_of_cameras:

Muestra la cantidad de dispositivos de cámara a los que se puede acceder a través del módulo de cámara. Los dispositivos de la cámara se numeran del 0 al N-1, donde N es el valor que muestra esta llamada. El nombre del dispositivo de la cámara para open() es simplemente el número convertido en una cadena. Es decir, "0" para el ID de cámara 0, "1" para el ID de cámara 1.

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 o versiones anteriores:

El valor aquí debe ser estático y no puede cambiar después de la primera llamada a este método.

CAMERA_MODULE_API_VERSION_2_4 o una versión posterior:

El valor aquí debe ser estático y debe contar solo las cámaras integradas, que tienen valores de orientación de la cámara CAMERA_FACING_BACK o CAMERA_FACING_FRONT ( camera_info.facing ). El sistema HAL no debe incluir las cámaras externas ( camera_info.facing == CAMERA_FACING_EXTERNAL) en el valor que se muestra después de esta llamada. Los frameworks usarán la devolución de llamada camera_device_status_change para administrar la cantidad de cámaras externas.

Definición en la línea 701 del archivo camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

Obtén métodos para consultar información de la etiqueta de metadatos de la extensión del proveedor. El HAL debe completar todos los métodos de operación de la etiqueta del proveedor o dejar las operaciones sin cambios si no se definen etiquetas del proveedor.

La estructura vendor_tag_ops que se usa aquí se define en: system/media/camera/include/system/vendor_tags.h

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: El módulo HAL no lo proporciona. Es posible que el framework no llame a esta función.

CAMERA_MODULE_API_VERSION_2_2: Es válido que el framework lo llame.

Definición en la línea 778 del archivo camera_common.h .

int(* init)()

init:

El servicio de la cámara llama a este método antes de invocar cualquier otro método, justo después de que se cargue correctamente la biblioteca HAL de la cámara. El módulo HAL puede dejarlo como NULL si no se necesita inicialización.

Las implementaciones de HAL pueden usarla para realizar la inicialización y otras operaciones únicas.

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: El módulo HAL no lo proporciona. El framework no llamará a esta función.

CAMERA_MODULE_API_VERSION_2_4: Si no es nulo, el framework siempre lo llamará una vez que se cargue el módulo HAL, antes de que se llame a cualquier otro método del módulo HAL.

Valores de retorno:

0: En una operación correcta.

-ENODEV: No se puede completar la inicialización debido a un error interno. Se debe suponer que el sistema HAL está en un estado no funcional.

Definición en la línea 909 del archivo 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:

Abre un dispositivo HAL de cámara heredado específico si este módulo admite varias versiones de la API de HAL del dispositivo. Por ejemplo, si el módulo de la cámara admite las APIs de dispositivos CAMERA_DEVICE_API_VERSION_1_0 y CAMERA_DEVICE_API_VERSION_3_2 para el mismo ID de cámara, el framework puede llamar a esta función para abrir el dispositivo de cámara como dispositivo CAMERA_DEVICE_API_VERSION_1_0.

Este es un método opcional. Un módulo de HAL de la cámara no necesita admitir más de una versión de HAL de dispositivo por dispositivo, y estos módulos pueden mostrar -ENOSYS para todas las llamadas a este método. Para todas las versiones anteriores de la API de dispositivos HAL que no son compatibles, es posible que se devuelva -EOPNOTSUPP. Cuando ocurran los casos anteriores, el framework usará el método open() normal (common.methods->open).

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: El módulo HAL no lo proporciona. El framework no llamará a esta función.

CAMERA_MODULE_API_VERSION_2_3: Es válido que el framework lo llame.

Valores de retorno:

0: Cuando se abre correctamente el dispositivo de la cámara.

-ENOSYS: Este método no es compatible.

-EOPNOTSUPP: Este método no admite la versión de HAL solicitada.

-EINVAL: Los argumentos de entrada no son válidos, es decir, el ID o el módulo no son válidos.

-EBUSY: El dispositivo de la cámara ya se abrió para este ID de cámara (con este método o el método common.methods->open), independientemente de la versión de HAL del dispositivo con la que se abrió.

-EUSERS: La cantidad máxima de dispositivos de cámara que se pueden abrir de forma simultánea ya se abrió, ya sea con este método o con el método common.methods->open.

Definición en la línea 824 del archivo camera_common.h .

void* reserved[5]

Definición en la línea 912 del archivo camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

Proporciona punteros de funciones de devolución de llamada al módulo HAL para informar al framework sobre los eventos asíncronos del módulo de la cámara. El framework llamará a esta función una vez después de la carga inicial del módulo HAL de la cámara, después de que se llame al método get_number_of_cameras() por primera vez y antes de cualquier otra llamada al módulo.

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

El módulo HAL no lo proporciona. Es posible que el framework no llame a esta función.

CAMERA_MODULE_API_VERSION_2_1:

Es válido para que el framework lo llame.

Valores de retorno:

0: En una operación correcta

-ENODEV: La operación no se puede completar debido a un error interno.

-EINVAL: Los argumentos de entrada no son válidos, es decir, las devoluciones de llamada son nulas.

Definición en la línea 758 del archivo camera_common.h .

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

Activa o desactiva el modo linterna de la unidad de flash asociada con un ID de cámara determinado. Si la operación se realiza correctamente, HAL debe notificar el estado de la linterna del framework invocando camera_module_callbacks.torch_mode_status_change() con el estado nuevo.

El dispositivo de la cámara tiene una prioridad más alta para acceder a la unidad de flash. Cuando hay conflictos de recursos, como cuando se llama a open() para abrir un dispositivo de cámara, el módulo HAL debe notificar al framework a través de camera_module_callbacks.torch_mode_status_change() que se apagó el modo de linterna y que el estado del modo de linterna se convirtió en TORCH_MODE_STATUS_NOT_AVAILABLE. Cuando los recursos para activar el modo de linterna vuelvan a estar disponibles, el módulo HAL debe notificar al framework a través de camera_module_callbacks.torch_mode_status_change() que el estado del modo de linterna se convirtió en TORCH_MODE_STATUS_AVAILABLE_OFF para que se llame a set_torch_mode() .

Cuando el framework llama a set_torch_mode() para activar el modo de linterna de una unidad de flash, si HAL no puede mantener varios modos de linterna activados de forma simultánea, HAL debe desactivar el modo de linterna que activó una llamada anterior a set_torch_mode() y notificar al framework que el estado del modo de linterna de esa unidad de flash se convirtió en TORCH_MODE_STATUS_AVAILABLE_OFF.

Información de la versión (según camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: El módulo HAL no lo proporciona. El framework no llamará a esta función.

CAMERA_MODULE_API_VERSION_2_4: Es válido que el framework lo llame.

Valores de retorno:

0: En una operación correcta.

-ENOSYS: El dispositivo de la cámara no admite esta operación. Se muestra solo si android.flash.info.available es falso.

-EBUSY: El dispositivo de la cámara ya está en uso.

-EUSERS: Los recursos necesarios para activar el modo de linterna no están disponibles, por lo general, porque otros dispositivos de la cámara retienen los recursos para que no sea posible usar la unidad de flash.

-EINVAL: camera_id no es válido.

Definición en la línea 878 del archivo camera_common.h .


La documentación de esta struct se generó a partir del siguiente archivo: