camera2_device_ops结构参考

camera2_device_ops结构参考

#include < camera2.h >

数据字段

整数(* set_request_queue_src_ops )(const structcamera2_device *, constcamera2_request_queue_src_ops_t *request_src_ops)
整数(* notification_request_queue_not_empty )(const structcamera2_device *)
整数(* set_frame_queue_dst_ops )(const structcamera2_device *, constcamera2_frame_queue_dst_ops_t *frame_dst_ops)
整数(* get_in_progress_count )(const structcamera2_device *)
整数(* lush_captures_in_progress )(const structcamera2_device *)
整数(*构造默认请求)(常量结构camera2_device *,int request_template, camera_metadata_t **请求)
整数(* allocate_stream )(常量结构camera2_device *,uint32_t宽度,uint32_t高度,int格式,常量camera2_stream_ops_t *stream_ops,uint32_t *stream_id,uint32_t *format_actual,uint32_t *用法,uint32_t *max_buffers)
整数(* register_stream_buffers )(const structcamera2_device *,uint32_tstream_id,intnum_buffers,buffer_handle_t*buffers)
整数(* release_stream )(const structcamera2_device *,uint32_tstream_id)
整数(* allocate_reprocess_stream )(常量结构camera2_device *,uint32_t宽度,uint32_t高度,uint32_t格式,常量camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id,uint32_t *consumer_usage,uint32_t *max_buffers)
整数(* allocate_reprocess_stream_from_stream )(const structcamera2_device *,uint32_toutput_stream_id, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t*stream_id)
整数(* release_reprocess_stream )(const structcamera2_device *,uint32_tstream_id)
整数(*触发器动作)(常量结构camera2_device *,uint32_t触发器_id,int32_t ext1,int32_t ext2)
整数(* set_notify_callback )(常量结构camera2_device *, camera2_notify_callback notification_cb,void *用户)
整数(* get_metadata_vendor_tag_ops )(const structcamera2_device *,vendor_tag_query_ops_t **ops)
整数(*转储)(常量结构camera2_device *,int fd)
整数(* get_instance_metadata )(常量结构camera2_device *,camera_metadata **instance_metadata)

详细说明

文件camera2.h527行的定义。

现场文档

int(* allocate_reprocess_stream)(const structcamera2_device *, uint32_t 宽度, uint32_t 高度, uint32_t 格式, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

分配一个新的输入流以供使用,由输出缓冲区宽度、高度和像素格式定义。如果成功,则返回新流的 ID、gralloc 使用标志以及所需的同时可获取缓冲区计数。错误条件:

  • 请求传感器静态特性未列出的宽度/高度/格式组合
  • 要求一次配置太多的后处理流。

输入参数:

  • width、height、format:通过该流发送的缓冲区的规范。格式必须是 HAL_PIXEL_FORMAT_* 列表中的值。
  • reprocess_stream_ops:用于获取和释放该流的缓冲区的函数指针结构。底层流将根据使用情况和 max_buffers 输出进​​行配置。

输出参数:

  • Stream_id:标识该流的无符号整数。该值用于传入请求以识别流以及释放流。这些 id 与输入流 id 分开编号。
  • Consumer_usage:HAL 设备使用请求的数据类型所需的 gralloc 使用掩码。这用于为流缓冲区队列分配新的 gralloc 缓冲区。
  • max_buffers:HAL设备可能需要同时获取的最大缓冲区数。设备同时获取的缓冲区数不得超过该值。

文件camera2.h708行的定义。

int(* allocate_reprocess_stream_from_stream)(const structcamera2_device *, uint32_t output_stream_id, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream:

分配一个新的输入流以供使用,它将使用为现有输出流分配的缓冲区。也就是说,在 HAL 将缓冲区排队到输出流上之后,它可能会看到从该输入重新处理流传递给它的相同缓冲区。 HAL 将缓冲区释放回重新处理流后,将返回到输出队列以供重用。

错误条件:

  • 使用大小/格式不合适的输出流作为重新处理流的基础。
  • 尝试一次分配太多的重新处理流。

输入参数:

  • output_stream_id:现有输出流的 ID,其大小和格式适合重新处理。
  • reprocess_stream_ops:用于获取和释放该流的缓冲区的函数指针结构。底层流将使用与输出流相同的图形缓冲区句柄。

输出参数:

  • Stream_id:标识该流的无符号整数。该值用于传入请求以识别流以及释放流。这些 id 与输入流 id 分开编号。

HAL 客户端必须始终在释放其所基于的输出流之前释放重新处理流。

文件camera2.h754行的定义。

int(* allocate_stream)(const structcamera2_device *,uint32_t宽度,uint32_t高度,int格式, constcamera2_stream_ops_t *stream_ops,uint32_t *stream_id,uint32_t *format_actual,uint32_t *用法,uint32_t *max_buffers)

分配流:

分配一个新的输出流供使用,由输出缓冲区宽度、高度、目标以及可能的像素格式定义。如果成功,则返回新流的 ID、gralloc 使用标志、最小队列缓冲区计数以及可能的像素格式。错误条件:

  • 请求传感器静态特性未列出的宽度/高度/格式组合
  • 要求给定格式类型的流过多(例如,2 个拜耳原始流)。

输入参数:

  • width、height、format:通过该流发送的缓冲区的规范。格式是 HAL_PIXEL_FORMAT_* 列表中的值。如果使用 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,则平台 gralloc 模块将根据相机 HAL 和流的使用者提供的使用标志来选择格式。如有必要,相机 HAL 应检查在 register_stream_buffers 调用中传递给它的缓冲区,以获取特定于实现的格式。
  • Stream_ops:用于获取该流的缓冲区并将其排队的函数指针结构。底层流将根据使用情况和 max_buffers 输出进​​行配置。该结构中的方法只有在 allocate_stream 返回后才能被调用。

输出参数:

  • Stream_id:标识该流的无符号整数。该值用于传入请求以识别流以及释放流。
  • 用法:HAL 设备生成请求的数据类型所需的 gralloc 用法掩码。这用于为流缓冲区队列分配新的 gralloc 缓冲区。
  • max_buffers:HAL 设备可能需要同时出队的最大缓冲区数。设备同时出队的缓冲区数不得超过此值。

文件camera2.h632行的定义。

int(*construct_default_request)(const structcamera2_device *,intrequest_template, camera_metadata_t **request)

为标准相机用例创建已填写的默认请求。

设备必须返回配置为满足所请求用例的完整请求,该请求必须是 CAMERA2_TEMPLATE_* 枚举之一。必须包含所有请求控制字段(android.request.outputStreams 除外)。

返回的元数据缓冲区必须使用 allocate_camera_metadata 进行分配。框架取得缓冲区的所有权。

文件camera2.h580行的定义。

int(* dump)(const structcamera2_device *, int fd)

相机硬件的转储状态

定义在文件camera2.h的第801行。

int(*flush_captures_in_progress)(const structcamera2_device *)

刷新所有正在进行的捕获。这包括尚未将任何输出放入流或帧队列中的所有出队请求(常规或重新处理)。部分完成的捕获必须正常完成。在刷新完成之前,不会有新的请求从请求队列中出队。

文件camera2.h567行的定义。

int(* get_in_progress_count)(const structcamera2_device *)

设备当前正在处理的相机请求数(捕获/重新处理其请求已出队,但尚未入队到输出管道)。在进行中计数为 0 之前,框架不会释放任何流。

文件camera2.h558行的定义。

int(* get_instance_metadata)(const structcamera2_device *,camera_metadata **instance_metadata)

获取设备实例特定的元数据。对于相机设备的单个实例,此元数据必须是恒定的,但在 open() 调用之间可能有所不同。返回的camera_metadata指针必须在调用设备close()方法之前有效。

版本信息:

CAMERA_DEVICE_API_VERSION_2_0:

无法使用。框架可能无法访问此函数指针。

CAMERA_DEVICE_API_VERSION_2_1:

有效的。可以被框架调用。

文件camera2.h820行的定义。

int(* get_metadata_vendor_tag_ops)(const structcamera2_device *,vendor_tag_query_ops_t **ops)

获取查询供应商扩展元数据标签信息的方法。如果没有定义供应商扩展标签,可以将 ops 设置为 NULL。

文件camera2.h795行的定义。

int(* notification_request_queue_not_empty)(const structcamera2_device *)

通知设备请求队列不再为空。仅当第一个缓冲区添加到新队列时,或者在源响应出队调用而返回 NULL 之后,才必须调用。

文件camera2.h544行的定义。

int(* register_stream_buffers)(const structcamera2_device *,uint32_tstream_id,intnum_buffers,buffer_handle_t*buffers)

为给定流注册缓冲区。这是在成功调用 allocate_stream 之后、引用流的第一个请求入队之前调用的。此方法旨在允许 HAL 设备映射或以其他方式准备缓冲区以供以后使用。 num_buffers 保证至少为 max_buffers (来自 allocate_stream),但也可以更大。缓冲区已被锁定以供使用。调用结束时,所有缓冲区必须准备好返回队列。如果流格式设置为 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,则相机 HAL 应检查此处传入的缓冲区以确定任何平台私有的像素格式信息。

文件camera2.h657行的定义。

int(*release_reprocess_stream)(const structcamera2_device *,uint32_tstream_id)

释放重新处理流。如果在 get_in_progress_count 非零时调用,或者流 ID 无效,则返回错误。

文件camera2.h765行的定义。

int(*release_stream)(const structcamera2_device *,uint32_tstream_id)

释放一个流。如果在 get_in_progress_count 非零时调用,或者流 ID 无效,则返回错误。

文件camera2.h667行的定义。

int(* set_frame_queue_dst_ops)(const structcamera2_device *, constcamera2_frame_queue_dst_ops_t *frame_dst_ops)

传入输出帧队列接口方法

文件camera2.h549行的定义。

int(* set_notify_callback)(const structcamera2_device *, camera2_notify_callbacknotify_cb ,void *user)

通知回调设置

定义在文件camera2.h的第787行。

int(* set_request_queue_src_ops)(const structcamera2_device *, constcamera2_request_queue_src_ops_t *request_src_ops)

传入输入请求队列接口方法。

文件camera2.h536行的定义。

int(*trigger_action)(const structcamera2_device *,uint32_ttrigger_id,int32_text1,int32_text2)

触发异步活动。这用于在使用相机3A例程时触发它们的特殊行为。有关触发器 ID 及其参数的详细信息,请参阅上面的 CAMERA2_TRIGGER_* 文档。

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


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