Referência da estrutura camera3_callback_ops

Referência da estrutura camera3_callback_ops

#include < camera3.h >

Campos de dados

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

Descrição detalhada

Definição na linha 2397 do arquivo camera3.h .

Documentação do campo

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

notificar:

Callback de notificação assíncrona da HAL, disparado por vários motivos. Apenas para informações independentes da captura de frames ou que exigem um tempo específico. A propriedade da estrutura da mensagem permanece com a HAL, e a mensagem só precisa ser válida durante a chamada.

Várias linhas de execução podem chamar notify() simultaneamente.

<= CAMERA_DEVICE_API_VERSION_3_1:

A notificação do início da exposição para uma determinada solicitação precisa ser enviada pela HAL antes da primeira chamada para process_capture_result() dessa solicitação.

>= CAMERA_DEVICE_API_VERSION_3_2:

Os buffers entregues ao framework não serão enviados à camada de aplicativo até que um carimbo de data/hora de início da exposição (ou carimbo de data/hora de início da exposição da imagem de entrada para uma solicitação de reprocessamento) seja recebido por uma chamada SHUTTER notify() . É altamente recomendável despachar essa chamada o mais rápido possível.


Requisitos de performance:

Essa é uma chamada que não bloqueia. O framework vai retornar essa chamada em 5 ms.

Definição na linha 2499 do arquivo camera3.h .

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

process_capture_result:

Envie os resultados de uma captura concluída para o framework. 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 os buffers de baixa resolução sejam retornados em uma chamada, e os buffers JPEG pós-processados em uma chamada posterior, assim que estiverem disponíveis. Cada chamada precisa incluir o número do frame 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 stream e os metadados de resultado precisam ser retornados pela HAL para cada solicitação em uma das chamadas process_capture_result, mesmo em caso de erros que produzam parte da saída. Não é permitido fazer uma chamada para process_capture_result() sem buffers de saída ou metadados de resultado.

A ordem de retorno de metadados e buffers para um único resultado não importa, mas os buffers de um determinado fluxo precisam ser retornados na ordem FIFO. Portanto, o buffer da solicitação 5 do fluxo A sempre precisa ser retornado antes do buffer da solicitação 6 do fluxo A. Isso também se aplica aos metadados de resultado. Os metadados da solicitação 5 precisam 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 do fluxo A seja retornado depois do buffer da solicitação 6 do fluxo B. Também é aceitável que os metadados de resultado da solicitação 6 do fluxo B sejam retornados antes do buffer da solicitação 5 do fluxo A.

A HAL mantém a propriedade da estrutura de resultados, que só precisa ser válida para acesso durante essa chamada. O framework vai copiar o que for necessário antes que essa chamada retorne.

Os buffers de saída ainda não precisam ser preenchidos. O framework vai aguardar a sincronização da liberação do buffer de stream antes de ler os dados do buffer. Portanto, esse método precisa ser chamado pela HAL assim que possível, mesmo que alguns ou todos os buffers de saída ainda estejam sendo preenchidos. A HAL precisa incluir barreiras de sincronização de lançamento válidas em cada entrada de buffer de fluxo output_buffers ou -1 se esse buffer de fluxo já estiver preenchido.

Se o buffer de resultado não puder ser construído para uma solicitação, a HAL vai retornar um buffer de metadados vazio, mas ainda vai fornecer os buffers de saída e as barreiras de sincronização deles. Além disso, notify() precisa ser chamado com uma mensagem ERROR_RESULT.

Se um buffer de saída não puder ser preenchido, o campo de status dele precisará ser definido como STATUS_ERROR. Além disso, notify() precisa 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 ao framework. Todos os status de buffer precisam ser STATUS_ERROR, e os metadados de resultado precisam ser um buffer vazio. Além disso, notify() precisa ser chamado com uma mensagem ERROR_REQUEST. Nesse caso, não envie mensagens ERROR_RESULT/ERROR_BUFFER individuais.

Requisitos de performance:

Essa é uma chamada que não bloqueia. O framework vai retornar essa chamada em 5 ms.

A latência do pipeline (consulte S7 para definição) precisa ser menor ou igual a quatro intervalos de frames e menor ou igual a oito intervalos de frames.

Definição na linha 2466 do arquivo camera3.h .


A documentação dessa struct foi gerada com base no seguinte arquivo: