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) |
详细说明
现场文档
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设备可能需要同时获取的最大缓冲区数。设备同时获取的缓冲区数不得超过该值。
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 客户端必须始终在释放其所基于的输出流之前释放重新处理流。
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 设备可能需要同时出队的最大缓冲区数。设备同时出队的缓冲区数不得超过此值。
int(*construct_default_request)(const structcamera2_device *,intrequest_template, camera_metadata_t **request) |
int(* dump)(const structcamera2_device *, int fd) |
int(*flush_captures_in_progress)(const structcamera2_device *) |
int(* get_in_progress_count)(const structcamera2_device *) |
int(* get_instance_metadata)(const structcamera2_device *,camera_metadata **instance_metadata) |
int(* get_metadata_vendor_tag_ops)(const structcamera2_device *,vendor_tag_query_ops_t **ops) |
int(* notification_request_queue_not_empty)(const structcamera2_device *) |
int(* register_stream_buffers)(const structcamera2_device *,uint32_tstream_id,intnum_buffers,buffer_handle_t*buffers) |
int(*release_reprocess_stream)(const structcamera2_device *,uint32_tstream_id) |
int(*release_stream)(const structcamera2_device *,uint32_tstream_id) |
int(* set_frame_queue_dst_ops)(const structcamera2_device *, constcamera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const structcamera2_device *, camera2_notify_callbacknotify_cb ,void *user) |
int(* set_request_queue_src_ops)(const structcamera2_device *, constcamera2_request_queue_src_ops_t *request_src_ops) |
int(*trigger_action)(const structcamera2_device *,uint32_ttrigger_id,int32_text1,int32_text2) |
该结构的文档是从以下文件生成的: