camera2_request_queue_src_ops结构参考

camera2_request_queue_src_ops结构参考

#include < camera2.h >

数据字段

整数(* request_count )(const structcamera2_request_queue_src_ops *q)
整数(* dequeue_request )(常量结构camera2_request_queue_src_ops *q, camera_metadata_t **缓冲区)
整数(* free_request )(常量结构camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

详细说明

请求输入队列协议:

该框架保存队列及其内容。开始时,队列是空的。

  1. 当第一个元数据缓冲区放入队列时,框架通过调用notify_request_queue_not_empty()向设备发出信号。
  2. 收到notify_request_queue_not_empty后,设备必须在准备好处理下一个缓冲区时调用dequeue()。
  3. 一旦设备处理完一个缓冲区并准备好处理下一个缓冲区,它必须再次调用 dequeue() 而不是等待通知。如果没有更多可用缓冲区,dequeue() 将返回 NULL。此后,当缓冲区变得可用时,框架必须再次调用notify_request_queue_not_empty()。如果设备从 dequeue 接收到 NULL 返回,则无需再次查询队列,直到从源接收到 notification_request_queue_not_empty() 调用。
  4. 如果设备调用 buffer_count() 并接收到 0,这并不意味着框架将提供 notification_request_queue_not_empty() 调用。框架仅在设备从出队接收到 NULL 后或在初始启动时才会提供此类通知。
  5. 响应于notify_request_queue_not_empty()的dequeue()调用可以与notify_request_queue_not_empty()调用在同一线程上,并且可以从notify调用内执行。
  6. 所有出队的请求缓冲区必须通过调用 free_request 返回到框架,包括发生错误、请求设备刷新或设备关闭时。

文件camera2.h220行的定义。

现场文档

int(* dequeue_request)(常量结构camera2_request_queue_src_ops * q, camera_metadata_t **缓冲区)

从框架获取元数据缓冲区。如果没有错误则返回 OK。如果队列为空,则在缓冲区中返回 NULL。在这种情况下,设备必须等待notify_request_queue_not_empty()消息,然后才能再次尝试出队。以这种方式获得的缓冲区必须使用free_request()返回到框架。

定义位于文件camera2.h的第237行。

int(* free_request)(常量结构camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

使用元数据缓冲区后,或者发生错误或关闭时,将其返回到框架。

文件camera2.h243行的定义。

int(* request_count)(const structcamera2_request_queue_src_ops *q)

获取队列中待处理的请求缓冲区的计数。如果当前配置了重复请求(流请求),可能会返回 CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS。调用此方法对于框架是否调用notify_request_queue_not_empty()方法没有影响。

文件camera2.h228行的定义。


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