A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Referencia de la estructura camera3_callback_ops
#include <
camera3.h
>
Definición en la línea
2397
del archivo
camera3.h
.
notify:
Devolución de llamada de notificación asíncrona del HAL, que se activa por varios motivos. Solo para información independiente de la captura de fotogramas o que requiere una sincronización específica. La propiedad de la estructura del mensaje permanece en la HAL, y el mensaje solo debe ser válido durante la duración de esta llamada.
Varios subprocesos pueden llamar a
notify()
de forma simultánea.
<= CAMERA_DEVICE_API_VERSION_3_1:
El HAL debe enviar la notificación del inicio de la exposición para una solicitud determinada antes de que se realice la primera llamada a
process_capture_result()
para esa solicitud.
>= CAMERA_DEVICE_API_VERSION_3_2:
Los búferes entregados al framework no se enviarán a la capa de la aplicación hasta que se reciba una marca de tiempo de inicio de exposición (o la marca de tiempo de inicio de exposición de la imagen de entrada para una solicitud de reprocesamiento) a través de una llamada a
notify()
de SHUTTER. Se recomienda enviar esta llamada lo antes posible.
Requisitos de rendimiento:
Esta es una llamada sin bloqueo. El framework devolverá esta llamada en 5 ms.
Definición en la línea
2499
del archivo
camera3.h
.
process_capture_result:
Envía los resultados de una captura completada al framework.
process_capture_result()
puede invocarse varias veces por el HAL en respuesta a una sola solicitud de captura. Esto permite, por ejemplo, que los metadatos y los búferes de baja resolución se devuelvan en una llamada, y los búferes JPEG posprocesados en una llamada posterior, una vez que estén disponibles. Cada llamada debe incluir el número de fotograma de la solicitud para la que se devuelven metadatos o búferes.
Un componente (búfer o metadatos) del resultado completo solo se puede incluir en una llamada a process_capture_result. El HAL debe devolver un búfer para cada transmisión y los metadatos del resultado para cada solicitud en una de las llamadas a process_capture_result, incluso en caso de errores que produzcan parte del resultado. No se permite una llamada a
process_capture_result()
sin búferes de salida ni metadatos de resultado.
El orden en que se devuelven los metadatos y los búferes para un solo resultado no importa, pero los búferes para un flujo determinado se deben devolver en orden FIFO. Por lo tanto, el búfer de la solicitud 5 del flujo A siempre debe devolverse antes del búfer de la solicitud 6 del flujo A. Esto también se aplica a los metadatos de los resultados: los metadatos de la solicitud 5 se deben devolver antes que los de la solicitud 6.
Sin embargo, los diferentes flujos son independientes entre sí, por lo que es aceptable y esperado que el búfer de la solicitud 5 del flujo A se muestre después del búfer de la solicitud 6 del flujo B, y que los metadatos del resultado de la solicitud 6 del flujo B se muestren antes del búfer de la solicitud 5 del flujo A.
El HAL conserva la propiedad de la estructura de resultados, que solo debe ser válida para acceder durante esta llamada. El framework copiará lo que necesite antes de que se muestre esta llamada.
Aún no es necesario llenar los búferes de salida; el framework esperará la barrera de sincronización de liberación del búfer de transmisión antes de leer los datos del búfer. Por lo tanto, el HAL debe llamar a este método lo antes posible, incluso si algunos o todos los búferes de salida aún se están llenando. El HAL debe incluir barreras de sincronización de versión válidas en cada entrada de búfer de transmisión output_buffers o -1 si ese búfer de transmisión ya está lleno.
Si no se puede construir el búfer de resultados para una solicitud, el HAL debe devolver un búfer de metadatos vacío, pero seguir proporcionando los búferes de salida y sus barreras de sincronización. Además, se debe llamar a
notify()
con un mensaje ERROR_RESULT.
Si no se puede llenar un búfer de salida, su campo de estado debe establecerse en STATUS_ERROR. Además, se debe llamar a
notify()
con un mensaje ERROR_BUFFER.
Si falló toda la captura, se debe llamar a este método para devolver los búferes de salida al framework. Todos los estados del búfer deben ser STATUS_ERROR, y los metadatos del resultado deben ser un búfer vacío. Además, se debe llamar a
notify()
con un mensaje ERROR_REQUEST. En este caso, no se deben enviar mensajes ERROR_RESULT/ERROR_BUFFER individuales.
Requisitos de rendimiento:
Esta es una llamada sin bloqueo. El framework devolverá esta llamada en 5 ms.
La latencia de la canalización (consulta S7 para obtener la definición) debe ser menor o igual que 4 intervalos de fotogramas y debe ser menor o igual que 8 intervalos de fotogramas.
Definición en la línea
2466
del archivo
camera3.h
.
La documentación de esta estructura se generó a partir del siguiente archivo:
-
hardware/libhardware/include/hardware/
camera3.h
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)"]]