camera2_request_queue_src_ops 结构体参考文档
camera2_request_queue_src_ops 结构体参考文档
#include <
camera2.h
>
数据字段 |
|
int(* | request_count )(const struct camera2_request_queue_src_ops *q) |
int(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
int(* | free_request )(const struct 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 返回值,则无需再次查询队列,直到从来源收到 notify_request_queue_not_empty() 调用为止。
- 如果设备调用 buffer_count() 并收到 0,这并不意味着框架会提供 notify_request_queue_not_empty() 调用。只有在设备从队列中收到 NULL 或在初始启动后,该框架才会提供此类通知。
- 响应 notify_request_queue_not_empty() 的 dequeue() 调用可能与 notify_request_queue_not_empty() 调用位于同一线程,并且可以从 notify 调用中执行。
- 必须通过调用 free_request 将所有已从队列中移除的请求缓冲区返回给框架,包括在发生错误、请求设备刷新或设备关闭时。
字段文档
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
从框架获取元数据缓冲区。如果没有错误,则返回“OK”。如果队列为空,则在缓冲区中返回 NULL。在这种情况下,设备必须等待 notify_request_queue_not_empty() 消息,然后才能再次尝试从队列中移除请求。以这种方式获取的缓冲区必须使用 free_request() 返回给框架。
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
此结构体的文档是根据以下文件生成的:
- hardware/libhardware/include/hardware/ camera2.h