camera3_stream 结构体参考文档
#include <
camera3.h
>
数据字段 |
|
int | stream_type |
uint32_t | 宽度 |
uint32_t | height |
int | 格式 |
uint32_t | 用量 |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | 旋转 |
void * | reserved [7] |
详细说明
camera3_stream_t:
单个摄像头输入或输出数据流的句柄。流由框架根据其缓冲区分辨率和格式定义,此外还由 HAL 使用 gralloc 使用标志和最大传输中缓冲区数量定义。
数据流结构归框架所有,但通过 configure_streams() 传入 HAL 的 camera3_stream 指针在第一个后续 configure_streams() 调用( 不包含该 camera3_stream 作为参数)结束或 close() 调用结束之前有效。
将 camera3_stream 传递到 configure_streams() 后,所有 camera3_stream 框架控制的成员都将不可变。HAL 只能在调用 configure_streams() 期间更改 HAL 控制的参数,私有指针的内容除外。
如果 configure_streams() 调用返回非严重错误,则所有有效数据流都保持有效状态,就像未调用 configure_streams() 一样。
相机 HAL 设备无法看到数据流的端点。在 DEVICE_API_VERSION_3_1 中,此行为已更改为在相机作为生产方(输出和双向流类型)的流上共享使用方使用情况标志(请参阅下方的使用情况字段)。
字段文档
android_dataspace_t data_space |
用于描述缓冲区内容的字段。格式和缓冲区维度定义了流缓冲区的内存布局和结构,而 dataSpace 定义了缓冲区中数据的含义。
对于大多数格式,dataSpace 定义了图片数据的颜色空间。此外,对于某些格式,dataSpace 表示是请求基于图片的数据还是基于深度的数据。如需详细了解格式以及每种格式的有效 dataSpace 值,请参阅 system/core/include/system/graphics.h。
版本信息:
< CAMERA_DEVICE_API_VERSION_3_3:
未定义,不应访问。应假定 dataSpace 为 HAL_DATASPACE_UNKNOWN,并根据使用标志和格式确定适当的颜色空间等。
= CAMERA_DEVICE_API_VERSION_3_3:
始终由相机服务设置。HAL 必须使用此 dataSpace 将数据流配置为正确的色彩空间,或者在颜色输出和深度输出(如果受支持)之间进行选择。数据空间值是 graphics.h 中的旧版定义
>= CAMERA_DEVICE_API_VERSION_3_4:
始终由相机服务设置。HAL 必须使用此 dataSpace 将数据流配置为正确的色彩空间,或者在颜色输出和深度输出(如果受支持)之间进行选择。数据空间值是使用 graphics.h 中的 V0 数据空间定义设置的
int 格式 |
此数据流中缓冲区的像素格式。格式是 system/core/include/system/graphics.h 中的 HAL_PIXEL_FORMAT_* 列表或设备专用头文件中的值。
如果使用 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,平台 gralloc 模块将根据摄像头设备和数据流的另一个端点提供的使用标志选择格式。
<= CAMERA_DEVICE_API_VERSION_3_1:
相机 HAL 设备必须在后续的 register_stream_buffers() 调用中检查传递给它的缓冲区,以获取特定于实现的格式详细信息(如果需要)。
>= CAMERA_DEVICE_API_VERSION_3_2:
框架不会调用 register_stream_buffers(),因此 HAL 应仅根据配置的流的大小、使用标志和格式来配置 ISP 和传感器流水线。
uint32_t max_buffers |
int rotation |
流的所需输出旋转角度,即 camera3_stream_rotation_t 值之一。HAL 必须检查此值以及数据流宽度和高度。例如,如果旋转角度为 90 度,并且流宽度和高度分别为 720 和 1280,则相机服务将提供大小为 720x1280 的缓冲区,HAL 应捕获 1280x720 的图片,并将图片逆时针旋转 90 度。当直播类型为“输入”时,轮播字段将不执行任何操作。相机 HAL 必须忽略输入流的旋转字段。
<= CAMERA_DEVICE_API_VERSION_3_2:
未定义,不得访问。HAL 不得对输出图片应用任何旋转。
>= CAMERA_DEVICE_API_VERSION_3_3:
始终由相机服务设置。HAL 必须在流配置期间检查此字段,如果 HAL 无法执行此类旋转,则返回 -EINVAL。HAL 必须始终支持 CAMERA3_STREAM_ROTATION_0,因此,如果所有数据流的旋转字段均为 CAMERA3_STREAM_ROTATION_0,则 configure_streams() 调用不得因不受支持的旋转而失败。
uint32_t 用法 |
此流的 gralloc 使用情况标志(根据 HAL 的需要)。使用情况标志在 gralloc.h (GRALLOC_USAGE_*) 或设备专用头文件中定义。
对于输出流,这些是 HAL 的生产方使用情况标志。对于输入串流,这些是 HAL 的使用方使用情况标志。生产方和使用方使用情况标志将合并在一起,然后传递给平台 gralloc HAL 模块,以便为每个串流分配 gralloc 缓冲区。
版本信息:
== CAMERA_DEVICE_API_VERSION_3_0:
通过 configure_streams() 传递时,无法保证初始值。HAL 不得将此字段用作输入,并且必须使用其使用标志覆盖此字段。
>= CAMERA_DEVICE_API_VERSION_3_1:
对于 stream_type OUTPUT 和 BIDIRECTIONAL,通过 configure_streams() 传递时,此参数的初始值为使用方的使用标志。HAL 可能会使用这些使用方标志来确定数据流配置。对于 stream_type INPUT,通过 configure_streams() 传递时,此值的初始值为 0。对于通过 configure_streams() 传递的所有数据流,HAL 都必须使用其使用标志覆盖此字段。
此结构体的文档是根据以下文件生成的:
- hardware/libhardware/include/hardware/ camera3.h