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)

详细说明

请求输入队列协议:

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

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

在文件camera2.h的220行定义。

现场文件

int(* dequeue_request)(const struct camera2_request_queue_src_ops * q, camera_metadata_t ** buffer)

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

在文件camera2.h的237行定义。

int(* free_request)(const struct camera2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

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

在文件camera2.h的243行定义。

int(* request_count)(const struct camera2_request_queue_src_ops * q)

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

在文件camera2.h的228行定义。


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