Referência de estrutura camera3_callback_ops

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

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

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.

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

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.

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


A documentação desta estrutura foi gerada a partir do seguinte arquivo:
  • hardware/libhardware/incluir/hardware/ camera3.h