camera2_request_queue_src_ops Referência Struct
#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:
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 notificar_request_queue_not_empty ().
- Depois de receber notificar_request_queue_not_empty, o dispositivo deve chamar dequeue () assim que estiver pronto para lidar com o próximo buffer.
- Depois que o dispositivo processa um buffer e está pronto para o próximo buffer, ele deve chamar dequeue () novamente em vez de esperar por uma notificação. Se não houver mais buffers disponíveis, dequeue () retornará NULL. Após este ponto, quando um buffer se torna disponível, o framework deve chamar notificar_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 notificar_request_queue_not_empty () seja recebida da fonte.
- Se o dispositivo chamar buffer_count () e receber 0, isso não significa que o framework fornecerá uma chamada Notice_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 Notice_request_queue_not_empty () pode estar na mesma thread que a chamada Notice_request_queue_not_empty (), e pode ser executada de dentro da chamada Notificar.
- Todos os buffers de solicitação retirados da fila devem ser retornados à estrutura chamando free_request, incluindo quando ocorrem erros, uma liberação de 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 esperar por uma mensagem notificar_request_queue_not_empty () antes de tentar desenfileirar novamente. Buffers obtidos desta forma devem ser devolvidos 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) |
Obtenha a contagem de buffers de solicitação pendentes na fila. Pode retornar CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS se uma solicitação de repetição (solicitação de fluxo) estiver configurada no momento. Chamar este método não tem efeito sobre se o método notification_request_queue_not_empty () será chamado pelo framework.
A documentação para esta estrutura foi gerada a partir do seguinte arquivo:
- hardware / libhardware / include / hardware / camera2.h