Referencia de la estructura camera2_request_queue_src_ops
#include <
camera2.h
>
Campos de datos |
|
int(* | request_count )(const struct camera2_request_queue_src_ops *q) |
int(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
int(* | free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
Descripción detallada
Solicita el protocolo de la cola de entrada:
El framework contiene la cola y su contenido. Al principio, la cola está vacía.
- Cuando se coloca el primer búfer de metadatos en la cola, el framework le indica al dispositivo que llame a notify_request_queue_not_empty().
- Después de recibir notify_request_queue_not_empty, el dispositivo debe llamar a dequeue() una vez que esté listo para controlar el siguiente búfer.
- Una vez que el dispositivo haya procesado un búfer y esté listo para el siguiente, debe volver a llamar a dequeue() en lugar de esperar una notificación. Si no hay más búferes disponibles, dequeue() mostrará un valor nulo. Después de este punto, cuando un búfer esté disponible, el framework debe volver a llamar a notify_request_queue_not_empty(). Si el dispositivo recibe un valor NULL de la cola, no es necesario que vuelva a consultarla hasta que se reciba una llamada notify_request_queue_not_empty() de la fuente.
- Si el dispositivo llama a buffer_count() y recibe 0, esto no significa que el framework proporcionará una llamada a notify_request_queue_not_empty(). El framework solo proporcionará una notificación de este tipo después de que el dispositivo haya recibido un valor NULL de la cola de espera o en el inicio inicial.
- La llamada dequeue() en respuesta a notify_request_queue_not_empty() puede estar en el mismo subproceso que la llamada notify_request_queue_not_empty() y se puede realizar desde la llamada de notificación.
- Todos los búferes de solicitudes eliminados de la cola se deben devolver al framework llamando a free_request, incluso cuando se producen errores, se solicita una limpieza del dispositivo o cuando se apaga el dispositivo.
Documentación de campos
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Obtén un búfer de metadatos del framework. Devuelve OK si no hay errores. Si la cola está vacía, muestra NULL en el búfer. En ese caso, el dispositivo debe esperar un mensaje notify_request_queue_not_empty() antes de intentar volver a quitar elementos de la cola. Los búferes obtenidos de esta manera se deben devolver al framework con free_request() .
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
Obtén el recuento de búferes de solicitudes pendientes en la cola. Puede mostrar CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS si actualmente se configuró una solicitud repetida (solicitud de transmisión). Llamar a este método no tiene efecto en si el framework llamará al método notify_request_queue_not_empty().
La documentación de esta struct se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera2.h