camera3_callback_ops 结构参考
#include <
camera3.h
>
数据字段 |
|
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) |
详细说明
文件 camera3.h 第 2397 行的定义。
字段文档
void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
notify:
来自 HAL 的异步通知回调,因各种原因触发。仅适用于与帧捕获无关或需要特定时间的信息。消息结构的所有权仍归 HAL 所有,并且消息只需在此调用期间有效。
多个线程可以同时调用 notify() 。
<= CAMERA_DEVICE_API_VERSION_3_1:
HAL 必须在首次针对给定请求调用 process_capture_result() 之前,发送有关该请求开始曝光的通知。
>= CAMERA_DEVICE_API_VERSION_3_2:
在通过 SHUTTER notify() 调用收到曝光开始时间戳(或重新处理请求的输入图像的曝光开始时间戳)之前,传递给框架的缓冲区不会调度到应用层。强烈建议您尽早调度此调用。
性能要求:
这是一个非阻塞调用。框架将在 5 毫秒内返回此调用。
第 2499 行的定义 文件 camera3.h 。
void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result) |
process_capture_result:
将已完成捕获的结果发送到框架。 process_capture_result() 可能会被 HAL 调用多次,以响应单个捕获请求。这样一来,例如,可以在一次调用中返回元数据和低分辨率缓冲区,并在稍后的调用中返回后处理的 JPEG 缓冲区(一旦可用)。每次调用都必须包含相应请求的帧号,该请求用于返回元数据或缓冲区。
完整结果的某个组成部分(缓冲区或元数据)可能仅包含在一个 process_capture_result 调用中。对于每个请求,HAL 必须通过一次 process_capture_result 调用返回每个数据流的缓冲区和结果元数据,即使在生成部分输出时发生错误也是如此。不允许在不使用输出缓冲区或结果元数据的情况下调用 process_capture_result() 。
返回单个结果的元数据和缓冲区的顺序无关紧要,但给定流的缓冲区必须按 FIFO 顺序返回。因此,数据流 A 的请求 5 的缓冲区必须始终在数据流 A 的请求 6 的缓冲区之前返回。这也适用于结果元数据;必须先返回请求 5 的元数据,然后才能返回请求 6 的元数据。
不过,不同的流是相互独立的,因此流 A 的请求 5 的缓冲区可能会在流 B 的请求 6 的缓冲区之后返回,这是可以接受的,也是预期之中的。流 B 的请求 6 的结果元数据可能会在流 A 的请求 5 的缓冲区之前返回,这也是可以接受的。
HAL 保留结果结构的所有权,该结构只需在本次调用期间有效即可。框架会在此调用返回之前复制所需的一切内容。
输出缓冲区尚无需填充;框架将等待流缓冲区释放同步栅栏,然后再读取缓冲区数据。因此,即使部分或全部输出缓冲区仍在填充中,HAL 也应尽快调用此方法。HAL 必须在每个 output_buffers 流缓冲区条目中包含有效的版本同步栅栏,如果该流缓冲区已填充,则包含 -1。
如果无法为请求构建结果缓冲区,HAL 应返回一个空的元数据缓冲区,但仍应提供输出缓冲区及其同步栅栏。此外,还必须使用 ERROR_RESULT 消息调用 notify() 。
如果无法填充输出缓冲区,则必须将其状态字段设置为 STATUS_ERROR。此外,必须使用 ERROR_BUFFER 消息调用 notify()。 notify() 必须使用 ERROR_BUFFER 消息调用。
如果整个拍摄过程失败,仍需调用此方法以将输出缓冲区返回到框架。所有缓冲区状态都应为 STATUS_ERROR,并且结果元数据应为空缓冲区。此外,必须使用 ERROR_REQUEST 消息调用 notify()。 在这种情况下,不应发送各个 ERROR_RESULT/ERROR_BUFFER 消息。
性能要求:
这是一个非阻塞调用。框架将在 5 毫秒内返回此调用。
流水线延迟时间(定义见 S7)应小于或等于 4 个帧间隔,且必须小于或等于 8 个帧间隔。
文件 camera3.h 第 2466 行的定义。
此结构体的文档是从以下文件生成的:
- hardware/libhardware/include/hardware/ camera3.h