referencia de estructura camera2_device_ops
#include < camera2.h >
Campos de información | |
En t(* | set_request_queue_src_ops )(const estructura camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
En t(* | notify_request_queue_not_empty )(const struct camera2_device *) |
En t(* | set_frame_queue_dst_ops )(const estructura camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
En t(* | get_in_progress_count )(const estructura camera2_device *) |
En t(* | Flush_captures_in_progress )(const estructura camera2_device *) |
En t(* | construct_default_request (const struct camera2_device *, int request_template, camera_metadata_t **solicitud) |
En t(* | allocate_stream )(const struct camera2_device *, uint32_t ancho, uint32_t alto, int formato, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *uso, uint32_t *max_buffers) |
En t(* | Register_stream_buffers (const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
En t(* | release_stream (const estructura camera2_device *, uint32_t stream_id) |
En t(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t ancho, uint32_t alto, uint32_t formato, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
En t(* | 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) |
En t(* | release_reprocess_stream (const estructura camera2_device *, uint32_t stream_id) |
En t(* | trigger_action ) (const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
En t(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *usuario) |
En t(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, seller_tag_query_ops_t **ops) |
En t(* | volcado ) (const estructura camera2_device *, int fd) |
En t(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
Descripción detallada
Documentación de campo
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t ancho, uint32_t alto, uint32_t formato, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Asigne un nuevo flujo de entrada para su uso, definido por el ancho, el alto y el formato de píxeles del búfer de salida. Devuelve el ID de la nueva secuencia, los indicadores de uso de gralloc y el recuento de búfer requerido que se puede adquirir simultáneamente, en caso de éxito. Condiciones de error:
- Solicitar una combinación de ancho/alto/formato que no figura como compatible con las características estáticas del sensor
- Solicitar que se configuren demasiadas secuencias de reprocesamiento a la vez.
Parámetros de entrada:
- ancho, alto, formato: especificación de los buffers que se enviarán a través de esta secuencia. El formato debe ser un valor de la lista HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: una estructura de punteros de función para adquirir y liberar buffers para esta secuencia. La secuencia subyacente se configurará según el uso y las salidas de max_buffers.
Parámetros de salida:
- stream_id: un entero sin signo que identifica esta secuencia. Este valor se utiliza en solicitudes entrantes para identificar la transmisión y para liberarla. Estos identificadores se numeran por separado de los identificadores del flujo de entrada.
- consumer_usage: la máscara de uso de gralloc que necesita el dispositivo HAL para consumir el tipo de datos solicitado. Esto se utiliza para asignar nuevos buffers gralloc para la cola del buffer de flujo.
- max_buffers: el número máximo de buffers que el dispositivo HAL puede necesitar haber adquirido al mismo tiempo. El dispositivo no puede tener más buffers 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:
Asigne un nuevo flujo de entrada para su uso, que utilizará los buffers asignados para un flujo de salida existente. Es decir, después de que HAL pone en cola un búfer en el flujo de salida, es posible que vea ese mismo búfer entregado desde este flujo de reprocesamiento de entrada. Después de que HAL libere el búfer al flujo de reprocesamiento, se devolverá a la cola de salida para su reutilización.
Condiciones de error:
- Usar un flujo de salida de tamaño/formato inadecuado como base del flujo de reprocesamiento.
- Intentando asignar demasiados flujos de reprocesamiento a la vez.
Parámetros de entrada:
- output_stream_id: ID de un flujo de salida existente que tiene un tamaño y formato adecuados para el reprocesamiento.
- reprocess_stream_ops: una estructura de punteros de función para adquirir y liberar buffers para esta secuencia. La secuencia subyacente utilizará los mismos identificadores de búfer de gráficos que utiliza la secuencia de salida.
Parámetros de salida:
- stream_id: un entero sin signo que identifica esta secuencia. Este valor se utiliza en solicitudes entrantes para identificar la transmisión y para liberarla. Estos identificadores se numeran por separado de los identificadores del flujo de entrada.
El cliente HAL siempre debe liberar el flujo de reprocesamiento antes de liberar el flujo de salida en el que se basa.
int(* allocate_stream)(const struct camera2_device *,uint32_t ancho, uint32_t alto, int formato, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *uso, uint32_t *max_buffers) |
asignar_corriente:
Asigne un nuevo flujo de salida para su uso, definido por el ancho, la altura, el destino y posiblemente el formato de píxeles del búfer de salida. Devuelve el ID de la nueva secuencia, los indicadores de uso de gralloc, el recuento mínimo de búfer de cola y, posiblemente, el formato de píxeles, en caso de éxito. Condiciones de error:
- Solicitar una combinación de ancho/alto/formato que no figura como compatible con las características estáticas del sensor
- Solicitar demasiadas transmisiones de un tipo de formato determinado (2 transmisiones sin formato de Bayer, por ejemplo).
Parámetros de entrada:
- ancho, alto, formato: especificación de los buffers que se enviarán a través de esta secuencia. El formato es un valor de la lista HAL_PIXEL_FORMAT_*. Si se usa HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, entonces el módulo gralloc de la plataforma seleccionará un formato basado en los indicadores de uso proporcionados por la cámara HAL y el consumidor de la transmisión. La cámara HAL debe inspeccionar los buffers que se le entregan en la llamada a Register_stream_buffers para obtener el formato específico de la implementación si es necesario.
- stream_ops: una estructura de punteros de función para obtener y poner en cola buffers para esta secuencia. La secuencia subyacente se configurará según el uso y las salidas de max_buffers. Los métodos en esta estructura no se pueden llamar hasta que regrese allocate_stream.
Parámetros de salida:
- stream_id: un entero sin signo que identifica esta secuencia. Este valor se utiliza en solicitudes entrantes para identificar la transmisión y para liberarla.
- uso: la máscara de uso de gralloc que necesita el dispositivo HAL para producir el tipo de datos solicitado. Esto se utiliza para asignar nuevos buffers gralloc para la cola del buffer de flujo.
- max_buffers: el número máximo de buffers que el dispositivo HAL puede necesitar quitar de la cola al mismo tiempo. El dispositivo no puede quitar de la cola más buffers que este valor al mismo tiempo.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **solicitud) |
Cree una solicitud predeterminada completa para casos de uso de cámaras estándar.
El dispositivo debe devolver una solicitud completa que esté configurada para cumplir con el caso de uso solicitado, que debe ser una de las enumeraciones CAMERA2_TEMPLATE_*. Se deben incluir todos los campos de control de solicitudes, excepto android.request.outputStreams.
El búfer de metadatos devuelto debe asignarse con allocate_camera_metadata. El marco toma posesión del búfer.
int(* volcado)(const struct camera2_device *, int fd) |
int(* flux_captures_in_progress)(const estructura camera2_device *) |
Vacíe todas las capturas en curso. Esto incluye todas las solicitudes retiradas de la cola (regulares o de reprocesamiento) que aún no han colocado ninguna salida en una secuencia o en la cola de fotogramas. Las capturas parcialmente completadas deben completarse normalmente. No se pueden retirar nuevas solicitudes de la cola de solicitudes hasta que se complete el vaciado.
int(* get_in_progress_count)(const estructura cámara2_dispositivo *) |
Número de solicitudes de cámara que el dispositivo está procesando en este momento (capturas/reprocesamientos cuyas solicitudes se han retirado de la cola, pero que aún no se han puesto en cola en las canalizaciones de salida). El marco no puede publicar transmisiones hasta que el recuento en progreso sea 0.
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Obtenga metadatos específicos de la instancia del dispositivo. Estos metadatos deben ser constantes para una única instancia del dispositivo de cámara, pero pueden ser diferentes entre las llamadas open(). El puntero camera_metadata devuelto debe ser válido hasta que se llame al método close() del dispositivo.
Información de versión:
CAMERA_DEVICE_API_VERSION_2_0:
No disponible. Es posible que Framework no acceda a este puntero de función.
CAMERA_DEVICE_API_VERSION_2_1:
Válido. Puede ser llamado por el marco.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, seller_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const estructura camera2_device *) |
int(* Register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
Registre buffers para una secuencia determinada. Esto se llama después de una llamada allocate_stream exitosa y antes de que se ponga en cola la primera solicitud que hace referencia a la secuencia. Este método está destinado a permitir que el dispositivo HAL mapee o prepare de otro modo los buffers para su uso posterior. Se garantiza que num_buffers será al menos max_buffers (de allocate_stream), pero puede ser mayor. Los buffers ya estarán bloqueados para su uso. Al final de la llamada, todos los buffers deben estar listos para ser devueltos a la cola. Si el formato de transmisión se configuró en HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, la cámara HAL debe inspeccionar los buffers pasados aquí para determinar cualquier información de formato de píxel privado 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 estructura 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 *usuario) |
int(* set_request_queue_src_ops)(const estructura 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 text1, int32_t text2) |
Activar actividad asincrónica. Esto se utiliza para activar comportamientos especiales de las rutinas de la cámara 3A cuando están en uso. Consulte la documentación de CAMERA2_TRIGGER_* anterior para obtener detalles sobre los identificadores de activación y sus argumentos.
La documentación para esta estructura se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera2.h