Referencia de la estructura camera2_device_ops
#include <
camera2.h
>
Campos de datos |
|
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers) |
int(* | register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
int(* | allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
Descripción detallada
Documentación de campos
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Asigna un nuevo flujo de entrada para usar, definido por el ancho, la altura y el formato de píxeles del búfer de salida. Devuelve el ID del flujo nuevo, las marcas de uso de gralloc y el recuento de búferes que se pueden adquirir de forma simultánea si se realiza correctamente. Condiciones de error:
- Solicitar una combinación de ancho, altura y formato que no se indica como compatible con las características estáticas del sensor
- Solicitar que se configuren demasiadas transmisiones de procesamiento nuevamente a la vez
Parámetros de entrada:
- width, height, format: Especificación de los búferes que se enviarán a través de esta transmisión. El formato debe ser un valor de la lista HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: Es una estructura de punteros de función para adquirir y liberar búferes para esta transmisión. El flujo subyacente se configurará en función de las salidas de uso y max_buffers.
Parámetros de salida:
- stream_id: Es un número entero sin signo que identifica este flujo. Este valor se usa en las solicitudes entrantes para identificar la transmisión y para liberarla. Estos IDs se numeran por separado de los IDs de flujo de entrada.
- consumer_usage: Es la máscara de uso de gralloc que necesita el dispositivo HAL para consumir el tipo de datos solicitado. Se usa para asignar nuevos búferes de gralloc para la cola de búferes de transmisión.
- max_buffers: Es la cantidad máxima de búferes que el dispositivo HAL puede haber adquirido al mismo tiempo. Es posible que el dispositivo no tenga más búferes adquiridos al mismo tiempo que este valor.
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
Asigna un nuevo flujo de entrada para usar, que usará los búferes asignados para un flujo de salida existente. Es decir, después de que el HAL pone en cola un búfer en el flujo de salida, es posible que vea ese mismo búfer que se le entrega desde este flujo de reprocesamiento de entrada. Después de que el HAL vuelva a liberar el búfer al flujo de procesamiento, se devolverá a la cola de salida para su reutilización.
Condiciones de error:
- Usar una transmisión de salida de tamaño o formato no adecuados para la transmisión de procesamiento.
- Se intentó asignar demasiadas transmisiones de procesamiento nuevamente a la vez.
Parámetros de entrada:
- output_stream_id: Es el ID de un flujo de salida existente que tiene un tamaño y un formato adecuados para el reprocesamiento.
- reprocess_stream_ops: Es una estructura de punteros de función para adquirir y liberar búferes para esta transmisión. La transmisión subyacente usará los mismos controladores de búfer de gráficos que usa la transmisión de salida.
Parámetros de salida:
- stream_id: Es un número entero sin signo que identifica este flujo. Este valor se usa en las solicitudes entrantes para identificar la transmisión y para liberarla. Estos IDs se numeran por separado de los IDs de flujo de entrada.
El cliente de HAL siempre debe liberar el flujo de procesamiento nuevamente antes de liberar el flujo de salida en el que se basa.
int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
allocate_stream:
Asignar un nuevo flujo de salida para su uso, definido por el ancho, la altura, el objetivo y, posiblemente, el formato de píxeles del búfer de salida Devuelve el ID del flujo nuevo, las marcas de uso de gralloc, el recuento mínimo de búfer de cola y, posiblemente, el formato de píxeles si se realiza correctamente. Condiciones de error:
- Solicitar una combinación de ancho, altura y formato que no se indica como compatible con las características estáticas del sensor
- Solicitar demasiados flujos de un tipo de formato determinado (por ejemplo, 2 flujos sin procesar de Bayer)
Parámetros de entrada:
- width, height, format: Especificación de los búferes que se enviarán a través de esta transmisión. El formato es un valor de la lista HAL_PIXEL_FORMAT_*. Si se usa HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, el módulo gralloc de la plataforma seleccionará un formato según las marcas de uso que proporciona el HAL de la cámara y el consumidor de la transmisión. El HAL de la cámara debe inspeccionar los búferes que se le entregan en la llamada register_stream_buffers para obtener el formato específico de la implementación si es necesario.
- stream_ops: Es una estructura de punteros de función para obtener y poner en cola búferes para esta transmisión. El flujo subyacente se configurará en función de las salidas de uso y max_buffers. Es posible que no se llame a los métodos de esta estructura hasta que se devuelva allocate_stream.
Parámetros de salida:
- stream_id: Es un número entero sin signo que identifica este flujo. Este valor se usa en las solicitudes entrantes para identificar la transmisión y para lanzarla.
- uso: Es la máscara de uso de gralloc que necesita el dispositivo HAL para producir el tipo de datos solicitado. Se usa para asignar nuevos búferes de gralloc para la cola de búferes de transmisión.
- max_buffers: Es la cantidad máxima de búferes que el dispositivo HAL puede necesitar sacar de la cola al mismo tiempo. Es posible que el dispositivo no quite de la cola más búferes que este valor al mismo tiempo.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
Crea una solicitud predeterminada completada para casos de uso de cámaras estándar.
El dispositivo debe mostrar una solicitud completa que esté configurada para cumplir con el caso de uso solicitado, que debe ser una de las enums CAMERA2_TEMPLATE_* Se deben incluir todos los campos de control de solicitud, excepto android.request.outputStreams.
El búfer de metadatos que se muestra debe asignarse con allocate_camera_metadata. El framework se apropia del búfer.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
Borra todas las capturas en curso. Esto incluye todas las solicitudes que se quitaron de la cola (normales o de procesamiento nuevamente) que aún no colocaron ningún resultado en una transmisión o en la cola de fotogramas. Las capturas parcialmente completadas se deben completar de forma normal. No se pueden quitar solicitudes nuevas de la cola de solicitudes hasta que se complete el vaciado.
int(* get_in_progress_count)(const struct camera2_device *) |
Es la cantidad de solicitudes de cámara que el dispositivo está procesando en el momento (capturas o reprocesamientos cuya solicitud se quitó de la cola, pero que aún no se agregaron a las canalización de salida). El framework no puede liberar ninguna transmisión hasta que el recuento en curso sea 0.
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Obtén metadatos específicos de la instancia del dispositivo. Estos metadatos deben ser constantes para una sola instancia del dispositivo de la cámara, pero pueden ser diferentes entre las llamadas a open(). El puntero camera_metadata que se muestra debe ser válido hasta que se llame al método close() del dispositivo.
Información de la versión:
CAMERA_DEVICE_API_VERSION_2_0:
No disponible. Es posible que el framework no pueda acceder a este puntero de función.
CAMERA_DEVICE_API_VERSION_2_1:
Es válida. El framework puede llamarlo.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
Registra búferes para un flujo determinado. Se llama a esta función después de una llamada a allocate_stream correcta y antes de que se apunte a la primera solicitud que hace referencia al flujo. El objetivo de este método es permitir que el dispositivo HAL asigne o prepare los búferes para usarlos más adelante. Se garantiza que num_buffers sea de al menos max_buffers (de allocate_stream), pero puede ser mayor. Los búferes ya estarán bloqueados para su uso. Al final de la llamada, todos los búferes deben estar listos para devolverlos a la cola. Si el formato de transmisión se configuró como HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, el HAL de la cámara debe inspeccionar los búferes pasados aquí para determinar si hay información de formato de píxeles privada de la plataforma.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
Activa la actividad asíncrona. Se usa para activar comportamientos especiales de las rutinas de 3A de la cámara cuando están en uso. Consulta la documentación de CAMERA2_TRIGGER_* anterior para obtener detalles sobre los IDs de activadores y sus argumentos.
La documentación de esta struct se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera2.h