Referência de estrutura camera2_request_queue_src_ops
#include < camera2.h >
Campos de dados | |
interno(* | request_count )(const estrutura camera2_request_queue_src_ops *q) |
interno(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
interno(* | free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
Descrição detalhada
Solicitar protocolo de fila de entrada:
A estrutura contém a fila e seu conteúdo. No início, a fila está vazia.
- Quando o primeiro buffer de metadados é colocado na fila, a estrutura sinaliza o dispositivo chamando notify_request_queue_not_empty().
- Depois de receber notify_request_queue_not_empty, o dispositivo deve chamar dequeue() quando estiver pronto para lidar com o próximo buffer.
- Depois que o dispositivo tiver processado um buffer e estiver pronto para o próximo buffer, ele deverá chamar dequeue() novamente em vez de aguardar uma notificação. Se não houver mais buffers disponíveis, dequeue() retornará NULL. Após este ponto, quando um buffer estiver disponível, a estrutura deverá chamar notify_request_queue_not_empty() novamente. Se o dispositivo receber um retorno NULL do desenfileiramento, ele não precisará consultar a fila novamente até que uma chamada notify_request_queue_not_empty() seja recebida da origem.
- Se o dispositivo chamar buffer_count() e receber 0, isso não significa que a estrutura fornecerá uma chamada notify_request_queue_not_empty(). A estrutura só fornecerá tal notificação depois que o dispositivo receber um NULL do desenfileiramento ou na inicialização.
- A chamada dequeue() em resposta a notify_request_queue_not_empty() pode estar no mesmo thread que a chamada notify_request_queue_not_empty() e pode ser executada dentro da chamada de notificação.
- Todos os buffers de solicitação retirados da fila devem ser retornados à estrutura chamando free_request, inclusive quando ocorrem erros, uma liberação do dispositivo é solicitada ou quando o dispositivo está sendo desligado.
Documentação de campo
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Obtenha um buffer de metadados da estrutura. Retorna OK se não houver erro. Se a fila estiver vazia, retorna NULL no buffer. Nesse caso, o dispositivo deve aguardar uma mensagem notify_request_queue_not_empty() antes de tentar desenfileirar novamente. Os buffers obtidos desta forma devem ser retornados ao framework com free_request() .
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const estrutura camera2_request_queue_src_ops *q) |
Obtenha a contagem de buffers de solicitação pendentes na fila. Pode retornar CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS se uma solicitação repetida (solicitação de fluxo) estiver configurada no momento. Chamar esse método não afeta se o método notify_request_queue_not_empty() será chamado pela estrutura.
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/incluir/hardware/ camera2.h