Referência da estrutura camera2_request_queue_src_ops
#include <
camera2.h
>
Campos de dados |
|
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) |
Descrição detalhada
Solicitar protocolo de fila de entrada:
O framework armazena a fila e o conteúdo dela. No início, a fila está vazia.
- Quando o primeiro buffer de metadados é colocado na fila, o framework sinaliza o dispositivo chamando notify_request_queue_not_empty().
- Depois de receber notify_request_queue_not_empty, o dispositivo precisa chamar dequeue() quando estiver pronto para processar o próximo buffer.
- Depois que o dispositivo processa um buffer e está pronto para o próximo, ele precisa chamar dequeue() novamente em vez de esperar uma notificação. Se não houver mais buffers disponíveis, a função dequeue() vai retornar NULL. Depois disso, quando um buffer fica disponível, o framework precisa chamar notify_request_queue_not_empty() novamente. Se o dispositivo receber um retorno NULL da dequeue, 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 o framework vai fornecer uma chamada notify_request_queue_not_empty(). O framework só vai fornecer essa notificação depois que o dispositivo receber um NULL da fila de desempilhação ou na inicialização inicial.
- A chamada dequeue() em resposta a notify_request_queue_not_empty() pode estar na mesma linha de execução que a chamada notify_request_queue_not_empty() e pode ser executada na chamada de notificação.
- Todos os buffers de solicitação retirados da fila precisam ser retornados ao framework chamando free_request, inclusive quando ocorrem erros, quando um flush do dispositivo é solicitado ou quando o dispositivo é desligado.
Documentação do campo
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Receber um buffer de metadados do framework. Retorna "OK" se não houver erro. Se a fila estiver vazia, retornará NULL no buffer. Nesse caso, o dispositivo precisa aguardar uma mensagem notify_request_queue_not_empty() antes de tentar retirar a fila de novo. Os buffers obtidos dessa forma precisam 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 struct camera2_request_queue_src_ops *q) |
Receber 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 streaming) estiver configurada. Chamar esse método não afeta se o método notify_request_queue_not_empty() será chamado pelo framework.
A documentação desse struct foi gerada com base no seguinte arquivo:
- hardware/libhardware/include/hardware/ camera2.h