camera3_callback_ops 结构参考

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 行的定义。


此结构体的文档是从以下文件生成的: