camera2_request_queue_src_ops Referencia de estructura
#include < camera2.h >
Campos de información | |
En t(* | request_count (const estructura camera2_request_queue_src_ops *q) |
En t(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
En t(* | free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
Descripción detallada
Solicitar protocolo de cola de entrada:
El marco contiene la cola y su contenido. Al principio, la cola está vacía.
- Cuando el primer búfer de metadatos se coloca en la cola, el marco envía una señal al dispositivo llamando 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 manejar el siguiente búfer.
- Una vez que el dispositivo ha procesado un búfer y está listo para el siguiente búfer, debe llamar a dequeue() nuevamente en lugar de esperar una notificación. Si no hay más buffers disponibles, dequeue() devolverá NULL. Después de este punto, cuando un búfer esté disponible, el marco debe llamar a notify_request_queue_not_empty() nuevamente. Si el dispositivo recibe un retorno NULL de la cola, no necesita consultar la cola nuevamente hasta que se reciba una llamada notify_request_queue_not_empty() desde la fuente.
- Si el dispositivo llama a buffer_count() y recibe 0, esto no significa que el marco proporcionará una llamada notify_request_queue_not_empty(). El marco solo proporcionará dicha notificación después de que el dispositivo haya recibido un NULL de la cola o en el inicio inicial.
- La llamada dequeue() en respuesta a notify_request_queue_not_empty() puede estar en el mismo hilo que la llamada notify_request_queue_not_empty() y puede realizarse desde dentro de la llamada de notificación.
- Todos los búferes de solicitudes retirados de la cola deben devolverse al marco llamando a free_request, incluso cuando se producen errores, se solicita un vaciado del dispositivo o cuando el dispositivo se está apagando.
Documentación de campo
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Obtenga un búfer de metadatos del marco. Devuelve OK si no hay ningún error. Si la cola está vacía, devuelve NULL en el búfer. En ese caso, el dispositivo debe esperar un mensaje notify_request_queue_not_empty() antes de intentar salir de la cola nuevamente. Los buffers obtenidos de esta manera deben devolverse al marco con free_request() .
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const estructura camera2_request_queue_src_ops *q) |
Obtenga el recuento de buffers de solicitudes pendientes en la cola. Puede devolver CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS si actualmente está configurada una solicitud repetida (solicitud de transmisión). Llamar a este método no tiene ningún efecto sobre si el marco llamará al método notify_request_queue_not_empty().
La documentación para esta estructura se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera2.h