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) |
详细说明
请求输入队列协议:
该框架保存队列及其内容。开始时,队列是空的。
- 当第一个元数据缓冲区放入队列时,框架通过调用notify_request_queue_not_empty()向设备发出信号。
- 收到notify_request_queue_not_empty后,设备必须在准备好处理下一个缓冲区时调用dequeue()。
- 一旦设备处理完一个缓冲区并准备好处理下一个缓冲区,它必须再次调用 dequeue() 而不是等待通知。如果没有更多可用缓冲区,dequeue() 将返回 NULL。此后,当缓冲区变得可用时,框架必须再次调用notify_request_queue_not_empty()。如果设备从 dequeue 接收到 NULL 返回,则无需再次查询队列,直到从源接收到 notification_request_queue_not_empty() 调用。
- 如果设备调用 buffer_count() 并接收到 0,这并不意味着框架将提供 notification_request_queue_not_empty() 调用。框架仅在设备从出队接收到 NULL 后或在初始启动时才会提供此类通知。
- 响应于notify_request_queue_not_empty()的dequeue()调用可以与notify_request_queue_not_empty()调用在同一线程上,并且可以从notify调用内执行。
- 所有出队的请求缓冲区必须通过调用 free_request 返回到框架,包括发生错误、请求设备刷新或设备关闭时。
现场文档
int(* dequeue_request)(常量结构camera2_request_queue_src_ops * q, camera_metadata_t **缓冲区) |
从框架获取元数据缓冲区。如果没有错误则返回 OK。如果队列为空,则在缓冲区中返回 NULL。在这种情况下,设备必须等待notify_request_queue_not_empty()消息,然后才能再次尝试出队。以这种方式获得的缓冲区必须使用free_request()返回到框架。
int(* free_request)(常量结构camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const structcamera2_request_queue_src_ops *q) |
该结构的文档是从以下文件生成的: