Referência de estrutura camera3_callback_ops
#include < camera3.h >
Campos de dados | |
vazio(* | process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *resultado) |
vazio(* | notificar )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
Descrição detalhada
Documentação de campo
void(* notificar)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
notificar:
Retorno de chamada de notificação assíncrona do HAL, disparado por vários motivos. Somente para informações independentes da captura de quadros ou que exijam temporização específica. A propriedade da estrutura da mensagem permanece com o HAL, e a mensagem só precisa ser válida durante esta chamada.
Vários threads podem chamar notify() simultaneamente.
<= CAMERA_DEVICE_API_VERSION_3_1:
A notificação de início de exposição para uma determinada requisição deve ser enviada pelo HAL antes que seja feita a primeira chamada para process_capture_result() daquela requisição.
>= CAMERA_DEVICE_API_VERSION_3_2:
Os buffers entregues à estrutura não serão despachados para a camada de aplicação até que um carimbo de data e hora de início de exposição (ou carimbo de data e hora de início de exposição da imagem de entrada para uma solicitação de reprocessamento) seja recebido por meio de uma chamada SHUTTER notify() . É altamente recomendável enviar esta chamada o mais cedo possível.
Requisitos de desempenho:
Esta é uma chamada sem bloqueio. O framework retornará esta chamada em 5ms.
void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *resultado) |
process_capture_resultado:
Envie resultados de uma captura concluída para a estrutura. process_capture_result() pode ser invocado várias vezes pelo HAL em resposta a uma única solicitação de captura. Isso permite, por exemplo, que os metadados e buffers de baixa resolução sejam retornados em uma chamada, e buffers JPEG pós-processados em uma chamada posterior, assim que estiverem disponíveis. Cada chamada deve incluir o número do quadro da solicitação para a qual está retornando metadados ou buffers.
Um componente (buffer ou metadados) do resultado completo só pode ser incluído em uma chamada process_capture_result. Um buffer para cada fluxo e os metadados de resultado devem ser retornados pelo HAL para cada solicitação em uma das chamadas process_capture_result, mesmo no caso de erros na produção de parte da saída. Uma chamada para process_capture_result() sem buffers de saída ou metadados de resultado não é permitida.
A ordem de retorno de metadados e buffers para um único resultado não importa, mas os buffers para um determinado fluxo devem ser retornados na ordem FIFO. Portanto, o buffer da solicitação 5 para o fluxo A deve sempre ser retornado antes do buffer da solicitação 6 para o fluxo A. Isso também se aplica aos metadados de resultado; os metadados da solicitação 5 devem ser retornados antes dos metadados da solicitação 6.
No entanto, diferentes fluxos são independentes uns dos outros, portanto é aceitável e esperado que o buffer da solicitação 5 para o fluxo A possa ser retornado após o buffer da solicitação 6 para o fluxo B. E é aceitável que os metadados de resultado da solicitação 6 para o fluxo B sejam retornados antes do buffer da solicitação 5 para o fluxo A.
O HAL retém a propriedade da estrutura de resultados, que só precisa ser válida para acesso durante esta chamada. A estrutura copiará tudo o que for necessário antes que a chamada retorne.
Os buffers de saída ainda não precisam ser preenchidos; a estrutura aguardará a cerca de sincronização de liberação do buffer de fluxo antes de ler os dados do buffer. Portanto, este método deve ser chamado pelo HAL o mais rápido possível, mesmo que alguns ou todos os buffers de saída ainda estejam sendo preenchidos. O HAL deve incluir limites de sincronização de liberação válidos em cada entrada do buffer de fluxo output_buffers ou -1 se esse buffer de fluxo já estiver preenchido.
Se o buffer de resultados não puder ser construído para uma solicitação, o HAL deverá retornar um buffer de metadados vazio, mas ainda fornecer os buffers de saída e suas cercas de sincronização. Além disso, notify() deve ser chamado com uma mensagem ERROR_RESULT.
Se um buffer de saída não puder ser preenchido, seu campo de status deverá ser definido como STATUS_ERROR. Além disso, notify() deve ser chamado com uma mensagem ERROR_BUFFER.
Se toda a captura falhar, esse método ainda precisará ser chamado para retornar os buffers de saída à estrutura. Todos os status do buffer devem ser STATUS_ERROR e os metadados do resultado devem ser um buffer vazio. Além disso, notify() deve ser chamado com uma mensagem ERROR_REQUEST. Neste caso, mensagens ERROR_RESULT/ERROR_BUFFER individuais não devem ser enviadas.
Requisitos de desempenho:
Esta é uma chamada sem bloqueio. O framework retornará esta chamada em 5ms.
A latência do pipeline (consulte S7 para definição) deve ser menor ou igual a 4 intervalos de quadros e deve ser menor ou igual a 8 intervalos de quadros.
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/incluir/hardware/ camera3.h