A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Referência da estrutura camera3_callback_ops
#include <
camera3.h
>
Definição na linha
2397
do arquivo
camera3.h
.
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
.
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:
-
hardware/libhardware/include/hardware/
camera3.h
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Android Hardware Abstraction Layer: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]