referencia de estructura camera3_callback_ops
#include < camera3.h >
Campos de información | |
vacío(* | Process_capture_result (const struct camera3_callback_ops *, const camera3_capture_result_t *resultado) |
vacío(* | notificar ) (const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
Descripción detallada
Documentación de campo
void(* notificar)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
notificar:
Devolución de llamada de notificación asincrónica de HAL, activada por varios motivos. Sólo para información independiente de la captura de fotogramas, o que requieran una sincronización específica. La propiedad de la estructura del mensaje permanece en HAL y el mensaje solo debe ser válido mientras dure esta llamada.
Varios subprocesos pueden llamar a notify() simultáneamente.
<= CAMERA_DEVICE_API_VERSION_3_1:
HAL debe enviar la notificación para el inicio de la exposición para una solicitud determinada antes de realizar la primera llamada a Process_capture_result() para esa solicitud.
>= CAMERA_DEVICE_API_VERSION_3_2:
Los buffers entregados al marco no se enviarán a la capa de aplicación hasta que se haya recibido una marca de tiempo de inicio de exposición (o la marca de tiempo de inicio de exposición de la imagen de entrada para una solicitud de reprocesamiento) a través de una llamada SHUTTER notify() . Se recomienda encarecidamente enviar esta llamada lo antes posible.
Requisitos de desempeño:
Esta es una llamada sin bloqueo. El marco devolverá esta llamada en 5 ms.
void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *resultado) |
resultado_captura_proceso:
Envíe los resultados de una captura completa al marco. Process_capture_result() puede ser invocado varias veces por HAL en respuesta a una única solicitud de captura. Esto permite, por ejemplo, que los metadatos y los buffers de baja resolución se devuelvan en una llamada, y los buffers JPEG posprocesados en una llamada posterior, una vez que estén disponibles. Cada llamada debe incluir el número de fotograma de la solicitud para la que devuelve metadatos o buffers.
Un componente (búfer o metadatos) del resultado completo solo puede incluirse en una llamada a Process_capture_result. HAL debe devolver un búfer para cada flujo y los metadatos del resultado para cada solicitud en una de las llamadas Process_capture_result, incluso en caso de errores que produzcan parte del resultado. No se permite una llamada a Process_capture_result() sin búferes de salida ni metadatos de resultados.
El orden de devolución de metadatos y búferes para un único resultado no importa, pero los búferes para una secuencia determinada deben devolverse en orden FIFO. Por lo tanto, el búfer para la solicitud 5 para la secuencia A siempre debe devolverse antes que el búfer para la solicitud 6 para la secuencia A. Esto también se aplica a los metadatos del resultado; los metadatos de la solicitud 5 deben devolverse antes que los metadatos de la solicitud 6.
Sin embargo, los diferentes flujos son independientes entre sí, por lo que es aceptable y esperado que el búfer para la solicitud 5 para el flujo A pueda devolverse después del búfer para la solicitud 6 para el flujo B. Y es aceptable que los metadatos del resultado de la solicitud 6 para la secuencia B se devuelvan antes que el búfer para la solicitud 5 para la secuencia A.
HAL conserva la propiedad de la estructura de resultados, a la que solo debe ser válida para acceder durante esta convocatoria. El marco copiará todo lo que necesite antes de que regrese esta llamada.
No es necesario llenar todavía los buffers de salida; el marco esperará en el límite de sincronización de liberación del búfer de transmisión antes de leer los datos del búfer. Por lo tanto, HAL debe llamar a este método lo antes posible, incluso si algunos o todos los búferes de salida aún se están llenando. El HAL debe incluir barreras de sincronización de lanzamiento válidas en cada entrada del búfer de flujo output_buffers, o -1 si ese búfer de flujo ya está lleno.
Si el búfer de resultados no se puede construir para una solicitud, HAL debería devolver un búfer de metadatos vacío, pero aún así proporcionar los búferes de salida y sus límites de sincronización. Además, se debe llamar a notify() con un mensaje ERROR_RESULT.
Si no se puede llenar un búfer de salida, su campo de estado debe establecerse en STATUS_ERROR. Además, se debe llamar a notify() con un mensaje ERROR_BUFFER.
Si toda la captura falló, aún es necesario llamar a este método para devolver los búferes de salida al marco. Todos los estados del búfer deben ser STATUS_ERROR y los metadatos del resultado deben ser un búfer vacío. Además, se debe llamar a notify() con un mensaje ERROR_REQUEST. En este caso, no se deben enviar mensajes ERROR_RESULT/ERROR_BUFFER individuales.
Requisitos de desempeño:
Esta es una llamada sin bloqueo. El marco devolverá esta llamada en 5 ms.
La latencia de la canalización (consulte S7 para conocer la definición) debe ser menor o igual a 4 intervalos de fotogramas y debe ser menor o igual a 8 intervalos de fotogramas.
La documentación para esta estructura se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera3.h