camera3_stream结构参考
#include < camera3.h >
数据字段 | |
整数 | 流类型 |
uint32_t | 宽度 |
uint32_t | 高度 |
整数 | 格式 |
uint32_t | 用法 |
uint32_t | 最大缓冲区数 |
空白 * | 私人 |
android_dataspace_t | 数据空间 |
整数 | 回转 |
空白 * | 保留[7] |
详细说明
相机3_stream_t:
单个相机输入或输出流的句柄。流由框架通过其缓冲区分辨率和格式定义,此外还由具有 gralloc 使用标志和最大运行中缓冲区计数的 HAL 定义。
流结构由框架拥有,但通过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 数据空间 |
描述缓冲区内容的字段。格式和缓冲区维度定义了流缓冲区的内存布局和结构,而数据空间定义了缓冲区内数据的含义。
对于大多数格式,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 必须使用此数据空间将流配置为正确的色彩空间,或者在支持的颜色和深度输出之间进行选择。数据空间值是graphics.h中的旧定义
>= CAMERA_DEVICE_API_VERSION_3_4:
始终由相机服务设置。 HAL 必须使用此数据空间将流配置为正确的色彩空间,或者在支持的颜色和深度输出之间进行选择。数据空间值是使用graphics.h中的V0数据空间定义设置的
整数格式 |
该流中缓冲区的像素格式。 Format 是来自 system/core/include/system/graphics.h 中的 HAL_PIXEL_FORMAT_* 列表或来自设备特定标头的值。
如果使用 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,则平台 gralloc 模块将根据相机设备和流的另一个端点提供的使用标志来选择格式。
<= CAMERA_DEVICE_API_VERSION_3_1:
如有必要,相机 HAL 设备必须检查在后续的 register_stream_buffers() 调用中传递给它的缓冲区,以获取特定于实现的格式详细信息。
>= CAMERA_DEVICE_API_VERSION_3_2:
框架不会调用 register_stream_buffers(),因此 HAL 应纯粹根据已配置流的大小、使用标志和格式来配置 ISP 和传感器管道。
整数旋转 |
流所需的输出旋转,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 用法 |
根据 HAL 的需要,该流的 gralloc 使用标志。使用标志在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必须使用其使用标志覆盖该字段。
该结构的文档是从以下文件生成的:
- 硬件/libhardware/include/hardware/camera3.h